/* Academy - Cursos: estilos do shortcode [cursos] */

.msg-cursos-grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
	gap: 24px;
}

.msg-curso-card {
	position: relative;
	overflow: hidden;
	background-color: #F7F9FA;
	border: 1px solid #E4E8EC;
	box-shadow: 4px 4px 11px 0 rgba(0, 0, 0, 0.25);
	display: flex;
	flex-direction: column;
	justify-content: space-between;
}

.msg-curso-card--abertas {
	background-color: #EAF5FC; /* Blue-50 */
	border: 4px solid #A3D9C5; /* Green-200 */
}

.msg-curso-card--ultimas {
	background-color: #FFFFFF;
	border: 4px solid #F2D593; /* Yellow-200 */
}

.msg-curso-card-content {
	padding: 32px;
	box-sizing: border-box;
	display: flex;
	flex-direction: column;
	flex-grow: 1;
}

.msg-curso-card-badges {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 8px;
	margin-bottom: 24px;
}

.msg-curso-area-pill {
	display: inline-flex;
	align-items: center;
	border-radius: 50px;
	border: 1px solid #009CDD;
	color: #001730;
	font-family: 'Montserrat', sans-serif;
	font-weight: 700;
	font-size: 14px;
	padding: 6px 16px;
	background-color: transparent;
	white-space: nowrap;
}

.msg-curso-edicao-pill {
	display: inline-flex;
	align-items: center;
	border-radius: 50px;
	border: 1px solid #009CDD;
	background-color: #009CDD;
	color: #FFFFFF;
	font-family: 'Montserrat', sans-serif;
	font-weight: 700;
	font-size: 14px;
	padding: 6px 16px;
	white-space: nowrap;
}

.msg-curso-titulo {
	font-family: 'Montserrat', sans-serif;
	font-weight: 700;
	font-size: 24px;
	color: #0E1419;
	margin: 0 0 24px 0;
	line-height: 1.3;
}

.msg-curso-duracao {
	font-family: 'Montserrat', sans-serif;
	font-weight: 400;
	font-size: 18px;
	color: #40474D;
	margin: auto 0 16px 0;
}

.msg-curso-botao {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 100%;
	min-width: 240px;
	height: 48px;
	padding: 0 16px;
	box-sizing: border-box;
	background-color: #001730;
	color: #FFFFFF;
	font-family: 'Montserrat', sans-serif;
	font-weight: 400;
	font-size: 18px;
	text-decoration: none !important;
	margin-top: 0;
}

.msg-curso-botao:hover,
.msg-curso-botao:focus,
.msg-curso-botao:visited {
	text-decoration: none !important;
	background-color: #002246;
	color: #FFFFFF;
}

.msg-curso-card-banner {
	text-align: center;
	font-family: 'Montserrat', sans-serif;
	font-weight: 700;
	font-size: 14px;
	color: #001730;
	padding: 14px 16px;
}

.msg-curso-card-banner--abertas {
	background-color: #A3D9C5; /* Green-200 */
}

.msg-curso-card-banner--ultimas {
	background-color: #F2D593; /* Yellow-200 */
}

/* Selo ESESFM - canto superior direito.
   Fita ligeiramente mais larga e com menos padding lateral, para o simbolo
   passar de 40px para 50px de largura (+25%) sem tocar nas arestas nem
   desequilibrar o entalhe do clip-path. */
.msg-curso-esesfm-ribbon {
	position: absolute;
	top: 0;
	right: 24px;
	width: 64px;
	background-color: #3B0764;
	padding: 12px 7px 20px 7px;
	clip-path: polygon(0 0, 100% 0, 100% 100%, 50% 82%, 0 100%);
	z-index: 2;
}

.msg-curso-esesfm-ribbon img {
	display: block;
	width: 100%;
	height: auto;
}

@media (max-width: 640px) {
	.msg-cursos-grid {
		grid-template-columns: 1fr;
	}
}

/* ============================================
   SLIDER HORIZONTAL  [cursos slider="1"]
   ============================================ */
.msg-cursos-slider {
	position: relative;
}

/* A "caixa" do slider: recorta horizontalmente e permite scroll/arrasto.
   O proximo cartao fica a espreitar a direita, indicando que ha mais. */
