/* Eventos Locais — estilos públicos */

:root {
	--evl-accent: #17a673;
	--evl-accent-dark: #128a5f;
	--evl-text: #1f2937;
	--evl-muted: #6b7280;
	--evl-border: #e5e7eb;
	--evl-bg-card: #ffffff;
	--evl-radius: 10px;
	/* Proporção ISO A3 retrato (297 x 420 mm) = 1 : 1.4142 */
	--evl-a3-ratio: 297 / 420;
}

.evl-eventos-wrap * ,
.evl-form-wrap * {
	box-sizing: border-box;
}

/* Toolbar */
.evl-toolbar {
	display: flex;
	justify-content: center;
	gap: 12px;
	flex-wrap: wrap;
	margin-bottom: 28px;
}

.evl-btn {
	display: inline-block;
	border: none;
	cursor: pointer;
	font-weight: 600;
	text-decoration: none;
	text-align: center;
	font-size: 15px;
	line-height: 1;
	transition: background-color .15s ease, color .15s ease, border-color .15s ease;
}

.evl-btn-pill {
	background: var(--evl-accent);
	color: #fff;
	padding: 11px 20px;
	border-radius: 8px;
	font-size: 14px;
	font-weight: 600;
	line-height: 1.2;
}
.evl-btn-pill:hover {
	background: var(--evl-accent-dark);
	color: #fff;
}

.evl-btn-primario {
	background: var(--evl-accent);
	color: #fff;
	padding: 13px 26px;
	border-radius: 8px;
	font-size: 16px;
}
.evl-btn-primario:hover {
	background: var(--evl-accent-dark);
}

.evl-btn-secundario {
	background: transparent;
	color: var(--evl-accent);
	border: 1px solid var(--evl-accent);
	padding: 10px 20px;
	border-radius: 8px;
}

/* Grelha responsiva
   Dois modos:
   - automático: o número de colunas depende da largura mínima do cartaz
   - fixo (.evl-grid-colunas): número de colunas definido no admin, com
     redução automática em tablet e telemóvel */
.evl-grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(min(var(--evl-card-largura, 230px), 100%), 1fr));
	gap: 28px;
}

/* No modo de colunas fixas, o grid-template-columns de cada breakpoint é
   gerado em PHP (evl_css_colunas_grelha), porque repeat() só aceita um
   número inteiro literal — não permite calc() nem min(). */
@media (max-width: 768px) {
	.evl-grid-colunas {
		gap: 18px;
	}
}

.evl-eventos-wrap.evl-vista-lista .evl-grid {
	grid-template-columns: 1fr;
	max-width: 640px;
	margin: 0 auto;
}

.evl-eventos-wrap.evl-vista-lista .evl-card {
	display: grid;
	grid-template-columns: 140px 1fr;
	gap: 16px;
	align-items: center;
}
.evl-eventos-wrap.evl-vista-lista .evl-card-img-wrap {
	aspect-ratio: var(--evl-a3-ratio);
}
.evl-eventos-wrap.evl-vista-lista .evl-card-data {
	text-align: left;
	padding: 0 16px 0 0;
}
.evl-eventos-wrap.evl-vista-lista .evl-card-info {
	justify-content: flex-start;
	padding: 4px 16px 0 0;
}

.evl-card {
	position: relative;
	background: var(--evl-bg-card);
	border-radius: var(--evl-radius);
	/* Visível para as etiquetas poderem sobressair da margem esquerda.
	   O recorte da imagem é feito no próprio contentor da imagem. */
	overflow: visible;
	box-shadow: 0 1px 3px rgba(0,0,0,.08);
	display: flex;
	flex-direction: column;
}

/* Ajusta a imagem enviada ao formato A3, recortada e centrada, responsivo em qualquer largura de coluna */
.evl-card-img-wrap {
	position: relative;
	display: block;
	width: 100%;
	aspect-ratio: var(--evl-a3-ratio);
	overflow: hidden;
	background: #111827;
	/* Cantos superiores arredondados aqui, já que o cartão deixou de recortar. */
	border-radius: var(--evl-radius) var(--evl-radius) 0 0;
}
.evl-card-img-wrap img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: top center;
	display: block;
}
.evl-card-img-placeholder {
	width: 100%;
	height: 100%;
	display: flex;
	align-items: center;
	justify-content: center;
	color: #fff;
	background: linear-gradient(135deg, #374151, #111827);
	padding: 16px;
	text-align: center;
	font-weight: 600;
}

/* Botão de partilha — as propriedades estão explícitas para resistir
   aos estilos de <button> do tema, que costumam esticar o círculo. */
.evl-card .evl-share {
	position: absolute;
	top: 8px;
	right: 8px;
	z-index: 2;
	box-sizing: border-box;
	width: 30px;
	height: 30px;
	min-width: 30px;
	min-height: 30px;
	max-width: 30px;
	max-height: 30px;
	padding: 0;
	margin: 0;
	border: none;
	border-radius: 6px;
	background: rgba(255,255,255,.9);
	backdrop-filter: blur(2px);
	color: #333;
	display: flex;
	align-items: center;
	justify-content: center;
	line-height: 1;
	font-size: 0;
	text-decoration: none;
	box-shadow: 0 1px 4px rgba(0,0,0,.2);
	cursor: pointer;
	appearance: none;
	-webkit-appearance: none;
	transition: background-color .15s ease, color .15s ease, transform .15s ease;
}
.evl-card .evl-share:hover {
	background: #fff;
	color: var(--evl-accent);
	transform: scale(1.08);
}
.evl-card .evl-share svg {
	display: block;
	width: 15px;
	height: 15px;
	flex: 0 0 auto;
}
.evl-card .evl-share:focus-visible {
	outline: 2px solid var(--evl-accent);
	outline-offset: 2px;
}

.evl-card-data {
	color: var(--evl-text);
	font-weight: 700;
	font-size: 20px;
	padding: 12px 14px 0;
	text-align: center;
}

.evl-card-info {
	font-size: 13px;
	color: var(--evl-muted);
	text-align: center;
	padding: 5px 14px 14px;
	display: flex;
	align-items: center;
	justify-content: center;
	flex-wrap: wrap;
	gap: 2px;
}

.evl-card-data + .evl-card-info {
	padding-top: 4px;
}

.evl-local {
	display: inline-flex;
	align-items: center;
	gap: 4px;
}

.evl-icone-local {
	flex-shrink: 0;
	opacity: .85;
}

.evl-sep {
	opacity: .6;
}

.evl-sem-eventos {
	text-align: center;
	color: var(--evl-muted);
	padding: 40px 0;
}

/* ---------------------------------------------------------------
   Subscrição da agenda
   --------------------------------------------------------------- */

.evl-subscrever {
	background: #f6f7f8;
	border-radius: 14px;
	padding: 26px 28px;
	margin: 26px 0;
}
.evl-sub-simples {
	background: transparent;
	padding: 0;
}

.evl-subscrever .evl-sub-titulo {
	margin: 0 0 6px;
	font-size: 20px;
	color: var(--evl-text);
}
.evl-sub-texto {
	margin: 0 0 16px;
	color: var(--evl-muted);
	font-size: 14.5px;
}

.evl-sub-campos {
	display: flex;
	gap: 10px;
	flex-wrap: wrap;
}
.evl-sub-campos input[type="email"],
.evl-sub-campos input[type="text"] {
	flex: 1 1 220px;
	min-width: 0;
	box-sizing: border-box;
	padding: 12px 14px;
	border: 1px solid var(--evl-border);
	border-radius: 8px;
	font-size: 15px;
	font-family: inherit;
	background: #fff;
	height: 46px;
}
.evl-sub-campos input:focus {
	outline: none;
	border-color: var(--evl-accent);
	box-shadow: 0 0 0 3px rgba(23,166,115,.15);
}

.evl-subscrever .evl-sub-botao {
	height: 46px;
	padding: 0 28px;
	border: none;
	border-radius: 8px;
	background: var(--evl-accent);
	color: #fff;
	font-size: 15px;
	font-weight: 600;
	cursor: pointer;
	appearance: none;
	-webkit-appearance: none;
	flex: 0 0 auto;
}
.evl-subscrever .evl-sub-botao:hover {
	filter: brightness(.92);
}

.evl-sub-rgpd {
	display: flex;
	align-items: flex-start;
	gap: 8px;
	margin-top: 12px;
	font-size: 13px;
	color: var(--evl-muted);
	cursor: pointer;
}
.evl-sub-rgpd input {
	margin-top: 3px;
	flex-shrink: 0;
}

.evl-sub-aviso {
	padding: 12px 16px;
	border-radius: 8px;
	margin-bottom: 14px;
	font-size: 14.5px;
}
.evl-sub-ok {
	background: #e6f6ee;
	border: 1px solid #a7e3c6;
	color: #065f46;
}
.evl-sub-erro {
	background: #fef2f2;
	border: 1px solid #fecaca;
	color: #991b1b;
}

@media (max-width: 560px) {
	.evl-sub-campos input,
	.evl-subscrever .evl-sub-botao {
		flex: 1 1 100%;
	}
}

/* ---------------------------------------------------------------
   Contagem decrescente
   --------------------------------------------------------------- */

.evl-countdown {
	--evl-cd-fundo: #0F6E56;
	--evl-cd-texto: #fff;
	--evl-cd-destaque: #E4572E;
	background: var(--evl-cd-fundo);
	color: var(--evl-cd-texto);
	border-radius: 16px;
	overflow: hidden;
	display: flex;
	gap: 26px;
	align-items: center;
	padding: 28px 30px;
	margin: 26px 0;
}

.evl-cd-cartaz img {
	width: 130px;
	aspect-ratio: var(--evl-a3-ratio);
	object-fit: cover;
	border-radius: 10px;
	display: block;
}

.evl-cd-corpo {
	flex: 1;
	min-width: 0;
}

.evl-countdown .evl-cd-titulo {
	margin: 0 0 8px;
	font-size: 24px;
	line-height: 1.25;
	color: var(--evl-cd-texto);
}

.evl-cd-meta {
	margin: 0 0 18px;
	font-size: 14px;
	opacity: .85;
	display: flex;
	flex-wrap: wrap;
	gap: 14px;
}

.evl-cd-relogio {
	display: flex;
	gap: 12px;
	flex-wrap: wrap;
	margin-bottom: 18px;
}
.evl-cd-relogio[hidden] {
	display: none;
}

.evl-cd-unidade {
	background: rgba(255,255,255,.14);
	border-radius: 10px;
	padding: 12px 8px;
	min-width: 74px;
	text-align: center;
	line-height: 1.1;
}
.evl-cd-valor {
	display: block;
	font-size: 30px;
	font-weight: 700;
	font-variant-numeric: tabular-nums;
}
.evl-cd-rotulo {
	display: block;
	font-size: 11.5px;
	text-transform: uppercase;
	letter-spacing: .07em;
	opacity: .8;
	margin-top: 4px;
}

.evl-cd-estado {
	margin: 0 0 18px;
	font-size: 22px;
	font-weight: 700;
	color: var(--evl-cd-destaque);
	background: #fff;
	display: inline-block;
	padding: 9px 18px;
	border-radius: 8px;
}
.evl-cd-estado[hidden] {
	display: none;
}

.evl-cd-botao {
	display: inline-block;
	background: var(--evl-cd-destaque);
	color: #fff;
	padding: 11px 24px;
	border-radius: 8px;
	font-weight: 600;
	font-size: 15px;
	text-decoration: none;
}
.evl-cd-botao:hover {
	filter: brightness(.92);
	color: #fff;
}

/* Estilo em linha: tudo numa faixa horizontal compacta. */
.evl-cd-linha {
	padding: 18px 24px;
	gap: 20px;
}
.evl-cd-linha .evl-cd-cartaz img {
	width: 74px;
}
.evl-cd-linha .evl-cd-titulo {
	font-size: 19px;
	margin-bottom: 4px;
}
.evl-cd-linha .evl-cd-meta {
	margin-bottom: 12px;
}
.evl-cd-linha .evl-cd-unidade {
	min-width: 60px;
	padding: 8px 6px;
}
.evl-cd-linha .evl-cd-valor {
	font-size: 22px;
}

/* Estilo minimal: sem fundo colorido, para páginas sóbrias. */
.evl-cd-minimal {
	background: transparent;
	color: var(--evl-text);
	border: 1px solid var(--evl-border);
	padding: 24px;
}
.evl-cd-minimal .evl-cd-titulo {
	color: var(--evl-text);
}
.evl-cd-minimal .evl-cd-unidade {
	background: #f4f5f6;
}
.evl-cd-minimal .evl-cd-valor {
	color: var(--evl-cd-fundo);
}
.evl-cd-minimal .evl-cd-estado {
	background: #f4f5f6;
}

@media (max-width: 640px) {
	.evl-countdown {
		flex-direction: column;
		align-items: flex-start;
		padding: 22px;
		gap: 18px;
	}
	.evl-cd-cartaz img {
		width: 100px;
	}
	.evl-cd-unidade {
		min-width: 62px;
	}
	.evl-cd-valor {
		font-size: 24px;
	}
	.evl-countdown .evl-cd-titulo {
		font-size: 20px;
	}
}


/* Countdown em formato Hero: cartaz grande + contagem em destaque. */
.evl-cd-hero {
    min-height: 520px;
    padding: 34px;
    gap: 46px;
}
.evl-cd-hero .evl-cd-cartaz {
    flex: 0 0 min(42%, 520px);
    align-self: stretch;
    display: flex;
    align-items: center;
    justify-content: center;
}
.evl-cd-hero .evl-cd-cartaz img {
    width: auto;
    max-width: 100%;
    max-height: 460px;
    aspect-ratio: var(--evl-a3-ratio);
    object-fit: contain;
    border-radius: 14px;
}
.evl-cd-hero .evl-cd-corpo { padding: 20px 10px; }
.evl-cd-hero .evl-cd-titulo { font-size: clamp(30px, 3.2vw, 52px); }
.evl-cd-hero .evl-cd-meta { font-size: 17px; }
.evl-cd-hero .evl-cd-unidade { min-width: 100px; padding: 18px 12px; }
.evl-cd-hero .evl-cd-valor { font-size: 42px; }

@media (max-width: 760px) {
    .evl-cd-hero { min-height: 0; gap: 24px; }
    .evl-cd-hero .evl-cd-cartaz { flex: 0 0 auto; width: 100%; }
    .evl-cd-hero .evl-cd-cartaz img { max-height: 360px; }
}

/* Mensagens do formulário centradas. */
.evl-alerta { text-align: center; }
.evl-estado { text-align: center; }
.evl-estado-corpo { text-align: center; }
.evl-estado-passos { text-align: left; margin-left: auto; margin-right: auto; }

/* ---------------------------------------------------------------
   Barra de pesquisa
   --------------------------------------------------------------- */

.evl-pesquisa {
	background: #fff;
	border: 1px solid var(--evl-border);
	border-radius: 14px;
	padding: 18px 20px;
	margin-bottom: 26px;
}

.evl-pesquisa-titulo {
	margin: 0 0 14px;
	font-size: 18px;
	color: var(--evl-text);
}

.evl-pesquisa-campos {
	display: flex;
	gap: 14px;
	flex-wrap: wrap;
	align-items: flex-end;
}

.evl-pc {
	flex: 1 1 150px;
	min-width: 0;
}
.evl-pc-texto {
	flex: 2 1 240px;
}
.evl-pc-acoes {
	flex: 0 0 auto;
}

.evl-pesquisa label {
	display: block;
	font-size: 12.5px;
	font-weight: 600;
	color: var(--evl-muted);
	margin-bottom: 5px;
}

.evl-pesquisa input[type="search"],
.evl-pesquisa input[type="date"],
.evl-pesquisa select {
	width: 100%;
	box-sizing: border-box;
	padding: 10px 12px;
	border: 1px solid var(--evl-border);
	border-radius: 8px;
	font-size: 14.5px;
	font-family: inherit;
	background: #fff;
	color: var(--evl-text);
	height: 42px;
}
.evl-pesquisa input:focus,
.evl-pesquisa select:focus {
	outline: none;
	border-color: var(--evl-accent);
	box-shadow: 0 0 0 3px rgba(23,166,115,.15);
}

.evl-pc-input-icone {
	position: relative;
}
.evl-pc-input-icone svg {
	position: absolute;
	left: 12px;
	top: 50%;
	transform: translateY(-50%);
	color: var(--evl-muted);
	pointer-events: none;
}
.evl-pc-input-icone input {
	padding-left: 36px !important;
}

.evl-pesquisa .evl-btn-procurar {
	height: 42px;
	padding: 0 26px;
	border: none;
	border-radius: 8px;
	background: var(--evl-accent);
	color: #fff;
	font-size: 15px;
	font-weight: 600;
	cursor: pointer;
	appearance: none;
	-webkit-appearance: none;
}
.evl-pesquisa .evl-btn-procurar:hover {
	filter: brightness(.92);
}

.evl-faixa-resultados {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 14px;
	flex-wrap: wrap;
	background: #f6f7f8;
	border-radius: 10px;
	padding: 12px 16px;
	margin-bottom: 20px;
	font-size: 14.5px;
	color: var(--evl-text);
}

.evl-pesquisa-ativa {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 14px;
	flex-wrap: wrap;
	margin-top: 14px;
	padding-top: 14px;
	border-top: 1px solid var(--evl-border);
	font-size: 14px;
	color: var(--evl-muted);
}
.evl-pa-limpar {
	color: var(--evl-accent);
	font-weight: 600;
	text-decoration: none;
	white-space: nowrap;
}
.evl-pa-limpar:hover {
	text-decoration: underline;
}

@media (max-width: 640px) {
	.evl-pesquisa-campos {
		gap: 10px;
	}
	.evl-pc,
	.evl-pc-texto {
		flex: 1 1 100%;
	}
	.evl-pc-acoes .evl-btn-procurar {
		width: 100%;
	}
}

/* ---------------------------------------------------------------
   Botão "ver mais"
   --------------------------------------------------------------- */

.evl-item-oculto {
	display: none !important;
}

.evl-item-revelado {
	animation: evl-aparecer .35s ease both;
}

@keyframes evl-aparecer {
	from { opacity: 0; transform: translateY(10px); }
	to   { opacity: 1; transform: none; }
}

.evl-ver-mais-wrap {
	display: flex;
	justify-content: center;
	margin-top: 30px;
}

.evl-eventos-wrap .evl-btn-ver-mais {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	box-sizing: border-box;
	padding: 12px 24px;
	border-radius: 8px;
	border: 1px solid var(--evl-border);
	background: #fff;
	color: var(--evl-text);
	font-size: 15px;
	font-weight: 600;
	line-height: 1.2;
	cursor: pointer;
	appearance: none;
	-webkit-appearance: none;
	transition: background-color .15s ease, border-color .15s ease, color .15s ease;
}
.evl-eventos-wrap .evl-btn-ver-mais:hover {
	background: var(--evl-accent);
	border-color: var(--evl-accent);
	color: #fff;
}
.evl-eventos-wrap .evl-btn-ver-mais[hidden] {
	display: none;
}

.evl-ver-mais-conta {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 22px;
	height: 22px;
	padding: 0 7px;
	border-radius: 4px;
	background: var(--evl-accent);
	color: #fff;
	font-size: 12px;
	font-weight: 700;
	transition: background-color .15s ease, color .15s ease;
}
.evl-btn-ver-mais:hover .evl-ver-mais-conta {
	background: #fff;
	color: var(--evl-accent);
}
.evl-ver-mais-conta[hidden] {
	display: none;
}

.evl-ver-mais-seta {
	transition: transform .2s ease;
	flex-shrink: 0;
}

/* Quando o botão é um link para outra página, a seta aponta para a frente. */
.evl-seta-direita {
	transform: none;
}
.evl-btn-ver-mais:hover .evl-seta-direita {
	transform: translateX(3px);
}
a.evl-btn-ver-mais {
	text-decoration: none;
}
.evl-tudo-visivel .evl-ver-mais-seta {
	transform: rotate(180deg);
}

@media (prefers-reduced-motion: reduce) {
	.evl-item-revelado {
		animation: none;
	}
}

/* ---------------------------------------------------------------
   Etiquetas (pills)
   --------------------------------------------------------------- */

.evl-pills {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
}

.evl-pill {
	display: inline-block;
	color: #fff;
	font-size: 12px;
	font-weight: 600;
	line-height: 1.4;
	padding: 4px 12px;
	border-radius: 0;
	white-space: nowrap;
}

/* Etiquetas sobre o cartaz: cantos retos e a sobressair 2px à esquerda,
   como uma faixa colada ao cartaz. */
.evl-card-pills {
	position: absolute;
	top: 12px;
	left: -2px;
	z-index: 3;
	max-width: calc(100% - 46px);
	flex-direction: column;
	align-items: flex-start;
	gap: 4px;
}

.evl-card-pills .evl-pill {
	border-radius: 0;
	padding: 5px 12px 5px 14px;
	font-size: 12.5px;
	letter-spacing: .01em;
	box-shadow: 2px 2px 6px rgba(0,0,0,.3);
	max-width: 100%;
	overflow: hidden;
	text-overflow: ellipsis;
}

.evl-single-pills {
	display: flex;
	justify-content: center;
	margin-bottom: 12px;
}

/* ---------------------------------------------------------------
   Animações ao passar o rato
   --------------------------------------------------------------- */

.evl-card-img-wrap img {
	transition: transform .45s ease, filter .3s ease;
}

.evl-anim-zoom .evl-card:hover .evl-card-img-wrap img,
.evl-anim-zoom-elevar .evl-card:hover .evl-card-img-wrap img {
	transform: scale(1.07);
}

.evl-anim-brilho .evl-card .evl-card-img-wrap img {
	filter: brightness(.93) saturate(.92);
}
.evl-anim-brilho .evl-card:hover .evl-card-img-wrap img {
	filter: brightness(1.04) saturate(1.06);
}

.evl-anim-elevar .evl-card,
.evl-anim-zoom-elevar .evl-card {
	transition: transform .3s ease, box-shadow .3s ease;
}
.evl-anim-elevar .evl-card:hover,
.evl-anim-zoom-elevar .evl-card:hover {
	transform: translateY(-6px);
	box-shadow: 0 10px 24px rgba(0,0,0,.14);
}

/* Respeita quem pediu menos animação no sistema operativo. */
@media (prefers-reduced-motion: reduce) {
	.evl-card,
	.evl-card-img-wrap img,
	.evl-slider-track {
		transition: none !important;
		transform: none !important;
	}
	.evl-card:hover .evl-card-img-wrap img {
		transform: none !important;
	}
}

/* ---------------------------------------------------------------
   Adicionar ao calendário
   --------------------------------------------------------------- */

.evl-calendario {
	position: relative;
	display: inline-block;
}

.evl-calendario .evl-btn-calendario {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	box-sizing: border-box;
	padding: 11px 18px;
	border-radius: 8px;
	border: 1px solid var(--evl-border);
	background: #fff;
	color: var(--evl-text);
	font-size: 15px;
	font-weight: 600;
	line-height: 1.2;
	cursor: pointer;
	appearance: none;
	-webkit-appearance: none;
	transition: background-color .15s ease, border-color .15s ease, color .15s ease;
}
.evl-calendario .evl-btn-calendario:hover {
	background: var(--evl-accent);
	border-color: var(--evl-accent);
	color: #fff;
}
.evl-calendario .evl-btn-calendario svg {
	flex-shrink: 0;
}
.evl-cal-seta {
	transition: transform .2s ease;
}
.evl-btn-calendario[aria-expanded="true"] .evl-cal-seta {
	transform: rotate(180deg);
}

.evl-calendario-compacto .evl-btn-calendario {
	padding: 7px 13px;
	font-size: 13px;
	font-weight: 500;
	border-radius: 6px;
}

.evl-cal-menu {
	position: absolute;
	top: calc(100% + 6px);
	left: 0;
	z-index: 20;
	min-width: 250px;
	background: #fff;
	border: 1px solid var(--evl-border);
	border-radius: 10px;
	box-shadow: 0 6px 24px rgba(0,0,0,.14);
	overflow: hidden;
	text-align: left;
}
.evl-cal-menu[hidden] {
	display: none;
}

.evl-cal-opcao {
	display: block;
	padding: 11px 16px;
	text-decoration: none;
	color: var(--evl-text);
	border-bottom: 1px solid var(--evl-border);
	transition: background-color .12s ease;
}
.evl-cal-opcao:last-child {
	border-bottom: none;
}
.evl-cal-opcao:hover {
	background: #f6f7f8;
	color: var(--evl-text);
}

.evl-cal-nome {
	display: block;
	font-weight: 600;
	font-size: 14px;
}
.evl-cal-nota {
	display: block;
	font-size: 12px;
	color: var(--evl-muted);
	margin-top: 1px;
}

.evl-single-calendario {
	text-align: center;
	margin: 22px 0 26px;
}
.evl-single-calendario .evl-cal-menu {
	left: 50%;
	transform: translateX(-50%);
}

.evl-tl-conteudo .evl-calendario {
	margin-top: 12px;
}

/* Perto do fim do ecrã, o menu abre alinhado à direita. */
@media (max-width: 520px) {
	.evl-cal-menu {
		min-width: 220px;
	}
}

/* ===============================================================
   LAYOUT: lista compacta
   =============================================================== */

.evl-lista-compacta {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(420px, 100%), 1fr));
	gap: 16px;
}