.msg-cursos-track {
	display: flex;
	gap: 24px;
	overflow-x: auto;
	overflow-y: hidden;
	scroll-snap-type: x mandatory;
	-webkit-overflow-scrolling: touch;
	padding-bottom: 12px;
	align-items: stretch;
	/* Fade suave apenas na extremidade direita (indica que ha mais cartoes) */
	-webkit-mask-image: linear-gradient(to right, #000 0, #000 94%, transparent 100%);
	        mask-image: linear-gradient(to right, #000 0, #000 94%, transparent 100%);
}

.msg-cursos-track::-webkit-scrollbar {
	height: 6px;
}
.msg-cursos-track::-webkit-scrollbar-thumb {
	background-color: rgba(0, 23, 48, 0.15);
	border-radius: 3px;
}
.msg-cursos-track {
	scrollbar-width: thin;
}

/* Cartoes dentro do slider: largura fixa, nao encolhem, com snap */
.msg-cursos-track .msg-curso-card {
	flex: 0 0 360px;
	max-width: 85%;
	scroll-snap-align: start;
}

/* Setas de navegacao - canto inferior direito */
.msg-cursos-nav {
	display: flex;
	gap: 12px;
	justify-content: flex-end;
	margin-top: 20px;
	/* So ocupa a largura das setas e encosta a direita, para nao ficar por
	   cima do botao "Ver todos os cursos" que sobe para esta mesma linha. */
	width: -moz-max-content;
	width: max-content;
	margin-left: auto;
}

.msg-cursos-seta {
	width: 44px;
	height: 44px;
	border: 1px solid #001730;
	background-color: #FFFFFF;
	color: #001730;
	font-size: 22px;
	line-height: 1;
	cursor: pointer;
	display: flex;
	align-items: center;
	justify-content: center;
	transition: background-color 0.15s ease, opacity 0.15s ease;
}

.msg-cursos-seta:hover {
	background-color: #EAF5FC;
}

.msg-cursos-seta.is-disabled {
	opacity: 0.35;
	pointer-events: none;
}

@media (max-width: 640px) {
	.msg-cursos-track .msg-curso-card {
		flex: 0 0 85%;
		max-width: 85%;
	}
}

/* Alinha o botao "Ver todos os cursos" (s-cta-cursos-sec) com a linha das
   setas do slider, em desktop. As setas ficam ~94px acima do botao, por isso
   subimos o botao para a mesma linha (ele fica a esquerda, setas a direita).
   Em mobile mantem-se full-width por baixo. */
@media (min-width: 768px) {
	.s-cta-cursos-sec {
		margin-top: -94px;
		position: relative;
		z-index: 2;
	}
}

/* ============================================
   PÁGINA INDIVIDUAL DO CURSO
   ============================================ */

/* Cabeçalho */
.msg-curso-cabecalho-topo {
	display: flex;
	align-items: flex-start;
	justify-content: space-between;
	gap: 24px;
	flex-wrap: wrap;
}

.msg-curso-cabecalho-titulo {
	font-family: 'Montserrat', sans-serif;
	font-weight: 700;
	font-size: 40px;
	color: #001730;
	margin: 0 0 16px 0;
	line-height: 1.2;
}

.msg-curso-brochura-link {
	font-family: 'Montserrat', sans-serif;
	font-weight: 700;
	font-size: 16px;
	color: #009CDD;
	text-decoration: underline;
	white-space: nowrap;
}

.msg-curso-texto-intro {
	font-family: 'Montserrat', sans-serif;
	font-weight: 400;
	font-size: 18px;
	line-height: 1.6;
	color: #40474D;
	max-width: 720px;
}

/* Caixa lateral (sticky).
   O offset desconta a altura do header, que passou a ser sticky: com top fixo
   o cartao ficava por baixo do header e parecia cortado no topo. */
.msg-curso-sidebar {
	position: sticky;
	top: calc(var(--msg-header-h, 90px) + 24px);
	background-color: #EAF5FC;
	padding: 24px;
	box-sizing: border-box;
	display: flex;
	flex-direction: column;
	gap: 16px;
}

.msg-curso-sidebar-propina {
	background-color: #F2D593;
	padding: 12px 16px;
	display: flex;
	align-items: center;
	justify-content: space-between;
	font-family: 'Montserrat', sans-serif;
	color: #001730;
}

.msg-curso-sidebar-propina span {
	font-weight: 400;
	font-size: 16px;
}

.msg-curso-sidebar-propina strong {
	font-weight: 700;
	font-size: 18px;
}

.msg-curso-sidebar-lista {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 14px;
	font-family: 'Montserrat', sans-serif;
	font-size: 16px;
	color: #001730;
}

.msg-curso-sidebar-lista li {
	line-height: 1.4;
}

.msg-curso-sidebar-botao {
	display: flex;
	align-items: center;
	justify-content: center;
	text-align: center;
	height: 48px;
	font-family: 'Montserrat', sans-serif;
	font-weight: 400;
	font-size: 18px;
	line-height: 1.4;
	text-decoration: none !important;
	box-sizing: border-box;
	padding: 0 16px;
}

.msg-curso-sidebar-botao--primario {
	background-color: #001730;
	color: #FFFFFF;
}

.msg-curso-sidebar-botao--primario:hover {
	background-color: #002246;
	color: #FFFFFF;
}

.msg-curso-sidebar-botao--secundario {
	background-color: #CDE8F8;
	color: #001730;
	border: none;
	border-radius: 0;
}

.msg-curso-sidebar-botao--secundario:hover {
	background-color: #9CD1EF;
	color: #001730;
}

/* Tabs */
.msg-curso-tabs-nav {
	display: flex;
	gap: 0;
	margin-bottom: 0;
}

/* Desktop: tabs preenchem a coluna de conteudo, sem chegar ao cartao lateral */
@media (min-width: 1025px) {
	.msg-curso-tabs-nav { max-width: 95%; }
}

.msg-curso-tab-botao {
	flex: 1 1 0;
	display: flex;
	align-items: center;
	justify-content: center;
	text-align: center;
	font-family: 'Montserrat', sans-serif;
	font-weight: 700;
	font-size: 18px;
	line-height: 1.4;
	color: #0E1419;
	background: none;
	border: none;
	border-radius: 0;
	cursor: pointer;
	padding: 18px 10px;
	white-space: nowrap;
}

/* Sem hover nas tabs */
.msg-curso-tab-botao:hover,
.msg-curso-tab-botao:focus {
	background: none;
	color: #0E1419;
}

@media (max-width: 640px) {
	.msg-curso-tab-botao {
		font-size: 14px;
		padding: 14px 6px;
		white-space: normal;
	}
}

.msg-curso-tab-botao.is-active,
.msg-curso-tab-botao.is-active:hover,
.msg-curso-tab-botao.is-active:focus {
	background-color: #009CDD;
	color: #FFFFFF;
	border-radius: 0;
}

/* Nota: a visibilidade de .msg-curso-tab-painel é controlada via JavaScript (inline style),
   não por CSS, para não entrar em conflito com o "display" que o próprio Elementor define
   nos containers que construíres (flex, grid, etc.) */

/* Cursos relacionados */
.msg-curso-relacionados {
	margin-top: 0;
}

.msg-curso-relacionados-titulo {
	font-family: 'Montserrat', sans-serif;
	font-weight: 700;
	font-size: 32px;
	color: #001730;
	margin: 0 0 24px 0;
}

/* Blocos de texto (tabs) */
.msg-curso-bloco-texto {
	font-family: 'Montserrat', sans-serif;
	font-size: 16px;
	line-height: 1.6;
	color: #40474D;
}

.msg-curso-bloco-texto p {
	margin: 0 0 16px 0;
}

.msg-curso-bloco-texto strong {
	color: #001730;
}

.msg-curso-bloco-texto ul {
	margin: 0 0 16px 0;
	padding-left: 20px;
}

.msg-curso-bloco-texto ul li {
	margin-bottom: 8px;
}

/* Guia de candidatura (botão) */
.msg-curso-guia-candidatura-botao {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	background-color: #EAF5FC;
	color: #001730;
	font-family: 'Montserrat', sans-serif;
	font-weight: 400;
	font-size: 16px;
	height: 48px;
	padding: 0 24px;
	text-decoration: none !important;
	box-sizing: border-box;
	margin-top: 16px;
}

.msg-curso-guia-candidatura-botao:hover {
	background-color: #D5EAF9;
	color: #001730;
}

/* Condições de pagamento */
.msg-curso-condicoes-pagamento {
	font-family: 'Montserrat', sans-serif;
}

.msg-curso-pagamento-item {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 16px;
	padding: 16px 0;
	border-bottom: 1px dashed #C7CDD3;
}

.msg-curso-pagamento-label {
	font-weight: 700;
	font-size: 16px;
	color: #001730;
}

.msg-curso-pagamento-valor {
	font-weight: 700;
	font-size: 16px;
	color: #001730;
	white-space: nowrap;
}

/* Rubrica com variantes: linha de grupo sem valor, sublinhas indentadas */
.msg-curso-pagamento-item--grupo {
	border-bottom: none;
	padding-bottom: 0;
}

.msg-curso-pagamento-item--variante {
	padding-top: 8px;
}

.msg-curso-pagamento-item--variante .msg-curso-pagamento-label {
	padding-left: 24px;
	font-weight: 400;
	color: #40474D;
}

.msg-curso-condicoes-pagamento p {
	font-weight: 400;
	font-size: 14px;
	color: #40474D;
	margin: 16px 0 0 0;
}

@media (max-width: 640px) {
	.msg-curso-cabecalho-titulo {
		font-size: 28px;
	}

	.msg-curso-sidebar {
		position: static;
	}
}

/* Programa (Detalhes curriculares) */
.msg-curso-programa {
	display: flex;
	flex-direction: column;
}

.msg-curso-programa-item {
	padding: 24px;
}

.msg-curso-programa-item:nth-child(even) {
	background-color: #EEF1F4;
}

.msg-curso-programa-titulo {
	font-family: 'Montserrat', sans-serif;
	font-weight: 700;
	font-size: 18px;
	color: #001730;
	margin: 0 0 8px 0;
}

.msg-curso-programa-docente {
	font-family: 'Montserrat', sans-serif;
	font-weight: 400;
	font-size: 16px;
	color: #009CDD;
	text-decoration: underline;
}

.msg-curso-programa-docente::after {
	content: '';
	display: inline-block;
	width: 18px;
	height: 18px;
	margin-left: 6px;
	vertical-align: -3px;
	background-color: currentColor;
	-webkit-mask: url('external.svg') center / contain no-repeat;
	        mask: url('external.svg') center / contain no-repeat;
	transition: transform 0.15s ease;
}
.msg-curso-programa-docente { transition: color 0.15s ease; }
.msg-curso-programa-docente:hover { color: #0077A8; }
.msg-curso-programa-docente:hover::after { transform: translate(2px, -2px); }

.msg-curso-programa-info {
	font-family: 'Montserrat', sans-serif;
	font-weight: 400;
	font-size: 15px;
	color: #40474D;
	margin: 16px 0 0 0;
}

/* ===== STICKY sidebar do curso (acompanha o scroll ate ao fim da seccao) =====
   O cartao esta num widget que, por defeito, fica com a altura do proprio cartao,
   pelo que o position:sticky nao tinha espaco. Esticamos o widget e o wrapper do
   shortcode a altura da coluna para o sticky ter curso. */
@media (min-width: 1025px) {
	.elementor-element-52e164b { flex-grow: 1; }
	.elementor-element-52e164b > .elementor-shortcode { height: 100%; }
}

/* Botao 'Ver todos os cursos' na seccao de relacionados (alinhado com as setas) */
.msg-curso-relacionados-vertodos {
	display: flex;
	width: max-content;
	align-items: center;
	justify-content: center;
	background-color: #CDE8F8;
	color: #001730;
	font-family: 'Montserrat', sans-serif;
	font-weight: 400;
	font-size: 18px;
	height: 48px;
	min-width: 240px;
	padding: 0 24px;
	text-decoration: none !important;
	margin-top: 20px;
}
.msg-curso-relacionados-vertodos:hover { background-color: #9CD1EF; color: #001730; }
@media (min-width: 768px) {
	.msg-curso-relacionados-vertodos { margin-top: -44px; position: relative; z-index: 2; }
}

/* Icones dos itens do cartao lateral (duracao/regime/ects/horario) */
.msg-curso-sidebar-lista li {
	display: flex;
	align-items: flex-start;
	gap: 8px;
}
.msg-curso-info-icon {
	width: 24px;
	height: 24px;
	flex-shrink: 0;
	display: block;
}

/* Icone download no link 'Pedir brochura' */
.msg-curso-brochura-icon {
	display: inline-block;
	width: 20px;
	height: 20px;
	vertical-align: -4px;
	margin-left: 4px;
	background-color: #61B7E5;
	-webkit-mask: url('icons/download.svg') center / contain no-repeat;
	        mask: url('icons/download.svg') center / contain no-repeat;
	transition: background-color 0.15s ease;
}
.msg-curso-brochura-link { transition: color 0.15s ease; }
.msg-curso-brochura-link:hover { color: #0077A8; }
.msg-curso-brochura-link:hover .msg-curso-brochura-icon { background-color: #0077A8; }

/* Estado clicado/focado: azul escuro (sem vermelho do browser) */
.msg-cursos-seta:focus,.msg-cursos-seta:focus-visible,.msg-cursos-seta:active{outline:none;color:#002C56;border-color:#002C56;background-color:#EAF5FC;}
.msg-curso-botao:active{background-color:#002246;color:#FFFFFF;outline:none;}
.msg-curso-botao:focus-visible{outline:2px solid #002C56;outline-offset:2px;}

/* Tabs + botao 'Pedir brochura' na mesma linha */
.msg-curso-tabs-topo {
	display: flex;
	align-items: center;
	gap: 24px;
	flex-wrap: wrap;
}
.msg-curso-tabs-topo .msg-curso-tabs-nav {
	flex: 1 1 auto;
}
/* Botao 'Apoios a candidatura' (tab Admissao) - estilo brochura, em linha propria */
.msg-curso-apoios-link {
	display: inline-flex;
	align-items: center;
	margin-top: 16px;
}

/* Puxar a brochura para centrar com os botoes das tabs */
.msg-curso-tabs-topo .msg-curso-brochura-link {
	margin-top: -24px;
}

/* Docente do programa sem link (ex.: Todos) - sem seta nem sublinhado */
.msg-curso-programa-docente:not(a) {
	color: #001730;
	text-decoration: none;
}
.msg-curso-programa-docente:not(a)::after {
	display: none;
}

/* Cartao Resumo (mobile): cabecalho 'Resumo' + brochura dentro do cartao */
.msg-curso-sidebar-mobile-topo { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-bottom: 16px; }
.msg-curso-sidebar-mobile-titulo {
	font-family: 'Montserrat', sans-serif;
	font-weight: 700;
	font-size: 24px;
	color: #001730;
	margin: 0;
}
@media (max-width: 1024px) {
	.msg-curso-sidebar-mobile-topo {
		display: flex;
		align-items: center;
		justify-content: space-between;
		gap: 16px;
		margin-bottom: 16px;
	}
	.msg-curso-tabs-topo .msg-curso-brochura-link { display: none; }
}

/* Mobile: botao Ver todos alinhado com setas em mobile (sobe para a mesma linha) */
@media (max-width: 767px) {
	.msg-curso-relacionados-vertodos {
		margin-top: -44px;
		position: relative;
		z-index: 2;
	}
}

/* Barra compacta fixa no fundo (so mobile) */
.msg-curso-barra-mobile { display: none; }
@media (max-width: 1024px) {
	.msg-curso-barra-mobile {
		display: block;
		position: fixed;
		left: 0;
		right: 0;
		bottom: 0;
		z-index: 998;
		background: #EAF5FC;
		box-shadow: 0 -4px 16px rgba(0, 23, 48, 0.15);
	}
	.msg-curso-barra-topo {
		display: flex;
		flex-wrap: wrap;
		align-items: center;
		gap: 8px 16px;
		padding: 12px 16px;
	}
	.msg-curso-barra-propina {
		display: flex;
		flex-direction: column;
		align-items: center;
		background: #F0D28A;
		color: #001730;
		padding: 6px 14px;
		font-family: 'Montserrat', sans-serif;
		line-height: 1.2;
	}
	.msg-curso-barra-propina span { font-size: 12px; }
	.msg-curso-barra-propina strong { font-size: 16px; }
	.msg-curso-barra-lista {
		list-style: none;
		margin: 0;
		padding: 0;
		display: flex;
		flex-wrap: wrap;
		gap: 6px 16px;
		flex: 1;
	}
	.msg-curso-barra-lista li {
		display: flex;
		align-items: center;
		gap: 6px;
		font-family: 'Montserrat', sans-serif;
		font-size: 13px;
		font-weight: 700;
		color: #001730;
	}
	.msg-curso-barra-lista img { width: 18px; height: 18px; flex-shrink: 0; }
	.msg-curso-barra-cta {
		display: block;
		text-align: center;
		background: #001730;
		color: #FFFFFF;
		font-family: 'Montserrat', sans-serif;
		font-size: 18px;
		padding: 14px;
		text-decoration: none;
	}
}

/* Barra desliza para fora quando chega aos cursos relacionados */
.msg-curso-barra-mobile { transition: transform 0.25s ease; }
.msg-curso-barra-mobile.is-hidden { transform: translateY(100%); }

/* Mobile: titulo por cima das tabs + tabs sticky + cartao Resumo so na Visao geral */
.msg-curso-tabs-titulo-mobile { display: none; }
@media (max-width: 1024px) {
	.msg-curso-tabs-titulo-mobile {
		display: block;
		font-family: 'Montserrat', sans-serif;
		font-weight: 700;
		font-size: 26px;
		line-height: 1.2;
		color: #001730;
		margin: 0 0 12px 0;
	}
	/* cartao Resumo aparece so na tab Visao geral */
	html[data-msg-tab="curricular"] .msg-curso-sidebar,
	html[data-msg-tab="admissao"] .msg-curso-sidebar { display: none; }
	/* sidebar nao fica sticky em mobile */
	.msg-curso-sidebar { position: static; }
}

/* Titulo do curso para secao mobile (centrado, claro) */
.msg-curso-titulo-mobile {
	display: block;
	text-align: center;
	color: #EAF5FC;
	font-family: 'Montserrat', sans-serif;
	font-weight: 700;
	font-size: 16px;
	line-height: 24px;
}

/* Desktop: tabs acompanham o scroll ate aos cursos relacionados (como o cartao azul) - tabs sticky no desktop */
@media (min-width: 1025px) {
	.msg-curso-tabs-wrap {
		position: sticky;
		top: var(--msg-header-h, 90px);
		z-index: 20;
		background: #FFFFFF;
	}
}

/* Mobile: seccao do titulo sticky (por baixo do header) */
@media (max-width: 1024px) {
	.e-con:has(.msg-curso-titulo-mobile) {
		position: sticky;
		top: var(--msg-header-h, 0px);
		z-index: 15;
	}
}

/* sticky no WIDGET das tabs (filho direto da coluna alta) para poder viajar */
.msg-curso-tabs-wrap { position: static !important; }
@media (min-width: 1025px) {
	.elementor-widget-shortcode:has(.msg-curso-tabs-wrap) {
		position: -webkit-sticky;
		position: sticky;
		top: var(--msg-header-h, 90px);
		z-index: 20;
		background: #FFFFFF;
	}
}
@media (max-width: 1024px) {
	.elementor-widget-shortcode:has(.msg-curso-tabs-wrap) {
		position: -webkit-sticky;
		position: sticky;
		top: calc(var(--msg-header-h, 0px) + var(--msg-titulo-h, 0px));
		z-index: 20;
		background: #FFFFFF;
	}
}

/* Fundo solido das tabs (todos os browsers, sem :has) */
.msg-curso-tabs-wrap { background: #FFFFFF; }
/* Sticky robusto via classe (compativel com Safari) - adicionar a classe 'msg-tabs-sticky' ao widget das tabs em Elementor */
@media (min-width: 1025px) {
	.msg-tabs-sticky {
		position: -webkit-sticky;
		position: sticky;
		top: var(--msg-header-h, 90px);
		z-index: 20;
		background: #FFFFFF;
	}
}
@media (max-width: 1024px) {
	.msg-tabs-sticky {
		position: -webkit-sticky;
		position: sticky;
		top: calc(var(--msg-header-h, 0px) + var(--msg-titulo-h, 0px));
		z-index: 20;
		background: #FFFFFF;
	}
}

/* Safari fix: sticky por ID (sem :has), fundo solido + z-index alto */
@media (min-width: 1025px) {
	.elementor-element-a51f1aa, .msg-tabs-sticky {
		position: -webkit-sticky;
		position: sticky;
		top: var(--msg-header-h, 90px);
		z-index: 100;
		background: #FFFFFF;
		isolation: isolate;
	}
}
@media (max-width: 1024px) {
	.elementor-element-a51f1aa, .msg-tabs-sticky {
		position: -webkit-sticky;
		position: sticky;
		top: calc(var(--msg-header-h, 0px) + var(--msg-titulo-h, 0px));
		z-index: 100;
		background: #FFFFFF;
		isolation: isolate;
	}
}

/* ============================================================
 * Tipos de Curso - cartoes largos [cursos_tipos]
 * ============================================================ */
.msg-tipos { display: flex; flex-direction: column; gap: 64px; font-family: 'Montserrat', sans-serif; }
.msg-tipo-card { position: relative; display: flex; align-items: flex-end; justify-content: space-between; gap: 32px; min-height: 288px; padding: 32px; box-sizing: border-box; background-color: #0E1419; background-size: cover; background-position: center; box-shadow: 4px 4px 11px 0 rgba(0,0,0,0.25); }
.msg-tipo-info { display: flex; flex-direction: column; max-width: 60%; }
.msg-tipo-titulo { color: #FFFFFF; font-weight: 600; font-size: 28px; line-height: 1.2; margin: 0 0 12px 0; }
.msg-tipo-sub { color: #FFFFFF; font-weight: 700; font-size: 18px; line-height: 1.4; margin: 0 0 40px 0; }
.msg-tipo-meta { display: flex; flex-direction: column; gap: 2px; }
.msg-tipo-linha { color: #FFFFFF; font-weight: 400; font-size: 16px; line-height: 1.4; }
.msg-tipo-linha strong { font-weight: 700; }
.msg-tipo-botao { flex: 0 0 auto; display: flex; align-items: center; justify-content: center; min-width: 240px; height: 48px; padding: 0 24px; background-color: #CDE8F8; color: #001730; font-weight: 400; font-size: 18px; text-decoration: none !important; box-sizing: border-box; transition: background-color .2s ease; }
.msg-tipo-botao:hover { background-color: #9CD1EF; color: #001730; }
@media (max-width: 1024px) {
	.msg-tipos { gap: 32px; }
	.msg-tipo-card { flex-direction: column; align-items: flex-start; gap: 24px; padding: 24px; }
	.msg-tipo-info { max-width: 100%; }
	.msg-tipo-sub { margin-bottom: 20px; }
	.msg-tipo-titulo { font-size: 24px; }
	.msg-tipo-botao { width: 100%; min-width: 0; }
}

/* ============================================================
 * Listagem de cursos por tipo [cursos_lista]
 * ============================================================ */
.msg-clista { font-family: 'Montserrat', sans-serif; }
.msg-clista-tabs { display: flex; margin: 0 0 8px 0; }
.msg-clista-tab { flex: 1 1 0; display: flex; align-items: center; justify-content: center; min-height: 44px; padding: 8px 12px; color: #001730; font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 15px; line-height: 1.3; text-align: center; text-decoration: none !important; background-color: transparent; transition: background-color .2s ease, color .2s ease; }
.msg-clista-tab:hover { color: var(--msg-clista-acento, #009CDD); }
.msg-clista-tab.is-active, .msg-clista-tab.is-active:hover { background-color: var(--msg-clista-acento, #009CDD); color: #FFFFFF; }
.msg-clista-rows { display: flex; flex-direction: column; }
.msg-clista-row { padding: 20px 0; border-bottom: 1px solid rgba(0,23,48,0.12); }
.msg-clista-topo { display: flex; align-items: flex-start; justify-content: space-between; gap: 24px; }
.msg-clista-titulo { margin: 0; font-weight: 700; font-size: 20px; line-height: 1.3; }
.msg-clista-titulo a { color: #001730; text-decoration: none; }
.msg-clista-titulo a:hover { color: var(--msg-clista-acento, #009CDD); }
.msg-clista-logos { display: flex; align-items: center; gap: 14px; flex: 0 0 auto; }
.msg-clista-logo { display: block; height: 44px !important; width: auto !important; max-width: 120px; object-fit: contain; }
.msg-clista-baixo { display: flex; align-items: center; justify-content: space-between; gap: 24px; margin-top: 10px; }
.msg-clista-meta { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.msg-clista-chip { display: inline-flex; align-items: center; height: 26px; padding: 0 12px; border: 1px solid var(--msg-clista-acento, #009CDD); border-radius: 13px; color: #001730; font-weight: 600; font-size: 12px; }
.msg-clista-dur { color: #4E5B66; font-weight: 400; font-size: 15px; }
.msg-clista-ver { display: inline-flex; align-items: center; gap: 6px; color: #001730; font-weight: 400; font-size: 15px; text-decoration: none !important; white-space: nowrap; }
.msg-clista-ver:hover { color: var(--msg-clista-acento, #009CDD); }
.msg-clista-pag { display: flex; align-items: center; justify-content: flex-end; gap: 14px; margin-top: 20px; }
.msg-clista-pag-info { color: #001730; font-size: 15px; }
.msg-clista-pag-seta { color: #001730; font-size: 22px; line-height: 1; text-decoration: none !important; padding: 4px 8px; }
.msg-clista-pag-seta:hover { color: var(--msg-clista-acento, #009CDD); }
.msg-clista-pag-seta.is-off { opacity: .3; }
.msg-clista-vazio { color: #4E5B66; font-size: 16px; padding: 24px 0; }
@media (max-width: 768px) {
	.msg-clista-topo { flex-direction: column; gap: 12px; }
	.msg-clista-baixo { flex-direction: column; align-items: flex-start; gap: 10px; }
	.msg-clista-titulo { font-size: 18px; }
	.msg-clista-tabs { flex-wrap: wrap; }
	.msg-clista-tab { flex: 1 1 50%; }
}
.msg-clista { transition: opacity .15s ease; }
.msg-clista.is-loading { opacity: .45; pointer-events: none; }

/* Seccao do titulo mobile do curso (template Single - Curso).
   O estilo original vinha de uma global class do Elementor V4 que nao
   e carregada no contexto do template, por isso fica aqui explicito. */
.elementor-element-b592ac2 {
	background-color: #001730;
	padding: 10px 16px;
	box-sizing: border-box;
}
@media (min-width: 1025px) {
	.elementor-element-b592ac2 { display: none !important; }
}

/* Centrar o titulo mobile do curso.
   O text-align:center no span nao chegava: o container e um e-flexbox (V4) e o
   widget do shortcode e um flex item dimensionado ao conteudo, encostado ao
   inicio. Centramos o proprio flex item e damos-lhe largura total.
   Selector por :has() em vez do ID do elemento, para nao quebrar se o
   container for recriado no editor. */
@media (max-width: 1024px) {
	.e-con:has(.msg-curso-titulo-mobile) {
		justify-content: center;
		align-items: center;
	}
	.e-con:has(.msg-curso-titulo-mobile) > .elementor-widget {
		flex: 1 1 100%;
		min-width: 0;
	}
	.e-con:has(.msg-curso-titulo-mobile) .elementor-shortcode {
		text-align: center;
	}
	.msg-curso-titulo-mobile {
		width: 100%;
		text-align: center;
		text-wrap: balance;
	}
}

/* Cursos ESESFM: a etiqueta da area passa a ter contorno roxo, igual ao da
   fita. Nao ha classe de ESESFM no cartao, por isso identificamos o cartao
   pela presenca da propria fita com :has() - assim nao e preciso mexer no PHP
   nem na marcacao. */
.msg-curso-card:has(.msg-curso-esesfm-ribbon) .msg-curso-area-pill {
	border-color: #3B0764;
}

/* Reparticao das linhas na frase do cartao de tipo.
   O &nbsp; do lado do PHP impede linhas terminadas em preposicao; o text-wrap
   pretty evita ainda a ultima linha com uma so palavra. */
.msg-tipo-sub {
	text-wrap: pretty;
}

/* ============================================================
 * Marca ESESFM: roxo na etiqueta da area, onde quer que apareca
 * ============================================================ */
:root { --msg-esesfm: #3B0764; }
.msg-curso-card--esesfm .msg-curso-area-pill,
.msg-curso-card:has(.msg-curso-esesfm-ribbon) .msg-curso-area-pill,
.msg-clista-row.is-esesfm .msg-clista-chip {
	border-color: var(--msg-esesfm);
}

/* Titulos de seccao sem conteudo ficam vazios (ver titulos condicionais no
   PHP). Esconde-se o widget inteiro, e nao so o texto, para nao sobrar a
   margem inferior do titulo. */
.elementor-widget-heading:has(.elementor-heading-title:empty) { display: none; }
.elementor-heading-title:empty { display: none; }