.evl-lc-item {
	display: grid;
	grid-template-columns: 58px 76px 1fr;
	gap: 16px;
	align-items: center;
	padding: 14px 18px 14px 14px;
	border: 1px solid var(--evl-border);
	border-radius: 12px;
	background: #fff;
	transition: border-color .2s ease, box-shadow .2s ease;
}
.evl-lc-item:hover {
	border-color: #cfd4da;
	box-shadow: 0 2px 10px rgba(0,0,0,.06);
}
.evl-lc-hoje {
	border-color: var(--evl-accent);
}

.evl-lc-data {
	text-align: center;
	border-right: 1px solid var(--evl-border);
	padding-right: 14px;
	line-height: 1.15;
}
.evl-lc-mes {
	display: block;
	font-size: 13px;
	color: var(--evl-muted);
}
.evl-lc-dia {
	display: block;
	font-size: 26px;
	font-weight: 700;
	color: var(--evl-text);
}
.evl-lc-semana {
	display: inline-block;
	margin-top: 4px;
	background: var(--evl-accent);
	color: #fff;
	font-size: 11px;
	font-weight: 600;
	padding: 2px 9px;
	border-radius: 3px;
}

.evl-lc-img img {
	width: 76px;
	height: 76px;
	object-fit: cover;
	border-radius: 10px;
	display: block;
}

.evl-lc-info {
	min-width: 0;
}
.evl-lc-hora {
	margin: 0 0 2px;
	font-size: 14px;
	color: var(--evl-muted);
}
.evl-lista-compacta .evl-lc-titulo {
	margin: 0 0 6px;
	font-size: 17px;
	line-height: 1.3;
	color: var(--evl-text);
}
.evl-lc-local {
	margin: 0;
	font-size: 14px;
	color: var(--evl-muted);
	display: flex;
	align-items: center;
	gap: 5px;
}
.evl-lc-info .evl-pills {
	margin-top: 8px;
}

@media (max-width: 520px) {
	.evl-lc-item {
		grid-template-columns: 52px 60px 1fr;
		gap: 12px;
		padding: 12px;
	}
	.evl-lc-img img {
		width: 60px;
		height: 60px;
	}
	.evl-lc-dia {
		font-size: 22px;
	}
}

/* ===============================================================
   LAYOUT: minimalista
   =============================================================== */

.evl-minimal {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(280px, 100%), 1fr));
	gap: 20px;
}

.evl-min-item {
	display: grid;
	grid-template-columns: auto 1fr;
	gap: 18px;
	padding: 22px;
	border: 1px solid var(--evl-border);
	border-radius: 14px;
	background: #fff;
}

.evl-min-esq {
	text-align: center;
}

.evl-min-caixa {
	width: 66px;
	height: 66px;
	border-radius: 12px;
	background: var(--evl-accent);
	color: #fff;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	line-height: 1.1;
}
.evl-min-hoje {
	box-shadow: 0 0 0 3px rgba(0,0,0,.08);
}
.evl-min-dia {
	font-size: 24px;
	font-weight: 700;
}
.evl-min-mes {
	font-size: 12px;
	opacity: .9;
}
.evl-min-semana {
	display: block;
	margin-top: 8px;
	font-size: 11px;
	letter-spacing: .08em;
	color: var(--evl-muted);
}

.evl-min-info {
	min-width: 0;
}
.evl-min-hora {
	margin: 0 0 6px;
	font-size: 14px;
	color: var(--evl-accent);
	display: flex;
	align-items: center;
	gap: 6px;
}
.evl-minimal .evl-min-titulo {
	margin: 0 0 8px;
	font-size: 18px;
	line-height: 1.3;
	color: var(--evl-text);
}
.evl-min-local {
	margin: 0;
	font-size: 14px;
	color: var(--evl-muted);
	display: flex;
	align-items: center;
	gap: 5px;
}
.evl-min-preco {
	margin: 14px 0 0;
	padding-top: 12px;
	border-top: 1px solid var(--evl-border);
	font-weight: 700;
	font-size: 15px;
	color: var(--evl-text);
}
.evl-min-info .evl-pills {
	margin-top: 10px;
}

/* ===============================================================
   LAYOUT: cartões com imagem
   =============================================================== */

.evl-cartoes {
	display: grid;
	gap: 26px;
}

.evl-ct-item {
	display: flex;
	flex-direction: column;
	border: 1px solid var(--evl-border);
	border-radius: 14px;
	overflow: hidden;
	background: #fff;
	transition: box-shadow .25s ease, transform .25s ease;
}
.evl-ct-item:hover {
	box-shadow: 0 8px 22px rgba(0,0,0,.1);
	transform: translateY(-3px);
}

.evl-ct-topo {
	position: relative;
	aspect-ratio: 16 / 10;
	overflow: hidden;
	background: #eceff1;
}
.evl-ct-topo img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
	transition: transform .45s ease;
}
.evl-ct-item:hover .evl-ct-topo img {
	transform: scale(1.05);
}
.evl-ct-sem-imagem {
	width: 100%;
	height: 100%;
	background: linear-gradient(135deg, #cfd8dc, #eceff1);
}

.evl-ct-data {
	position: absolute;
	top: 14px;
	left: 14px;
	background: var(--evl-accent);
	color: #fff;
	border-radius: 10px;
	padding: 6px 12px 8px;
	text-align: center;
	line-height: 1.1;
	box-shadow: 0 2px 8px rgba(0,0,0,.25);
}
.evl-ct-mes {
	display: block;
	font-size: 11px;
	letter-spacing: .06em;
	opacity: .95;
}
.evl-ct-dia {
	display: block;
	font-size: 22px;
	font-weight: 700;
}

.evl-ct-corpo {
	padding: 16px 18px 18px;
	display: flex;
	flex-direction: column;
	flex: 1;
}

.evl-ct-meta {
	display: flex;
	align-items: center;
	gap: 10px;
	flex-wrap: wrap;
	margin-bottom: 10px;
}
.evl-ct-hora {
	font-size: 13px;
	color: var(--evl-muted);
	display: inline-flex;
	align-items: center;
	gap: 5px;
}

.evl-cartoes .evl-ct-titulo {
	margin: 0 0 8px;
	font-size: 18px;
	line-height: 1.3;
	color: var(--evl-text);
}
.evl-ct-excerto {
	margin: 0 0 10px;
	font-size: 14px;
	color: var(--evl-muted);
	line-height: 1.6;
}
.evl-ct-local {
	margin: 0;
	font-size: 13.5px;
	color: var(--evl-muted);
	display: flex;
	align-items: center;
	gap: 5px;
}

.evl-ct-rodape {
	margin-top: auto;
	padding-top: 14px;
	border-top: 1px solid var(--evl-border);
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 10px;
	flex-wrap: wrap;
}
.evl-ct-botao {
	display: inline-block;
	padding: 8px 16px;
	border: 1px solid var(--evl-accent);
	border-radius: 8px;
	color: var(--evl-accent);
	font-size: 14px;
	font-weight: 600;
	text-decoration: none;
}
.evl-ct-botao:hover {
	background: var(--evl-accent);
	color: #fff;
}
.evl-ct-preco {
	font-weight: 700;
	font-size: 15px;
	color: var(--evl-text);
}

/* ===============================================================
   LAYOUT: destaque alternado
   =============================================================== */

.evl-destaque {
	display: flex;
	flex-direction: column;
	gap: 34px;
}

.evl-dq-item {
	position: relative;
	display: grid;
	grid-template-columns: 1fr 1fr;
	align-items: center;
}

.evl-dq-img {
	grid-column: 1;
	grid-row: 1;
	border-radius: 14px;
	overflow: hidden;
	aspect-ratio: 16 / 10;
}
.evl-dq-img img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}
.evl-dq-sem-imagem {
	width: 100%;
	height: 100%;
	background: linear-gradient(135deg, #cfd8dc, #eceff1);
}

.evl-dq-cartao {
	grid-column: 2;
	grid-row: 1;
	background: #fff;
	border-radius: 14px;
	box-shadow: 0 6px 26px rgba(0,0,0,.12);
	padding: 26px 28px;
	margin-left: -60px;
	z-index: 2;
}

/* Nos itens pares, a imagem passa para a direita. */
.evl-dq-invertido .evl-dq-img {
	grid-column: 2;
}
.evl-dq-invertido .evl-dq-cartao {
	grid-column: 1;
	grid-row: 1;
	margin-left: 0;
	margin-right: -60px;
}

.evl-dq-meta {
	display: flex;
	flex-wrap: wrap;
	gap: 16px;
	font-size: 12.5px;
	letter-spacing: .04em;
	text-transform: uppercase;
	color: var(--evl-muted);
	margin-bottom: 12px;
}
.evl-dq-meta span {
	display: inline-flex;
	align-items: center;
	gap: 6px;
}

.evl-destaque .evl-dq-titulo {
	margin: 0 0 10px;
	font-size: 27px;
	line-height: 1.25;
	color: var(--evl-text);
}
.evl-dq-hora {
	margin: 0 0 16px;
	font-size: 14px;
	color: var(--evl-muted);
	display: flex;
	align-items: center;
	gap: 6px;
}
.evl-dq-botao {
	display: inline-block;
	background: var(--evl-accent);
	color: #fff;
	padding: 11px 22px;
	border-radius: 8px;
	font-weight: 600;
	font-size: 15px;
	text-decoration: none;
}
.evl-dq-botao:hover {
	filter: brightness(.92);
	color: #fff;
}
.evl-dq-cartao .evl-pills {
	margin-bottom: 10px;
}

@media (max-width: 860px) {
	.evl-dq-item,
	.evl-dq-invertido {
		grid-template-columns: 1fr;
	}
	.evl-dq-img,
	.evl-dq-invertido .evl-dq-img {
		grid-column: 1;
		grid-row: 1;
	}
	.evl-dq-cartao,
	.evl-dq-invertido .evl-dq-cartao {
		grid-column: 1;
		grid-row: 2;
		margin: -40px 16px 0;
		padding: 20px;
	}
	.evl-destaque .evl-dq-titulo {
		font-size: 21px;
	}
}

/* ===============================================================
   LAYOUT: carrossel simples
   =============================================================== */

.evl-carrossel-simples .evl-slider-viewport {
	padding-left: 0;
	margin-left: 0;
}

.evl-cs-item {
	display: flex;
	align-items: center;
	gap: 14px;
	padding: 4px;
}

.evl-cs-img img {
	width: 74px;
	height: 74px;
	object-fit: cover;
	border-radius: 12px;
	display: block;
}

.evl-cs-info {
	min-width: 0;
}
.evl-cs-data {
	margin: 0 0 4px;
	font-size: 13px;
	letter-spacing: .03em;
	color: var(--evl-accent);
}
.evl-carrossel-simples .evl-cs-titulo {
	margin: 0;
	font-size: 17px;
	line-height: 1.3;
	color: var(--evl-text);
}
.evl-cs-local {
	margin: 5px 0 0;
	font-size: 13px;
	color: var(--evl-muted);
	display: flex;
	align-items: center;
	gap: 5px;
}

/* ---------------------------------------------------------------
   Vista cronológica (timeline)
   --------------------------------------------------------------- */

.evl-timeline {
	list-style: none;
	margin: 0;
	padding: 0;
	position: relative;
}

.evl-tl-item {
	display: grid;
	grid-template-columns: 96px 1fr auto;
	gap: 24px;
	align-items: start;
	padding: 26px 0;
	border-bottom: 1px solid var(--evl-border);
	position: relative;
}
.evl-tl-item:last-child {
	border-bottom: none;
}

/* Linha vertical a ligar as caixas de data */
.evl-tl-item::before {
	content: "";
	position: absolute;
	left: 47px;
	top: 0;
	bottom: 0;
	width: 1px;
	background: var(--evl-border);
	z-index: 0;
}
.evl-tl-item:first-child::before {
	top: 26px;
}
.evl-tl-item:last-child::before {
	bottom: auto;
	height: 26px;
}

.evl-tl-data {
	position: relative;
	z-index: 1;
	width: 96px;
	padding: 14px 6px;
	border: 1px solid var(--evl-border);
	border-radius: 4px;
	background: #fff;
	text-align: center;
	line-height: 1.2;
}

.evl-tl-dia {
	display: block;
	font-size: 30px;
	font-weight: 700;
	color: var(--evl-text);
}

.evl-tl-mes {
	display: block;
	font-size: 11px;
	letter-spacing: .09em;
	text-transform: uppercase;
	color: var(--evl-muted);
	margin-top: 2px;
}

.evl-tl-hoje .evl-tl-data {
	border-color: var(--evl-accent);
	box-shadow: 0 0 0 1px var(--evl-accent);
}

.evl-tl-conteudo {
	min-width: 0;
	padding-top: 2px;
}

.evl-tl-conteudo .evl-pills {
	margin-bottom: 10px;
}

.evl-timeline .evl-tl-titulo {
	margin: 0 0 10px;
	font-size: 22px;
	line-height: 1.3;
	color: var(--evl-text);
}

.evl-tl-meta {
	display: flex;
	flex-wrap: wrap;
	gap: 18px;
	font-size: 14px;
	color: var(--evl-muted);
}

.evl-tl-meta-item {
	display: inline-flex;
	align-items: center;
	gap: 6px;
}
.evl-tl-meta-item svg {
	color: var(--evl-accent);
	flex-shrink: 0;
}

.evl-tl-cartaz img {
	width: 84px;
	aspect-ratio: var(--evl-a3-ratio);
	object-fit: cover;
	object-position: top center;
	border-radius: 6px;
	display: block;
	border: 1px solid var(--evl-border);
}

@media (max-width: 700px) {
	.evl-tl-item {
		grid-template-columns: 68px 1fr;
		gap: 16px;
		padding: 20px 0;
	}
	.evl-tl-item::before {
		left: 33px;
	}
	.evl-tl-data {
		width: 68px;
		padding: 10px 4px;
	}
	.evl-tl-dia {
		font-size: 23px;
	}
	.evl-timeline .evl-tl-titulo {
		font-size: 18px;
	}
	.evl-tl-cartaz {
		display: none;
	}
	.evl-tl-meta {
		gap: 12px;
		font-size: 13px;
	}
}

/* ---------------------------------------------------------------
   Slider de eventos
   --------------------------------------------------------------- */

.evl-slider {
	--evl-slider-gap: 28px;
	/* Número de cartazes visíveis em cada breakpoint. O JS lê esta variável. */
	--evl-slider-atual: var(--evl-slider-visiveis, 4);
	position: relative;
	display: flex;
	align-items: center;
	gap: 8px;
}

.evl-slider-viewport {
	overflow: hidden;
	flex: 1 1 auto;
	min-width: 0;
	/* Folga à esquerda para as etiquetas que sobressaem do cartaz
	   não serem cortadas pelo recorte do carrossel. */
	padding-left: 4px;
	margin-left: -4px;
}

.evl-slider-track {
	display: flex;
	gap: var(--evl-slider-gap);
	transition: transform .5s ease;
	will-change: transform;
}

.evl-slide {
	flex: 0 0 calc(
		(100% - (var(--evl-slider-atual) - 1) * var(--evl-slider-gap)) / var(--evl-slider-atual)
	);
	min-width: 0;
}

/* Largura fixa definida no admin: os cartazes ficam do mesmo tamanho da agenda. */
.evl-slider-fixo .evl-slide {
	flex: 0 0 var(--evl-slider-largura, 230px);
	max-width: var(--evl-slider-largura, 230px);
}

/* Pontos de navegação */
.evl-slider-pontos {
	display: flex;
	justify-content: center;
	align-items: center;
	gap: 9px;
	margin-top: 18px;
	flex-wrap: wrap;
}

.evl-slider-ponto {
	appearance: none;
	-webkit-appearance: none;
	box-sizing: border-box;
	width: 18px;
	height: 3px;
	min-width: 18px;
	min-height: 3px;
	padding: 0;
	margin: 0;
	border: none;
	border-radius: 0;
	background: #cfd4da;
	cursor: pointer;
	transition: background-color .2s ease, transform .2s ease, width .2s ease;
	box-shadow: none;
	line-height: 0;
	font-size: 0;
}
.evl-slider-ponto:hover {
	background: #9aa2ab;
}
.evl-slider-ponto.is-ativo {
	background: var(--evl-accent);
	width: 26px;
}
.evl-slider-ponto:focus-visible {
	outline: 2px solid var(--evl-accent);
	outline-offset: 2px;
}

.evl-slider .evl-slider-seta {
	flex: 0 0 auto;
	box-sizing: border-box;
	width: 40px;
	height: 40px;
	min-width: 40px;
	min-height: 40px;
	max-width: 40px;
	max-height: 40px;
	padding: 0;
	margin: 0;
	border-radius: 8px;
	border: 1px solid var(--evl-border);
	background: #fff;
	color: var(--evl-text);
	display: flex;
	align-items: center;
	justify-content: center;
	line-height: 1;
	font-size: 0;
	box-shadow: none;
	cursor: pointer;
	appearance: none;
	-webkit-appearance: none;
	transition: background-color .15s ease, color .15s ease, opacity .15s ease;
}
.evl-slider .evl-slider-seta svg {
	display: block;
	flex: 0 0 auto;
}
.evl-slider .evl-slider-seta:hover:not(:disabled) {
	background: var(--evl-accent);
	border-color: var(--evl-accent);
	color: #fff;
}
.evl-slider .evl-slider-seta:disabled {
	opacity: .3;
	cursor: default;
}

/* Cartão dentro da galeria: data mais compacta (só dia e mês). */
.evl-card-slider .evl-card-data {
	font-size: 17px;
	padding: 10px 10px 12px;
	white-space: nowrap;
}

/* Responsivo: reduz o número de cartazes visíveis em ecrãs pequenos. */
@media (max-width: 1024px) {
	.evl-slider {
		--evl-slider-atual: min(var(--evl-slider-visiveis, 4), 3);
	}
}
@media (max-width: 768px) {
	.evl-slider {
		--evl-slider-atual: min(var(--evl-slider-visiveis, 4), 2);
		--evl-slider-gap: 16px;
	}
}
@media (max-width: 520px) {
	.evl-slider {
		--evl-slider-atual: 1;
	}
	.evl-slider-seta {
		width: 34px;
		height: 34px;
	}
}

/* Formulário */
.evl-form-wrap {
	max-width: 680px;
	margin: 0 auto;
}

.evl-secao-titulo {
	margin: 28px 0 14px;
	padding-bottom: 8px;
	border-bottom: 2px solid var(--evl-border);
	color: var(--evl-text);
}
.evl-secao-titulo:first-child {
	margin-top: 0;
}

.evl-linha {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 16px;
}
@media (max-width: 560px) {
	.evl-linha {
		grid-template-columns: 1fr;
	}
}

.evl-campo {
	margin-bottom: 18px;
}
.evl-campo label {
	display: block;
	font-weight: 600;
	margin-bottom: 6px;
	color: var(--evl-text);
}
.evl-obrigatorio {
	color: #dc2626;
}
.evl-opcional {
	font-weight: 400;
	color: var(--evl-muted);
	font-size: 13px;
}

.evl-input,
.evl-input-file,
textarea.evl-input {
	width: 100%;
	padding: 11px 12px;
	border: 1px solid var(--evl-border);
	border-radius: 6px;
	font-size: 15px;
	font-family: inherit;
	background: #fff;
	color: var(--evl-text);
}
.evl-input:focus,
textarea.evl-input:focus {
	outline: none;
	border-color: var(--evl-accent);
	box-shadow: 0 0 0 3px rgba(23,166,115,.15);
}
.evl-input-erro {
	border-color: #dc2626;
}
.evl-erro-campo {
	color: #dc2626;
	font-size: 13px;
	margin: 6px 0 0;
}

.evl-ajuda {
	font-size: 13px;
	color: var(--evl-muted);
	margin: 4px 0 8px;
}

.evl-checkbox {
	display: flex;
	align-items: flex-start;
	gap: 8px;
	font-weight: 400 !important;
	cursor: pointer;
}
.evl-checkbox input {
	margin-top: 3px;
}

.evl-honeypot {
	position: absolute;
	left: -9999px;
	width: 1px;
	height: 1px;
	overflow: hidden;
}

/* ---------------------------------------------------------------
   Página de estado (obrigado pela submissão)
   --------------------------------------------------------------- */

.evl-estado {
	--evl-estado-cor: #00844a;
	--evl-estado-cor-leve: #e6f6ee;
	max-width: 560px;
	margin: 0 auto;
	background: #fff;
	border-radius: 14px;
	box-shadow: 0 2px 16px rgba(0,0,0,.08);
	overflow: hidden;
}

.evl-estado-topo {
	background: var(--evl-estado-cor-leve);
	padding: 36px 28px 28px;
	text-align: center;
}

.evl-estado-icones {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 16px;
	margin-bottom: 16px;
}

.evl-estado-circulo {
	width: 74px;
	height: 74px;
	border-radius: 50%;
	background: var(--evl-estado-cor);
	display: flex;
	align-items: center;
	justify-content: center;
	box-shadow: 0 4px 14px rgba(0,0,0,.15);
	flex-shrink: 0;
}

.evl-estado-agenda {
	color: var(--evl-estado-cor);
	flex-shrink: 0;
}

.evl-estado .evl-estado-titulo {
	margin: 0 0 6px;
	font-size: 23px;
	color: var(--evl-estado-cor);
	line-height: 1.3;
}

.evl-estado-sub {
	margin: 0;
	color: #4b5563;
	font-size: 15px;
}

.evl-estado-corpo {
	padding: 26px 28px 28px;
}

.evl-estado-texto {
	margin: 0 0 20px;
	color: #4b5563;
	font-size: 15px;
	line-height: 1.65;
}

/* Passos do processo */
.evl-estado-passos {
	list-style: none;
	margin: 0 0 24px;
	padding: 0;
	counter-reset: evl-passo;
}
.evl-estado-passos li {
	position: relative;
	padding: 0 0 14px 34px;
	counter-increment: evl-passo;
	font-size: 15px;
}
.evl-estado-passos li:last-child {
	padding-bottom: 0;
}
.evl-estado-passos li::before {
	content: counter(evl-passo);
	position: absolute;
	left: 0;
	top: 0;
	width: 24px;
	height: 24px;
	border-radius: 6px;
	background: #e5e7eb;
	color: #6b7280;
	font-size: 13px;
	font-weight: 700;
	display: flex;
	align-items: center;
	justify-content: center;
}
/* Linha vertical a ligar os passos */
.evl-estado-passos li:not(:last-child)::after {
	content: "";
	position: absolute;
	left: 11px;
	top: 26px;
	bottom: 2px;
	width: 2px;
	background: #e5e7eb;
}
.evl-estado-passos li:first-child::before {
	background: var(--evl-estado-cor);
	color: #fff;
}
.evl-estado-passos li:nth-child(2)::before {
	background: #fff;
	color: var(--evl-estado-cor);
	box-shadow: inset 0 0 0 2px var(--evl-estado-cor);
}

.evl-passo-feito {
	color: var(--evl-estado-cor);
	font-weight: 600;
}
.evl-passo-atual {
	color: var(--evl-text, #1f2937);
	font-weight: 600;
}
.evl-passo-futuro {
	color: #9ca3af;
}

.evl-estado-acoes {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
}
.evl-estado-acoes .evl-btn {
	padding: 12px 22px;
	border-radius: 8px;
}
.evl-estado-acoes .evl-btn-primario {
	background: var(--evl-estado-cor);
	color: #fff;
}
.evl-estado-acoes .evl-btn-primario:hover {
	filter: brightness(.92);
	color: #fff;
}

@media (max-width: 520px) {
	.evl-estado-topo {
		padding: 28px 20px 22px;
	}
	.evl-estado-corpo {
		padding: 22px 20px 24px;
	}
	.evl-estado-acoes .evl-btn {
		width: 100%;
		text-align: center;
	}
}

.evl-alerta {
	padding: 14px 16px;
	border-radius: 8px;
	margin-bottom: 20px;
	font-size: 15px;
}
.evl-alerta-erro {
	background: #fef2f2;
	border: 1px solid #fecaca;
	color: #991b1b;
}
.evl-alerta-sucesso {
	background: #ecfdf5;
	border: 1px solid #a7f3d0;
	color: #065f46;
}

/* Página individual do evento */
.evl-single-cartaz-wrap {
	max-width: 420px;
	margin: 0 auto 20px;
}
.evl-single-cartaz {
	width: 100%;
	height: auto;
	aspect-ratio: var(--evl-a3-ratio);
	object-fit: cover;
	border-radius: var(--evl-radius);
	display: block;
}
.evl-single-data {
	text-align: center;
	font-weight: 700;
	font-size: 18px;
	color: var(--evl-accent-dark);
	margin-bottom: 4px;
}
.evl-single-cartaz-wrap {
	position: relative;
}

.evl-single-voltar {
	margin-top: 32px;
	text-align: center;
}

.evl-btn-voltar {
	display: inline-flex;
	align-items: center;
	gap: 7px;
	padding: 11px 22px;
	border-radius: 8px;
	background: transparent;
	color: var(--evl-text);
	border: 1px solid var(--evl-border);
}
.evl-btn-voltar:hover {
	background: var(--evl-accent);
	border-color: var(--evl-accent);
	color: #fff;
}

.evl-single-info {
	display: flex;
	align-items: center;
	justify-content: center;
	flex-wrap: wrap;
	gap: 2px;
	font-size: 14px;
	color: var(--evl-muted);
	margin-bottom: 20px;
}

/* ==========================================================================
   Personalização da data em destaque
   Cores, estilo de texto e posição vêm todas das definições do plugin.
   ========================================================================== */

.evl-vista-cartazes-a3 .evl-card-data {
	justify-content: center !important;
	text-align: center !important;
}

.evl-card-data {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 6px;
	color: var(--evl-data-cor, var(--evl-text));
}

.evl-icone-data {
	flex: 0 0 auto;
	opacity: .85;
}

/* Estilos de texto. */
.evl-data-estilo-negrito .evl-data-texto { font-weight: 800; }
.evl-data-estilo-maiusculas .evl-data-texto { text-transform: uppercase; letter-spacing: .04em; }
.evl-data-estilo-destaque .evl-data-texto { font-weight: 800; text-transform: uppercase; letter-spacing: .04em; }

/* Posições. */
.evl-data-pos-esquerda { justify-content: flex-start; text-align: left; }
.evl-data-pos-centro   { justify-content: center; text-align: center; }
.evl-data-pos-direita  { justify-content: flex-end; text-align: right; }

/* Caixa colorida à volta da data, quando há cor de fundo definida. */
.evl-card-data.evl-data-caixa {
	background: var(--evl-data-fundo, transparent);
	border-radius: 8px;
	padding: 7px 12px;
	margin: 12px 14px 0;
	width: fit-content;
	max-width: calc(100% - 28px);
	font-size: 17px;
}
.evl-data-pos-centro.evl-data-caixa  { margin-left: auto; margin-right: auto; }
.evl-data-pos-direita.evl-data-caixa { margin-left: auto; margin-right: 14px; }

/* Data sobre o cartaz, no canto superior esquerdo. */
.evl-card { position: relative; }

.evl-card-data.evl-data-pos-sobre {
	position: absolute;
	top: 10px;
	left: 10px;
	z-index: 3;
	margin: 0;
	padding: 6px 11px;
	border-radius: 8px;
	font-size: 15px;
	background: var(--evl-data-fundo, rgba(17, 17, 17, .78));
	color: var(--evl-data-cor, #fff);
	box-shadow: 0 2px 10px rgba(0, 0, 0, .25);
	backdrop-filter: blur(2px);
}

/* As etiquetas ocupam o mesmo canto: quando a data está sobre o cartaz,
   empurram-se para baixo para não se sobreporem. */
.evl-card-data.evl-data-pos-sobre ~ .evl-card-pills { top: 52px; }

/* Cores aplicadas também às pastilhas de data dos outros layouts,
   para o aspeto ser coerente em todas as vistas. */
.evl-ct-data {
	background: var(--evl-data-fundo, var(--evl-accent));
	color: var(--evl-data-cor, #fff);
}
.evl-tl-dia,
.evl-lc-dia,
.evl-min-dia {
	color: var(--evl-data-cor, var(--evl-text));
}

/* Data desligada nas definições: escondida em todas as vistas. */
.evl-sem-data .evl-card-data,
.evl-sem-data .evl-lc-data,
.evl-sem-data .evl-ct-data,
.evl-sem-data .evl-min-data,
.evl-sem-data .evl-tl-data {
	display: none !important;
}

@media (max-width: 480px) {
	.evl-card-data.evl-data-caixa { font-size: 15px; padding: 6px 10px; }
	.evl-card-data.evl-data-pos-sobre { font-size: 13px; padding: 5px 9px; }
}

/* ==========================================================================
   Destaque de topo em ecrã inteiro  [eventos_hero]

   Dois feitios de slide, escolhidos pela imagem de cada evento:

   .evl-hero-modo-preencher  a imagem cobre tudo, o texto assenta por cima
   .evl-hero-modo-cartaz     o cartaz aparece inteiro, com o texto ao lado e
                             o fundo preenchido por uma cópia desfocada

   A altura é um mínimo, não um valor fixo: os slides ficam empilhados na
   mesma célula de grelha, por isso o destaque cresce se algum precisar de
   mais espaço — um título comprido no telemóvel deixa de ficar cortado.
   ========================================================================== */

.evl-hero {
	position: relative;
	/* Largura total do ecrã sem contar com a barra de deslocamento.
	   --evl-vw é medida em JavaScript; 100vw serve de alternativa. */
	width: var(--evl-vw, 100vw);
	margin-left: calc(50% - var(--evl-vw, 100vw) / 2);
	margin-right: calc(50% - var(--evl-vw, 100vw) / 2);
	min-height: var(--evl-hero-altura, 100vh);
	overflow: hidden;
	background: #0d0d0f;
	isolation: isolate;
}

/* Todos os slides na mesma célula: quem manda na altura é o mais alto. */
.evl-hero-slides {
	display: grid;
	min-height: inherit;
}

.evl-hero-slide {
	grid-area: 1 / 1;
	position: relative;
	min-height: inherit;
	opacity: 0;
	visibility: hidden;
	transition: opacity .7s ease;
}

.evl-hero-slide.evl-hero-ativo {
	opacity: 1;
	visibility: visible;
}

/* --------------------------------------------------------------------------
   Modo "preencher": a imagem é o fundo
   -------------------------------------------------------------------------- */

.evl-hero-modo-preencher .evl-hero-moldura {
	position: absolute;
	inset: 0;
}

.evl-hero-modo-preencher .evl-hero-img {
	width: 100%;
	height: 100%;
	object-fit: var(--evl-hero-ajuste, cover);
	object-position: center;
	display: block;
}

.evl-hero-modo-preencher .evl-hero-conteudo {
	position: absolute;
	left: 0;
	right: 0;
	bottom: 0;
	padding: 0 6vw 8vh;
	max-width: 760px;
}

.evl-hero-centro .evl-hero-modo-preencher .evl-hero-conteudo {
	left: 50%;
	right: auto;
	transform: translateX(-50%);
	text-align: center;
	max-width: 820px;
}

/* --------------------------------------------------------------------------
   Modo "cartaz": o cartaz inteiro, com o fundo desfocado a preencher o resto

   O desfoque tira o detalhe mas guarda as cores, por isso o ecrã fica com o
   ambiente do próprio cartaz em vez de uma barra preta ou de uma cor inventada.
   -------------------------------------------------------------------------- */

.evl-hero-fundo {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center;
	/* O aumento esconde as bordas que o desfoque deixa transparentes. */
	transform: scale(1.14);
	filter: blur(34px) saturate(140%) brightness(.62);
	display: block;
	z-index: 0;
}

.evl-hero-modo-cartaz .evl-hero-palco {
	position: relative;
	z-index: 2;
	min-height: inherit;
	display: grid;
	grid-template-columns: minmax(0, 42%) minmax(0, 1fr);
	align-items: center;
	gap: clamp(28px, 5vw, 76px);
	max-width: 1480px;
	margin: 0 auto;
	padding: clamp(48px, 8vh, 96px) clamp(24px, 6vw, 88px);
	box-sizing: border-box;
}

.evl-hero-modo-cartaz .evl-hero-moldura {
	display: flex;
	justify-content: center;
	align-items: center;
	min-width: 0;
}

.evl-hero-modo-cartaz .evl-hero-img {
	display: block;
	width: auto;
	height: auto;
	max-width: 100%;
	max-height: min(74vh, 720px);
	object-fit: contain;
	border-radius: 8px;
	box-shadow: 0 24px 60px rgba(0, 0, 0, .55), 0 2px 8px rgba(0, 0, 0, .35);
}

.evl-hero-modo-cartaz .evl-hero-conteudo {
	min-width: 0;
}

/* Ao centro, o cartaz vai para cima e o texto para baixo. */
.evl-hero-centro .evl-hero-modo-cartaz .evl-hero-palco {
	grid-template-columns: minmax(0, 1fr);
	justify-items: center;
	gap: clamp(20px, 3vh, 34px);
}
.evl-hero-centro .evl-hero-modo-cartaz .evl-hero-conteudo { text-align: center; }
.evl-hero-centro .evl-hero-modo-cartaz .evl-hero-img { max-height: min(56vh, 560px); }

/* --------------------------------------------------------------------------
   Partes comuns aos dois feitios
   -------------------------------------------------------------------------- */

/* Véu escuro para o texto se ler sobre qualquer cartaz. */
.evl-hero-veu {
	position: absolute;
	inset: 0;
	z-index: 1;
	background:
		linear-gradient(to top, rgba(0,0,0,.85) 0%, rgba(0,0,0,.25) 45%, rgba(0,0,0,.1) 100%),
		rgba(0, 0, 0, var(--evl-hero-veu, .45));
}

/* No modo cartaz o fundo já vem escurecido pelo desfoque: mais um véu forte
   apagava as cores todas. */
.evl-hero-modo-cartaz .evl-hero-veu {
	background: linear-gradient(to top, rgba(0,0,0,.55) 0%, rgba(0,0,0,.12) 55%, rgba(0,0,0,.28) 100%);
}

.evl-hero-conteudo {
	color: #fff;
	z-index: 2;
}

.evl-hero-pills { margin-bottom: 12px; }
.evl-hero-centro .evl-hero-pills { display: flex; justify-content: center; }

.evl-hero-titulo {
	margin: 0 0 12px;
	font-size: clamp(28px, 5vw, 60px);
	line-height: 1.08;
	font-weight: 800;
	color: #fff;
	text-shadow: 0 2px 18px rgba(0, 0, 0, .5);
}

/* Com o cartaz ao lado sobra menos largura para o título. */
.evl-hero-modo-cartaz .evl-hero-titulo {
	font-size: clamp(26px, 3.4vw, 52px);
}

.evl-hero-data,
.evl-hero-local {
	display: flex;
	align-items: center;
	gap: 7px;
	margin: 0 0 8px;
	font-size: clamp(14px, 1.5vw, 18px);
	color: rgba(255, 255, 255, .92);
}

.evl-hero-centro .evl-hero-data,
.evl-hero-centro .evl-hero-local { justify-content: center; }

.evl-hero-sep { opacity: .6; margin: 0 2px; }

.evl-hero-texto {
	margin: 12px 0 0;
	font-size: clamp(14px, 1.4vw, 17px);
	line-height: 1.55;
	color: rgba(255, 255, 255, .88);
	max-width: 56ch;
}

.evl-hero-btn {
	display: inline-block;
	margin-top: 22px;
	background: var(--evl-accent);
	color: #fff;
	text-decoration: none;
	font-weight: 700;
	font-size: 15px;
	padding: 13px 26px;
	border-radius: 8px;
	transition: transform .2s ease, filter .2s ease;
}
.evl-hero-btn:hover,
.evl-hero-btn:focus {
	color: #fff;
	transform: translateY(-2px);
	filter: brightness(1.08);
}

/* Setas de navegação. */
.evl-hero-seta {
	position: absolute;
	top: 50%;
	transform: translateY(-50%);
	z-index: 4;
	width: 46px;
	height: 46px;
	display: flex;
	align-items: center;
	justify-content: center;
	border: 0;
	border-radius: 8px;
	background: rgba(255, 255, 255, .16);
	color: #fff;
	cursor: pointer;
	padding: 0;
	backdrop-filter: blur(4px);
	transition: background .2s ease;
}
.evl-hero-seta:hover { background: rgba(255, 255, 255, .3); }
.evl-hero-anterior { left: 22px; }
.evl-hero-seguinte { right: 22px; }

/* Pontos. */
.evl-hero-pontos {
	position: absolute;
	bottom: 22px;
	left: 50%;
	transform: translateX(-50%);
	z-index: 4;
	display: flex;
	gap: 9px;
}
.evl-hero-ponto {
	width: 20px;
	height: 3px;
	padding: 0;
	border: 0;
	border-radius: 0;
	background: rgba(255, 255, 255, .45);
	cursor: pointer;
	transition: width .25s ease, background .25s ease;
}
.evl-hero-ponto-ativo {
	width: 30px;
	background: #fff;
}

/* Barra que mostra quanto falta para o slide seguinte. */
.evl-hero-progresso {
	position: absolute;
	left: 0;
	right: 0;
	bottom: 0;
	height: 3px;
	z-index: 4;
	background: rgba(255, 255, 255, .18);
}
.evl-hero-progresso i {
	display: block;
	height: 100%;
	background: var(--evl-accent);
	transform: scaleX(0);
	transform-origin: left center;
}

/* Unidades pequenas de viewport: no telemóvel a barra de endereço aparece e
   desaparece, e 100vh deixaria o conteúdo cortado. */
@supports (height: 100svh) {
	.evl-hero { min-height: var(--evl-hero-altura-sv, var(--evl-hero-altura, 100svh)); }
	.evl-hero-modo-cartaz .evl-hero-img { max-height: min(74svh, 720px); }
}

/* Empilha só quando o ecrã é estreito E não é mais largo do que alto: num
   telemóvel deitado há pouca altura, e é lado a lado que o cartaz aproveita
   melhor o espaço. */
@media (max-width: 900px) and (max-aspect-ratio: 1 / 1) {
	/* Deixa de haver largura para o cartaz e o texto lado a lado. */
	.evl-hero-modo-cartaz .evl-hero-palco {
		grid-template-columns: minmax(0, 1fr);
		justify-items: center;
		gap: clamp(18px, 3vh, 30px);
		padding: clamp(56px, 9vh, 88px) 24px clamp(64px, 10vh, 96px);
	}
	.evl-hero-modo-cartaz .evl-hero-conteudo { text-align: center; }
	.evl-hero-modo-cartaz .evl-hero-data,
	.evl-hero-modo-cartaz .evl-hero-local { justify-content: center; }
	.evl-hero-modo-cartaz .evl-hero-pills { display: flex; justify-content: center; }
	.evl-hero-modo-cartaz .evl-hero-img { max-height: min(44svh, 46vh); }
	.evl-hero-modo-cartaz .evl-hero-titulo { font-size: clamp(23px, 5.2vw, 36px); }
}

/* Ecrã baixo e deitado: o cartaz pode subir até quase toda a altura, porque
   é a altura que falta, não a largura. */
@media (max-height: 520px) and (min-aspect-ratio: 1 / 1) {
	.evl-hero-modo-cartaz .evl-hero-palco {
		padding-top: 24px;
		padding-bottom: 36px;
	}
	.evl-hero-modo-cartaz .evl-hero-img { max-height: 82svh; }
	.evl-hero-modo-cartaz .evl-hero-titulo { font-size: clamp(20px, 3.4vw, 30px); }
	.evl-hero-texto { display: none; }
}

@media (max-width: 782px) {
	.evl-hero { min-height: min(var(--evl-hero-altura, 100vh), 88svh); }
	.evl-hero-modo-preencher .evl-hero-conteudo { padding: 0 22px 68px; }
	.evl-hero-titulo { font-size: clamp(23px, 6.5vw, 34px); }
	.evl-hero-seta { width: 40px; height: 40px; }
	.evl-hero-anterior { left: 10px; }
	.evl-hero-seguinte { right: 10px; }
	/* O desfoque é caro em telemóveis antigos; menos raio chega. */
	.evl-hero-fundo { filter: blur(22px) saturate(135%) brightness(.6); }
}

@media (prefers-reduced-motion: reduce) {
	.evl-hero-slide { transition: none; }
	.evl-hero-btn { transition: none; }
	.evl-hero-btn:hover { transform: none; }
	.evl-hero-progresso { display: none; }
}

/* ==========================================================================
   Toque: alvos suficientemente grandes em ecrãs sem rato
   As normas de acessibilidade pedem 24x24 px no mínimo; em botões que se
   usam a andar na rua, 44 px é o valor confortável.
   ========================================================================== */

@media (hover: none) and (pointer: coarse) {

	/* Botão de partilha: o quadrado visível mantém-se pequeno, mas a área
	   que responde ao dedo cresce à volta dele. */
	.evl-card .evl-share::after,
	.evl-hero-ponto::after,
	.evl-slider-ponto::after {
		content: "";
		position: absolute;
		top: 50%;
		left: 50%;
		width: 44px;
		height: 44px;
		transform: translate(-50%, -50%);
	}

	.evl-hero-ponto,
	.evl-slider-ponto { position: relative; }

	.evl-slider-seta,
	.evl-hero-seta {
		width: 46px !important;
		height: 46px !important;
		min-width: 46px;
		min-height: 46px;
	}

	/* Espaço entre pontos, para não se acertar no vizinho. */
	.evl-hero-pontos,
	.evl-slider-pontos { gap: 14px; }

	/* Campos e botões do formulário ao tamanho do dedo. */
	.evl-input,
	.evl-form select,
	.evl-form .evl-btn,
	.evl-pc select,
	.evl-pc input,
	.evl-btn-procurar {
		min-height: 46px;
	}

	.evl-checkbox input[type="checkbox"] {
		width: 20px;
		height: 20px;
	}

	/* Nas etiquetas e no menu do calendário, mais área para tocar. */
	.evl-cal-menu a,
	.evl-cal-menu button { padding: 13px 16px; }
}

/* Em ecrãs pequenos, o iOS aumenta o zoom quando um campo tem menos de 16px.
   Fixar 16px evita esse salto ao tocar no formulário. */
@media (max-width: 782px) {
	.evl-input,
	.evl-form select,
	.evl-form textarea,
	.evl-pc input,
	.evl-pc select { font-size: 16px; }
}

/* Nunca deixar uma vista provocar deslocamento horizontal. */
.evl-eventos-wrap,
.evl-timeline,
.evl-lista-compacta,
.evl-minimal,
.evl-cartoes,
.evl-destaque { max-width: 100%; }

.evl-card-img-wrap img,
.evl-hero-img { max-width: 100%; }
