/* =========================================================
   Tejo360 Components
   Estilos encapsulados. Tudo vive debaixo de .tejo360-section
   / .t360-* para não colidir com o tema ou o Elementor.
   ========================================================= */

.tejo360-section {
	/* ---- Tokens de marca ---- */
	--t360-orange: #ff5a00;
	--t360-orange-2: #ff8038;
	--t360-orange-deep: #e64900;
	--t360-ink: #15171c;
	--t360-charcoal: #23262e;
	--t360-muted: #6b7280;
	--t360-muted-2: #9aa0ab;
	--t360-line: #e9eaee;
	--t360-bg: #f5f5f6;
	--t360-card: #ffffff;
	--t360-white: #ffffff;

	--t360-radius: 24px;
	--t360-radius-sm: 14px;
	--t360-shadow: 0 22px 55px -26px rgba(21, 23, 28, .30);
	--t360-shadow-good: 0 34px 74px -30px rgba(255, 90, 0, .48);
	--t360-font: "Montserrat", system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;

	font-family: var(--t360-font);
	color: var(--t360-ink);
	-webkit-font-smoothing: antialiased;
	text-rendering: optimizeLegibility;
}

/* Reset defensivo só dentro dos nossos blocos */
.tejo360-section *,
.tejo360-section *::before,
.tejo360-section *::after {
	box-sizing: border-box;
}
.tejo360-section :where(h2, h3, p, ul, li) {
	margin: 0;
	padding: 0;
	list-style: none;
}
/* Alinhamento determinístico (o tema não sobrepõe) */
.tejo360-section {
	text-align: left;
}
.tejo360-section .t360-head,
.tejo360-section .t360-head__title,
.tejo360-section .t360-head__intro,
.tejo360-section .t360-locs__summary,
.tejo360-section .t360-locs__cta,
.tejo360-section .t360-locs__cta-line,
.tejo360-section .t360-why__cta,
.tejo360-section .t360-why__cta-line,
.tejo360-section .t360-why__trust,
.tejo360-section .t360-steps__cta,
.tejo360-section .t360-metrics__title {
	text-align: center;
}
/* Blocos com largura máxima: centrar mesmo contra o tema */
.tejo360-section .t360-locs__cta-line,
.tejo360-section .t360-why__cta-line {
	margin-left: auto;
	margin-right: auto;
}

/* =========================================================
   Secção #3 - Porquê a Tejo360
   ========================================================= */

.t360-why {
	position: relative;
	padding: clamp(56px, 8vw, 104px) 0;
}

.t360-why__inner {
	position: relative;
	max-width: var(--t360-maxw, none);
	margin-inline: auto;
	padding-inline: var(--t360-gutter, 0);
}

/* ---- Cabeçalho ---- */
.t360-why__head {
	max-width: 640px;
	margin: 0 auto clamp(38px, 5vw, 60px);
	text-align: center;
}

.t360-eyebrow {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	font-size: 13px;
	font-weight: 600;
	letter-spacing: .08em;
	text-transform: uppercase;
	color: var(--t360-orange-deep);
	margin-bottom: 16px;
}
.t360-eyebrow__dot {
	width: 8px;
	height: 8px;
	border-radius: 50%;
	background: var(--t360-orange);
	box-shadow: 0 0 0 4px rgba(255, 90, 0, .16);
}

.t360-why__title {
	font-size: clamp(28px, 4.4vw, 46px);
	line-height: 1.08;
	font-weight: 800;
	letter-spacing: -.02em;
	color: var(--t360-ink);
}

.t360-why__intro {
	margin-top: 16px;
	font-size: clamp(15px, 1.5vw, 17px);
	line-height: 1.6;
	font-weight: 400;
	color: var(--t360-muted);
}

/* ---- Grelha comparativa ---- */
.t360-why__grid {
	display: grid;
	grid-template-columns: 1fr auto 1fr;
	align-items: stretch;
	gap: 20px;
}

/* Cartão base */
.t360-card {
	position: relative;
	display: flex;
	flex-direction: column;
	background: var(--t360-card, #ffffff);
	border-radius: var(--t360-radius);
	padding: clamp(24px, 3vw, 34px);
	animation: t360-rise .6s cubic-bezier(.22, .61, .36, 1) both;
}
.t360-card--bad {
	border: 1px solid var(--t360-line);
	box-shadow: 0 10px 30px -22px rgba(21, 23, 28, .35);
}
.t360-card--good {
	border: 1.5px solid rgba(255, 90, 0, .55);
	box-shadow: var(--t360-shadow-good);
	overflow: hidden;
	animation-delay: .08s;
}
/* Barra de acento no topo do cartão vencedor (dobra com os cantos) */
.t360-card--good::before {
	content: "";
	position: absolute;
	top: 0;
	left: 0;
	right: 0;
	height: 5px;
	z-index: 1;
	background: linear-gradient(90deg, var(--t360-orange), var(--t360-orange-2));
}
/* Wrapper que segura o selo fora do recorte do cartão */
.t360-card-wrap {
	position: relative;
	display: flex;
	flex-direction: column;
}
.t360-card-wrap > .t360-card {
	flex: 1;
}

.t360-card__badge {
	position: absolute;
	top: -15px;
	right: 22px;
	display: inline-flex;
	align-items: center;
	gap: 7px;
	padding: 8px 14px 8px 10px;
	font-size: 12.5px;
	font-weight: 700;
	color: var(--t360-white, #ffffff);
	background: var(--t360-ink);
	border-radius: 100px;
	box-shadow: 0 10px 22px -10px rgba(21, 23, 28, .6);
}
.t360-card__badge svg {
	width: 18px;
	height: 18px;
	color: var(--t360-orange);
}
.t360-card__badge-img {
	width: 18px;
	height: 18px;
	object-fit: contain;
	display: block;
}

.t360-card__head {
	padding-bottom: 20px;
	margin-bottom: 8px;
	border-bottom: 1px solid var(--t360-line);
}
.t360-card__kicker {
	display: inline-block;
	font-size: 12px;
	font-weight: 600;
	letter-spacing: .06em;
	text-transform: uppercase;
	color: var(--t360-muted-2);
	margin-bottom: 8px;
}
.t360-card__kicker--good {
	color: var(--t360-orange-deep);
}
.t360-card__title {
	font-size: clamp(20px, 2.4vw, 24px);
	font-weight: 700;
	letter-spacing: -.01em;
	color: var(--t360-ink);
}
.t360-card--bad .t360-card__title {
	color: #4b4f57;
}
.t360-card__sub {
	margin-top: 4px;
	font-size: 14px;
	color: var(--t360-muted);
}

.t360-card__list {
	display: flex;
	flex-direction: column;
}

.t360-row {
	display: flex;
	align-items: flex-start;
	gap: 14px;
	padding: 15px 0;
	border-bottom: 1px solid var(--t360-line);
}
.t360-row:last-child {
	border-bottom: 0;
	padding-bottom: 0;
}

.t360-row__ic {
	flex: 0 0 auto;
	width: 26px;
	height: 26px;
	border-radius: 50%;
	display: grid;
	place-items: center;
	margin-top: 1px;
}
.t360-row__ic svg {
	width: 15px;
	height: 15px;
}
.t360-row__ic--bad {
	background: #eef0f3;
	color: var(--t360-muted-2);
}
.t360-row__ic--good {
	background: rgba(255, 90, 0, .12);
	color: var(--t360-orange-deep);
}

.t360-row__txt {
	display: flex;
	flex-direction: column;
	gap: 2px;
}
.t360-row__label {
	font-size: 12.5px;
	font-weight: 500;
	color: var(--t360-muted);
	letter-spacing: .01em;
}
.t360-row__value {
	font-size: 15.5px;
	font-weight: 600;
	line-height: 1.35;
	color: var(--t360-ink);
}
.t360-card--bad .t360-row__value {
	font-weight: 500;
	color: #5a5f68;
}

/* ---- Separador VS ---- */
.t360-vs {
	align-self: center;
	display: grid;
	place-items: center;
	width: 54px;
	height: 54px;
	border-radius: 50%;
	background: var(--t360-ink);
	color: var(--t360-white, #ffffff);
	font-weight: 700;
	font-size: 15px;
	letter-spacing: .02em;
	box-shadow: 0 14px 26px -12px rgba(21, 23, 28, .55);
}
.t360-vs span {
	transform: translateY(-1px);
}

/* ---- CTA ---- */
.t360-why__cta {
	margin-top: clamp(34px, 4.5vw, 52px);
	text-align: center;
}
.t360-why__cta-line {
	max-width: 560px;
	margin: 0 auto 20px;
	font-size: clamp(16px, 1.9vw, 19px);
	font-weight: 600;
	line-height: 1.5;
	letter-spacing: -.01em;
	color: var(--t360-ink);
}
/* Contraste: branco sobre o laranja da marca da 3,13:1, abaixo dos 4,5:1
   que a WCAG exige para texto normal. Como a norma so pede 3,0:1 a partir de
   18,66px em negrito, sobe-se o texto em vez de escurecer o laranja - o
   botao continua com ~49px de altura (contra 48) porque se compensa no
   padding, e a cor da marca fica intacta.
   Quem preferir o caminho inverso tem a opcao "Contraste dos botoes" no
   painel, que escurece o laranja e devolve o texto a 16px. */
.t360-btn {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	padding: 16px 26px;
	font-family: var(--t360-font);
	/* Tamanho de desenho. O aumento para 19px - que e o que faz o botao passar
	   no limiar de contraste - e injectado pelo plugin quando a opcao
	   "Contraste dos botoes" esta ligada. Ver tejo360_enqueue_assets(). */
	font-size: 16px;
	font-weight: 600;
	color: var(--t360-white, #ffffff);
	text-decoration: none;
	background: var(--t360-orange);
	border-radius: 100px;
	box-shadow: 0 16px 30px -12px rgba(255, 90, 0, .55);
	transition: transform .18s ease, background .18s ease, box-shadow .18s ease;
}
/* --- Bloco de topo sempre visivel ---------------------------------------
   O Elementor poe "elementor-invisible" (opacity:0) nos elementos com
   animacao de entrada e so os revela quando o JS corre. Num bloco acima da
   dobra isso domina o LCP: neste site a imagem carregava em 90 ms e o bloco
   so aparecia 3.170 ms depois.

   A classe .t360-lcp-hero e posta pelo plugin no primeiro contentor. Esta
   regra vive AQUI, no ficheiro, e nao injectada inline: um bloco inline nao
   sobrevive de forma fiavel as reescritas do WP Rocket - foi o que fez esta
   correccao nao pegar da primeira vez. */
.t360-lcp-hero.elementor-invisible,
.t360-lcp-hero .elementor-invisible,
body.t360-lcp-unhide [id="início"].elementor-invisible,
body.t360-lcp-unhide #inicio.elementor-invisible {
	opacity: 1 !important;
	animation: none !important;
	transform: none !important;
}

/* --- Correcao de contraste, ligada pela classe no <body> -----------------
   Branco sobre o laranja da marca da 3,13:1, abaixo dos 4,5:1 que a WCAG pede
   para texto normal. Acima de 18,66px em negrito o limiar desce para 3,0:1 e
   o laranja passa - por isso a correccao e no TAMANHO e nao na cor.

   Esta aqui, no ficheiro, e nao injectada inline: um bloco inline nao
   sobrevive de forma fiavel as reescritas do WP Rocket, e era isso que fazia
   o aviso voltar so com a cache ligada. */
body.t360-btn-a11y .t360-btn,
body.t360-btn-a11y button.t360-btn,
body.t360-btn-a11y a.t360-btn {
	font-size: max(19px, 1.19rem);
	font-weight: 700;
	padding: 15px 26px;
}
/* #c75300 e o laranja mais claro que chega aos 4,5:1 com texto branco. */
body.t360-btn-dark .t360-btn,
body.t360-btn-dark button.t360-btn,
body.t360-btn-dark a.t360-btn { background: #c75300; }
body.t360-btn-dark .t360-btn:hover { background: #a84600; }

.t360-btn__ic {
	display: grid;
	place-items: center;
	width: 22px;
	height: 22px;
	transition: transform .18s ease;
}
.t360-btn__ic svg {
	width: 18px;
	height: 18px;
}
.t360-btn:hover {
	background: var(--t360-orange-deep);
	transform: translateY(-2px);
	box-shadow: 0 22px 40px -12px rgba(255, 90, 0, .6);
	color: var(--t360-white, #ffffff);
}
.t360-btn:hover .t360-btn__ic {
	transform: translate(2px, -2px);
}
.t360-btn:focus-visible {
	outline: 3px solid var(--t360-ink);
	outline-offset: 3px;
}

.t360-why__trust {
	margin-top: 16px;
	font-size: 13.5px;
	font-weight: 500;
	color: var(--t360-muted);
}

/* ---- Animação de entrada ---- */
@keyframes t360-rise {
	from { opacity: .001; transform: translateY(16px); }
	to   { opacity: 1;    transform: translateY(0); }
}

/* =========================================================
   Responsivo
   ========================================================= */
@media (max-width: 900px) {
	.t360-why__grid {
		grid-template-columns: 1fr;
		gap: 16px;
	}
	.t360-vs {
		width: 46px;
		height: 46px;
		font-size: 14px;
		margin: 2px auto;
	}
	.t360-card--good {
		order: 0; /* mantém problema -> solução */
	}
}

@media (max-width: 480px) {
	.t360-card__badge {
		right: 16px;
		top: -14px;
	}
}

/* Acessibilidade: respeitar preferências de movimento */
@media (prefers-reduced-motion: reduce) {
	.t360-card {
		animation: none;
	}
	.t360-btn,
	.t360-btn__ic {
		transition: none;
	}
}


/* =========================================================
   Cabeçalho partilhado (usado por #2, #4, #5, #9)
   ========================================================= */
.t360-head {
	max-width: 640px;
	margin: 0 auto clamp(38px, 5vw, 58px);
	text-align: center;
}
.t360-head__title {
	font-size: clamp(28px, 4.4vw, 46px);
	line-height: 1.08;
	font-weight: 800;
	letter-spacing: -.02em;
	color: var(--t360-ink);
}
.t360-head__intro {
	margin-top: 16px;
	font-size: clamp(15px, 1.5vw, 17px);
	line-height: 1.6;
	color: var(--t360-muted);
}

/* =========================================================
   Secção #2 - Como funciona (Percurso 360)
   ========================================================= */
.t360-steps {
	position: relative;
	padding: clamp(56px, 8vw, 104px) 0;
}
.t360-steps__inner {
	max-width: var(--t360-maxw, none);
	margin-inline: auto;
	padding-inline: var(--t360-gutter, 0);
}

.t360-steps__track {
	position: relative;
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 24px;
}

/* Trilho + preenchimento animado */
.t360-steps__line {
	position: absolute;
	top: 36px;
	left: 12.5%;
	width: 75%;
	height: 3px;
	background: var(--t360-line);
	border-radius: 3px;
	overflow: hidden;
	z-index: 0;
}
.t360-steps__line-fill {
	position: absolute;
	inset: 0;
	width: 0;
	background: linear-gradient(90deg, var(--t360-orange), var(--t360-orange-2));
	transition: width 1.2s cubic-bezier(.4, 0, .2, 1);
}
.t360-steps.t360-inview .t360-steps__line-fill {
	width: 100%;
}

.t360-step {
	position: relative;
	z-index: 1;
	text-align: center;
}
.t360-step__node {
	position: relative;
	width: 72px;
	height: 72px;
	margin: 0 auto 20px;
	border-radius: 50%;
	background: var(--t360-white, #ffffff);
	border: 1.5px solid var(--t360-line);
	display: grid;
	place-items: center;
	transition: border-color .22s ease, transform .22s ease, box-shadow .22s ease;
}
.t360-step__node svg {
	width: 30px;
	height: 30px;
	color: var(--t360-ink);
	transition: color .22s ease;
}
.t360-step__num {
	position: absolute;
	top: -7px;
	right: -7px;
	min-width: 25px;
	height: 25px;
	padding: 0 7px;
	border-radius: 100px;
	background: var(--t360-orange);
	color: var(--t360-white, #ffffff);
	font-size: 12px;
	font-weight: 700;
	display: grid;
	place-items: center;
	box-shadow: 0 6px 14px -6px rgba(255, 90, 0, .7);
}
.t360-step:hover .t360-step__node {
	border-color: var(--t360-orange);
	transform: translateY(-3px);
	box-shadow: 0 18px 34px -20px rgba(255, 90, 0, .6);
}
.t360-step:hover .t360-step__node svg {
	color: var(--t360-orange-deep);
}

.t360-step__body {
	padding: 0 4px;
}
.t360-step__title {
	font-size: 17px;
	font-weight: 700;
	letter-spacing: -.01em;
	color: var(--t360-ink);
	margin-bottom: 7px;
}
.t360-step__desc {
	font-size: 14px;
	line-height: 1.55;
	color: var(--t360-muted);
}

.t360-steps__cta {
	margin-top: clamp(36px, 5vw, 56px);
	text-align: center;
}

/* Entrada dos passos (escalonada) - só quando o JS está ativo */
.t360-js .t360-steps .t360-step {
	opacity: .001;
	transform: translateY(16px);
}
.t360-steps.t360-inview .t360-step {
	animation: t360-rise .55s cubic-bezier(.22, .61, .36, 1) forwards;
}
.t360-steps.t360-inview .t360-step:nth-child(2) { animation-delay: .10s; }
.t360-steps.t360-inview .t360-step:nth-child(3) { animation-delay: .20s; }
.t360-steps.t360-inview .t360-step:nth-child(4) { animation-delay: .30s; }

@media (max-width: 780px) {
	.t360-steps__track {
		grid-template-columns: 1fr;
		gap: 4px;
		max-width: 460px;
		margin: 0 auto;
	}
	.t360-step {
		display: grid;
		grid-template-columns: 72px 1fr;
		gap: 18px;
		align-items: start;
		text-align: left;
		padding: 12px 0;
	}
	.t360-step__node {
		margin: 0;
	}
	.t360-step__body {
		padding-top: 8px;
	}
	.t360-steps__line {
		top: 44px;
		bottom: 44px;
		left: 34px;
		width: 3px;
		height: auto;
		right: auto;
	}
	.t360-steps__line-fill {
		width: 3px;
		height: 0;
		transition: height 1.2s cubic-bezier(.4, 0, .2, 1);
	}
	.t360-steps.t360-inview .t360-steps__line-fill {
		width: 3px;
		height: 100%;
	}
}

/* Sem JS: mostra tudo (fallback já coberto pelo script); reduz movimento */
@media (prefers-reduced-motion: reduce) {
	.t360-steps .t360-step {
		opacity: 1;
		transform: none;
		animation: none;
	}
	.t360-steps__line-fill {
		transition: none;
	}
	.t360-step__node {
		transition: none;
	}
}


/* =========================================================
   Secção #4 - Quando compramos (grelha de situações)
   ========================================================= */
.t360-sits {
	position: relative;
	padding: clamp(56px, 8vw, 104px) 0;
}
.t360-sits__inner {
	max-width: var(--t360-maxw, none);
	margin-inline: auto;
	padding-inline: var(--t360-gutter, 0);
}

.t360-sits__grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(230px, 1fr));
	gap: 16px;
}

.t360-sit {
	position: relative;
	display: block;
	background: var(--t360-white, #ffffff);
	border: 1px solid var(--t360-line);
	border-radius: 16px;
	padding: 24px 22px;
	text-decoration: none;
	transition: transform .22s ease, border-color .22s ease, box-shadow .22s ease;
}
.t360-sit__ic {
	display: grid;
	place-items: center;
	width: 46px;
	height: 46px;
	border-radius: 12px;
	background: #eef0f3;
	color: var(--t360-ink);
	margin-bottom: 16px;
	transition: background .22s ease, color .22s ease;
}
.t360-sit__ic svg {
	width: 24px;
	height: 24px;
}
.t360-sit__title {
	font-size: 16.5px;
	font-weight: 700;
	letter-spacing: -.01em;
	color: var(--t360-ink);
	margin-bottom: 7px;
}
.t360-sit__desc {
	font-size: 13.5px;
	line-height: 1.55;
	color: var(--t360-muted);
}

.t360-sit:hover {
	transform: translateY(-4px);
	border-color: rgba(255, 90, 0, .45);
	box-shadow: 0 22px 40px -26px rgba(21, 23, 28, .4);
}
.t360-sit:hover .t360-sit__ic {
	background: var(--t360-orange);
	color: var(--t360-white, #ffffff);
}

/* Tile de conversão */
.t360-sit--cta {
	background: rgba(255, 90, 0, .06);
	border: 1.5px solid rgba(255, 90, 0, .5);
}
.t360-sit--cta .t360-sit__ic {
	background: var(--t360-orange);
	color: var(--t360-white, #ffffff);
}
.t360-sit--cta .t360-sit__desc {
	color: var(--t360-orange-deep);
	font-weight: 500;
}
.t360-sit--cta:hover {
	background: var(--t360-orange);
	border-color: var(--t360-orange);
}
.t360-sit--cta:hover .t360-sit__ic {
	background: var(--t360-white, #ffffff);
	color: var(--t360-orange);
}
.t360-sit--cta:hover .t360-sit__title,
.t360-sit--cta:hover .t360-sit__desc {
	color: var(--t360-white, #ffffff);
}
.t360-sit--cta:focus-visible {
	outline: 3px solid var(--t360-ink);
	outline-offset: 3px;
}

/* Entrada escalonada (só com JS) */
.t360-js .t360-sits .t360-sit {
	opacity: .001;
	transform: translateY(16px);
}
.t360-sits.t360-inview .t360-sit {
	animation: t360-rise .5s cubic-bezier(.22, .61, .36, 1) forwards;
}
.t360-sits.t360-inview .t360-sit:nth-child(2) { animation-delay: .05s; }
.t360-sits.t360-inview .t360-sit:nth-child(3) { animation-delay: .10s; }
.t360-sits.t360-inview .t360-sit:nth-child(4) { animation-delay: .15s; }
.t360-sits.t360-inview .t360-sit:nth-child(5) { animation-delay: .20s; }
.t360-sits.t360-inview .t360-sit:nth-child(6) { animation-delay: .25s; }
.t360-sits.t360-inview .t360-sit:nth-child(7) { animation-delay: .30s; }
.t360-sits.t360-inview .t360-sit:nth-child(8) { animation-delay: .35s; }
.t360-sits.t360-inview .t360-sit:nth-child(9) { animation-delay: .40s; }

@media (max-width: 560px) {
	.t360-sits__grid {
		grid-template-columns: repeat(2, 1fr);
		gap: 12px;
	}
	.t360-sit {
		padding: 18px 16px;
	}
	.t360-sit__desc {
		font-size: 13px;
	}
}

@media (prefers-reduced-motion: reduce) {
	.t360-js .t360-sits .t360-sit {
		opacity: 1;
		transform: none;
		animation: none;
	}
	.t360-sit,
	.t360-sit__ic {
		transition: none;
	}
}


/* =========================================================
   Secção #6 - Onde atuamos (Localizações)
   ========================================================= */
.t360-locs {
	position: relative;
	padding: clamp(56px, 8vw, 104px) 0;
}
.t360-locs__inner {
	position: relative;
	max-width: var(--t360-maxw, none);
	margin-inline: auto;
	padding-inline: var(--t360-gutter, 0);
}

.t360-locs__summary {
	display: inline-block;
	margin-top: 18px;
	padding: 8px 16px;
	font-size: 13.5px;
	font-weight: 500;
	color: var(--t360-orange-deep);
	background: rgba(255, 90, 0, .08);
	border-radius: 100px;
}

.t360-locs__grid {
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	gap: 18px;
}

.t360-loc {
	background: var(--t360-bg);
	border: 1px solid transparent;
	border-radius: 20px;
	padding: 26px 26px 24px;
	transition: background .22s ease, border-color .22s ease, transform .22s ease, box-shadow .22s ease;
}
.t360-loc__head {
	display: flex;
	align-items: center;
	gap: 12px;
	margin-bottom: 18px;
}
.t360-loc__mark {
	display: grid;
	place-items: center;
	width: 40px;
	height: 40px;
	color: var(--t360-orange);
	flex: 0 0 auto;
}
.t360-loc__mark svg {
	width: 26px;
	height: 26px;
}
.t360-loc__name {
	font-size: 21px;
	font-weight: 800;
	letter-spacing: -.01em;
	color: var(--t360-ink);
}
.t360-loc__chips {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
}
.t360-chip {
	display: inline-flex;
	align-items: center;
	padding: 7px 13px;
	font-size: 13px;
	font-weight: 500;
	color: var(--t360-ink);
	background: var(--t360-white, #ffffff);
	border: 1px solid var(--t360-line);
	border-radius: 100px;
	transition: border-color .22s ease;
}
.t360-chip--more {
	color: var(--t360-orange-deep);
	background: rgba(255, 90, 0, .08);
	border-color: transparent;
	font-weight: 600;
}
.t360-loc:hover {
	background: var(--t360-white, #ffffff);
	border-color: rgba(255, 90, 0, .4);
	transform: translateY(-4px);
	box-shadow: 0 26px 46px -30px rgba(21, 23, 28, .45);
}
.t360-loc:hover .t360-chip {
	border-color: var(--t360-line);
}

.t360-locs__cta {
	margin-top: clamp(34px, 4.5vw, 52px);
	text-align: center;
}
.t360-locs__cta-line {
	max-width: 560px;
	margin: 0 auto 20px;
	font-size: clamp(15px, 1.7vw, 18px);
	font-weight: 600;
	line-height: 1.5;
	letter-spacing: -.01em;
	color: var(--t360-ink);
}

/* Entrada escalonada (só com JS) */
.t360-js .t360-locs .t360-loc {
	opacity: .001;
	transform: translateY(16px);
}
.t360-locs.t360-inview .t360-loc {
	animation: t360-rise .55s cubic-bezier(.22, .61, .36, 1) forwards;
}
.t360-locs.t360-inview .t360-loc:nth-child(2) { animation-delay: .08s; }
.t360-locs.t360-inview .t360-loc:nth-child(3) { animation-delay: .16s; }
.t360-locs.t360-inview .t360-loc:nth-child(4) { animation-delay: .24s; }

@media (max-width: 720px) {
	.t360-locs__grid {
		grid-template-columns: 1fr;
	}
}

@media (prefers-reduced-motion: reduce) {
	.t360-js .t360-locs .t360-loc {
		opacity: 1;
		transform: none;
		animation: none;
	}
	.t360-loc,
	.t360-chip {
		transition: none;
	}
}


/* =========================================================
   Secção #9 - Métricas de confiança
   ========================================================= */
.t360-metrics {
	position: relative;
	padding: clamp(48px, 6.5vw, 82px) 0;
}
.t360-metrics__inner {
	position: relative;
	max-width: var(--t360-maxw, none);
	margin-inline: auto;
	padding-inline: var(--t360-gutter, 0);
}
.t360-metrics__title {
	text-align: center;
	font-size: clamp(20px, 2.6vw, 26px);
	font-weight: 700;
	letter-spacing: -.01em;
	color: var(--t360-ink);
	margin-bottom: clamp(30px, 3.5vw, 42px);
}

.t360-metrics__row {
	position: relative;
	display: grid;
	grid-template-columns: repeat(5, 1fr);
	gap: 24px;
}
.t360-metric {
	display: flex;
	flex-direction: column;
	align-items: center;
	text-align: center;
	padding: 4px 10px;
}
.t360-metric__ic {
	display: grid;
	place-items: center;
	width: 40px;
	height: 40px;
	margin-bottom: 14px;
	border-radius: 11px;
	background: rgba(255, 90, 0, .14);
	color: var(--t360-orange-deep);
}
.t360-metric__ic svg {
	width: 22px;
	height: 22px;
}
.t360-metric__num {
	display: block;
	font-size: clamp(40px, 5.2vw, 62px);
	font-weight: 800;
	line-height: .95;
	letter-spacing: -.03em;
	font-variant-numeric: tabular-nums;
	background: linear-gradient(180deg, #ff8a4a 0%, var(--t360-orange) 60%, #ec4d00 100%);
	-webkit-background-clip: text;
	background-clip: text;
	color: transparent;
}
.t360-metric__accent {
	display: block;
	width: 0;
	height: 3px;
	margin: 15px auto 0;
	border-radius: 3px;
	background: linear-gradient(90deg, var(--t360-orange), var(--t360-orange-2));
	transition: width .7s cubic-bezier(.22, .61, .36, 1);
}
.t360-metrics.t360-inview .t360-metric__accent {
	width: 36px;
}
.t360-metrics.t360-inview .t360-metric:nth-child(2) .t360-metric__accent { transition-delay: .08s; }
.t360-metrics.t360-inview .t360-metric:nth-child(3) .t360-metric__accent { transition-delay: .16s; }
.t360-metrics.t360-inview .t360-metric:nth-child(4) .t360-metric__accent { transition-delay: .24s; }
.t360-metrics.t360-inview .t360-metric:nth-child(5) .t360-metric__accent { transition-delay: .32s; }
.t360-metric__label {
	display: block;
	margin-top: 13px;
	font-size: 13.5px;
	font-weight: 500;
	line-height: 1.4;
	color: var(--t360-muted);
}

@media (min-width: 861px) {
	.t360-metric + .t360-metric {
		border-left: 1px solid rgba(21, 23, 28, .1);
	}
}

/* ---- Variante escura (para fundo escuro definido no Elementor) ---- */
.t360-metrics--dark .t360-metrics__title {
	color: var(--t360-white, #ffffff);
}
.t360-metrics--dark .t360-metric__ic {
	background: rgba(255, 90, 0, .16);
	color: var(--t360-orange-2);
}
.t360-metrics--dark .t360-metric__label {
	color: #c2c6cf;
}
.t360-metrics--dark .t360-metric + .t360-metric {
	border-left-color: rgba(255, 255, 255, .1);
}

/* ---- Variante laranja (para fundo laranja definido no Elementor) ---- */
.t360-metrics--orange .t360-metrics__title {
	color: var(--t360-white, #ffffff);
}
.t360-metrics--orange .t360-metric__ic {
	background: rgba(255, 255, 255, .18);
	color: var(--t360-white, #ffffff);
}
.t360-metrics--orange .t360-metric__num {
	background: linear-gradient(180deg, #ffffff 0%, #fff1e8 100%);
	-webkit-background-clip: text;
	background-clip: text;
	color: transparent;
}
.t360-metrics--orange .t360-metric__accent {
	background: var(--t360-white, #ffffff);
}
.t360-metrics--orange .t360-metric__label {
	color: rgba(255, 255, 255, .92);
}
.t360-metrics--orange .t360-metric + .t360-metric {
	border-left-color: rgba(255, 255, 255, .22);
}

@media (max-width: 860px) {
	.t360-metrics__row {
		grid-template-columns: repeat(3, 1fr);
		gap: 34px 16px;
	}
}
@media (max-width: 520px) {
	.t360-metrics__row {
		grid-template-columns: repeat(2, 1fr);
	}
	.t360-metric:last-child {
		grid-column: 1 / -1;
	}
}

@media (prefers-reduced-motion: reduce) {
	.t360-metric__accent {
		transition: none;
		width: 36px;
	}
}


/* =========================================================
   Secção #6 - variante em linha única (layout="row")
   ========================================================= */
.t360-locs--row .t360-locs__grid {
	grid-template-columns: repeat(4, 1fr);
	gap: 0;
}
.t360-locs--row .t360-loc {
	background: transparent;
	border: 0;
	border-radius: 0;
	padding: 6px 24px;
	text-align: center;
}
.t360-locs--row .t360-loc__head {
	flex-direction: column;
	gap: 12px;
	margin-bottom: 12px;
}
.t360-locs--row .t360-loc__mark {
	width: 40px;
	height: 40px;
}
.t360-locs--row .t360-loc__mark svg {
	width: 30px;
	height: 30px;
}
.t360-locs--row .t360-loc__line {
	font-size: 12.5px;
	line-height: 1.6;
	color: var(--t360-muted);
}
.t360-locs--row .t360-loc__more {
	color: var(--t360-orange-deep);
	font-weight: 600;
}
.t360-locs--row .t360-loc:hover {
	background: transparent;
	transform: none;
	box-shadow: none;
}
.t360-locs--row .t360-loc:hover .t360-loc__name {
	color: var(--t360-orange-deep);
}

@media (min-width: 861px) {
	.t360-locs--row .t360-loc + .t360-loc {
		border-left: 1px solid var(--t360-line);
	}
}
@media (max-width: 860px) {
	.t360-locs--row .t360-locs__grid {
		grid-template-columns: repeat(2, 1fr);
		gap: 34px 16px;
	}
	.t360-locs--row .t360-loc {
		padding: 0;
	}
}


/* =========================================================
   Secção #6 - Opção 2: cartões imersivos (layout="cards")
   ========================================================= */
.t360-locs--cards .t360-locs__grid {
	grid-template-columns: repeat(4, 1fr);
	gap: 18px;
}
.t360-loc-card {
	position: relative;
	overflow: hidden;
	background: linear-gradient(165deg, #2c313c 0%, #1b1e26 100%);
	border-radius: 24px;
	padding: 28px 24px 26px;
	min-height: 320px;
	transition: transform .25s ease, box-shadow .25s ease;
}
.t360-loc-card::after {
	content: attr(data-n);
	position: absolute;
	top: -16px;
	right: 8px;
	font-size: 132px;
	font-weight: 800;
	line-height: 1;
	color: transparent;
	-webkit-text-stroke: 1.5px rgba(255, 90, 0, .28);
	pointer-events: none;
	transition: color .3s ease, -webkit-text-stroke-color .3s ease;
}
.t360-loc-card::before {
	content: "";
	position: absolute;
	top: 0;
	left: 0;
	right: 0;
	height: 4px;
	background: linear-gradient(90deg, var(--t360-orange), var(--t360-orange-2));
	transform: scaleX(0);
	transform-origin: left;
	transition: transform .3s ease;
}
.t360-loc-card__pin {
	display: block;
	position: relative;
	z-index: 1;
	color: var(--t360-orange);
}
.t360-loc-card__pin svg {
	width: 32px;
	height: 32px;
}
.t360-loc-card__name {
	position: relative;
	z-index: 1;
	margin-top: 14px;
	font-size: 25px;
	font-weight: 800;
	letter-spacing: -.01em;
	color: var(--t360-white, #ffffff);
}
.t360-loc-card__chips {
	position: relative;
	z-index: 1;
	margin-top: 16px;
	display: flex;
	flex-wrap: wrap;
	gap: 7px;
}
.t360-loc-card__chip {
	font-size: 12px;
	padding: 6px 11px;
	border-radius: 100px;
	background: rgba(255, 255, 255, .09);
	color: #d3d6dc;
}
.t360-loc-card:hover {
	transform: translateY(-8px);
	box-shadow: 0 46px 64px -34px rgba(0, 0, 0, .65);
}
.t360-loc-card:hover::before {
	transform: scaleX(1);
}
.t360-loc-card:hover::after {
	color: rgba(255, 90, 0, .10);
	-webkit-text-stroke-color: var(--t360-orange);
}
/* Entrada escalonada (só com JS) */
.t360-js .t360-locs--cards .t360-loc-card {
	opacity: .001;
	transform: translateY(16px);
}
.t360-locs--cards.t360-inview .t360-loc-card {
	animation: t360-rise .55s cubic-bezier(.22, .61, .36, 1) forwards;
}
.t360-locs--cards.t360-inview .t360-loc-card:nth-child(2) { animation-delay: .08s; }
.t360-locs--cards.t360-inview .t360-loc-card:nth-child(3) { animation-delay: .16s; }
.t360-locs--cards.t360-inview .t360-loc-card:nth-child(4) { animation-delay: .24s; }

@media (max-width: 860px) {
	.t360-locs--cards .t360-locs__grid {
		grid-template-columns: repeat(2, 1fr);
	}
}
@media (max-width: 520px) {
	.t360-locs--cards .t360-locs__grid {
		grid-template-columns: 1fr;
	}
}

/* =========================================================
   Secção #6 - Opção 3: painéis expansíveis (layout="panels")
   ========================================================= */
.t360-locs--panels .t360-locs__grid {
	display: flex;
	gap: 12px;
	height: 440px;
}
.t360-loc-panel {
	position: relative;
	flex: 1;
	min-width: 0;
	border-radius: 22px;
	overflow: hidden;
	color: #fff;
	display: flex;
	flex-direction: column;
	justify-content: flex-end;
	padding: 26px;
	transition: flex .55s cubic-bezier(.22, .61, .36, 1);
}
.t360-loc-panel:nth-child(odd) {
	background: linear-gradient(155deg, #ff7d33 0%, #e64500 100%);
}
.t360-loc-panel:nth-child(even) {
	background: linear-gradient(155deg, #2c313c 0%, #191c23 100%);
}
.t360-loc-panel:hover,
.t360-loc-panel:focus-within {
	flex: 2.8;
}
.t360-loc-panel__rings {
	position: absolute;
	top: -40%;
	right: -30%;
	width: 320px;
	height: 320px;
	border-radius: 50%;
	background: repeating-radial-gradient(circle at center,
		rgba(255, 255, 255, .10) 0 1.5px, transparent 1.5px 40px);
	-webkit-mask: radial-gradient(circle at center, #000 0 45%, transparent 62%);
	mask: radial-gradient(circle at center, #000 0 45%, transparent 62%);
	pointer-events: none;
}
.t360-loc-panel__num {
	position: absolute;
	top: 22px;
	right: 24px;
	font-size: 15px;
	font-weight: 800;
	opacity: .55;
}
.t360-loc-panel__pin {
	display: block;
	color: #fff;
}
.t360-loc-panel__pin svg {
	width: 32px;
	height: 32px;
}
.t360-loc-panel__name {
	margin-top: 10px;
	font-size: 26px;
	font-weight: 800;
	letter-spacing: -.01em;
	transition: font-size .4s ease;
}
.t360-loc-panel__con {
	margin-top: 2px;
	max-height: 0;
	opacity: 0;
	overflow: hidden;
	display: flex;
	flex-wrap: wrap;
	gap: 6px 10px;
	transition: max-height .55s ease, opacity .4s ease, margin-top .4s ease;
}
.t360-loc-panel__con span {
	font-size: 13px;
	font-weight: 500;
	color: rgba(255, 255, 255, .92);
	white-space: nowrap;
}
.t360-loc-panel:hover .t360-loc-panel__con,
.t360-loc-panel:focus-within .t360-loc-panel__con {
	max-height: 160px;
	opacity: 1;
	margin-top: 12px;
}
.t360-loc-panel:hover .t360-loc-panel__name,
.t360-loc-panel:focus-within .t360-loc-panel__name {
	font-size: 30px;
}

@media (max-width: 860px) {
	.t360-locs--panels .t360-locs__grid {
		flex-direction: column;
		height: auto;
	}
	.t360-loc-panel {
		flex: none;
		min-height: 150px;
	}
	.t360-loc-panel__con {
		max-height: none;
		opacity: 1;
		margin-top: 12px;
	}
}
@media (prefers-reduced-motion: reduce) {
	.t360-loc-panel,
	.t360-loc-panel__con,
	.t360-loc-panel__name,
	.t360-loc-card {
		transition: none;
	}
	.t360-js .t360-locs--cards .t360-loc-card {
		opacity: 1;
		transform: none;
		animation: none;
	}
}


/* =========================================================
   Secção #6 - layout="beacon" (row com halo + pulsação)
   ========================================================= */
.t360-locs--beacon .t360-locs__grid {
	grid-template-columns: repeat(4, 1fr);
	gap: 0;
}
.t360-locs--beacon .t360-loc {
	background: transparent;
	border: 0;
	border-radius: 0;
	padding: 8px 24px;
	text-align: center;
	transition: transform .28s cubic-bezier(.22, .61, .36, 1);
}
.t360-loc__pinwrap {
	position: relative;
	width: 64px;
	height: 64px;
	margin: 0 auto 14px;
	display: grid;
	place-items: center;
}
.t360-loc__halo {
	position: absolute;
	width: 42px;
	height: 42px;
	border-radius: 50%;
	border: 1.5px solid rgba(255, 90, 0, .22);
	transition: border-color .28s ease;
}
.t360-loc__halo::before {
	content: "";
	position: absolute;
	inset: -9px;
	border-radius: 50%;
	border: 1.5px solid rgba(255, 90, 0, .12);
	transition: border-color .28s ease;
}
.t360-loc__halo::after {
	content: "";
	position: absolute;
	inset: 0;
	border-radius: 50%;
	border: 2px solid rgba(255, 90, 0, .45);
	animation: t360-beacon 3.2s ease-out infinite;
}
.t360-locs--beacon .t360-loc:nth-child(2) .t360-loc__halo::after { animation-delay: .5s; }
.t360-locs--beacon .t360-loc:nth-child(3) .t360-loc__halo::after { animation-delay: 1s; }
.t360-locs--beacon .t360-loc:nth-child(4) .t360-loc__halo::after { animation-delay: 1.5s; }
@keyframes t360-beacon {
	0%   { transform: scale(.7); opacity: .55; }
	70%  { opacity: 0; }
	100% { transform: scale(1.9); opacity: 0; }
}
.t360-locs--beacon .t360-loc__mark {
	position: relative;
	z-index: 1;
	width: auto;
	height: auto;
	filter: drop-shadow(0 4px 6px rgba(230, 73, 0, .28));
	transition: transform .28s ease;
}
.t360-locs--beacon .t360-loc__mark svg {
	width: 26px;
	height: 26px;
}
.t360-loc__acc {
	display: block;
	width: 0;
	height: 3px;
	border-radius: 3px;
	background: var(--t360-orange);
	margin: 9px auto 0;
	transition: width .3s cubic-bezier(.22, .61, .36, 1);
}
.t360-locs--beacon .t360-loc__line {
	margin-top: 10px;
	font-size: 12.5px;
	line-height: 1.6;
	color: var(--t360-muted);
}
.t360-locs--beacon .t360-loc:hover,
.t360-js .t360-locs--beacon .t360-loc:hover {
	transform: translateY(-8px);
	background: transparent;
	box-shadow: none;
}
.t360-locs--beacon .t360-loc:hover .t360-loc__halo { border-color: rgba(255, 90, 0, .5); }
.t360-locs--beacon .t360-loc:hover .t360-loc__halo::before { border-color: rgba(255, 90, 0, .3); }
.t360-locs--beacon .t360-loc:hover .t360-loc__mark { transform: scale(1.12); }
.t360-locs--beacon .t360-loc:hover .t360-loc__name { color: var(--t360-orange-deep); }
.t360-locs--beacon .t360-loc:hover .t360-loc__acc { width: 30px; }

@media (min-width: 861px) {
	.t360-locs--beacon .t360-loc + .t360-loc {
		border-left: 1px solid var(--t360-line);
	}
}
@media (max-width: 860px) {
	.t360-locs--beacon .t360-locs__grid {
		grid-template-columns: repeat(2, 1fr);
		gap: 36px 0;
	}
	.t360-locs--beacon .t360-loc:nth-child(odd) { border-left: 0; }
}

/* Entrada só com opacidade (deixa o transform livre para o hover) */
.t360-js .t360-locs--beacon .t360-loc {
	opacity: .001;
	transform: none;
}
.t360-locs--beacon.t360-inview .t360-loc {
	animation: t360-fade .5s ease forwards;
}
@keyframes t360-fade {
	from { opacity: .001; }
	to   { opacity: 1; }
}

@media (prefers-reduced-motion: reduce) {
	.t360-loc__halo::after { animation: none; display: none; }
	.t360-locs--beacon .t360-loc,
	.t360-locs--beacon .t360-loc__mark,
	.t360-loc__acc { transition: none; }
}


/* =========================================================
   Secção #5 - Casos reais
   ========================================================= */
.t360-cases {
	position: relative;
	padding: clamp(56px, 8vw, 104px) 0;
}
.t360-cases__inner {
	max-width: var(--t360-maxw, none);
	margin-inline: auto;
	padding-inline: var(--t360-gutter, 0);
}
.t360-cases__carousel {
	position: relative;
}
.t360-cases__viewport {
	overflow-x: auto;
	overflow-y: hidden;
	scroll-behavior: smooth;
	scrollbar-width: none;
	-ms-overflow-style: none;
	padding: 18px 8px 46px;
	cursor: grab;
	overscroll-behavior-x: contain;
	touch-action: pan-x;
}
.t360-cases__viewport::-webkit-scrollbar { display: none; }
.t360-cases__viewport.is-dragging {
	cursor: grabbing;
	scroll-behavior: auto;
	user-select: none;
}
.t360-cases__track {
	display: flex;
	gap: 20px;
}
.t360-case {
	position: relative;
	overflow: hidden;
	flex: 0 0 calc((100% - 40px) / 3);
	scroll-snap-align: start;
	background: #ffffff;
	border: 1px solid var(--t360-line, #e9eaee);
	border-radius: 22px;
	padding: 26px 24px;
	display: flex;
	flex-direction: column;
	transition: transform .25s ease, box-shadow .25s ease, border-color .25s ease;
}
/* Fundo branco garantido: alguns temas fazem reset ao fundo de article/e-con
   com especificidade superior. Não afeta os cartões escuros (cards/panels). */
.t360-cases .t360-case,
.t360-about .t360-about-value,
.t360-why .t360-card {
	background-color: #ffffff !important;
}
.t360-cases__nav {
	display: flex;
	gap: 10px;
	justify-content: center;
	margin-top: 8px;
}
.tejo360-section .t360-cases__arrow {
	-webkit-appearance: none;
	appearance: none;
	box-sizing: border-box;
	width: 46px !important;
	height: 46px !important;
	min-width: 0;
	min-height: 0;
	max-width: none;
	padding: 0 !important;
	margin: 0;
	border: 1px solid var(--t360-line) !important;
	border-radius: 50% !important;
	background: var(--t360-white, #ffffff) !important;
	color: var(--t360-ink);
	box-shadow: none !important;
	line-height: 1;
	font: inherit;
	text-transform: none;
	letter-spacing: normal;
	display: grid;
	place-items: center;
	cursor: pointer;
	transition: border-color .2s ease, color .2s ease, transform .2s ease;
}
@media (hover: hover) and (pointer: fine) {
	.tejo360-section .t360-cases__arrow:hover {
		background: var(--t360-white, #ffffff) !important;
		border-color: var(--t360-orange) !important;
		color: var(--t360-orange-deep);
		transform: translateY(-2px);
	}
}
.tejo360-section .t360-cases__arrow:focus { outline: none; }
.tejo360-section .t360-cases__arrow:focus-visible {
	outline: 2px solid var(--t360-orange);
	outline-offset: 2px;
}
.t360-cases__arrow svg { width: 20px; height: 20px; }
.t360-case::before {
	content: "";
	position: absolute;
	top: 0;
	left: 0;
	right: 0;
	height: 4px;
	background: linear-gradient(90deg, var(--t360-orange), var(--t360-orange-2));
	transform: scaleX(0);
	transform-origin: left;
	transition: transform .3s ease;
}
.t360-case__tagrow {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 10px;
	margin-bottom: 16px;
}
.t360-case__tag {
	font-size: 12px;
	font-weight: 700;
	color: var(--t360-orange-deep);
	background: rgba(255, 90, 0, .10);
	padding: 6px 12px;
	border-radius: 100px;
}
.t360-case__loc {
	display: inline-flex;
	align-items: center;
	gap: 5px;
	font-size: 13px;
	font-weight: 600;
	color: var(--t360-muted);
}
.t360-case__loc svg {
	width: 13px;
	height: 16px;
	color: var(--t360-orange);
}
.t360-case__story {
	font-size: 14.5px;
	line-height: 1.6;
	color: #3f434b;
	flex: 1;
}
.t360-case__result {
	display: flex;
	align-items: center;
	gap: 11px;
	margin-top: 20px;
	padding-top: 18px;
	border-top: 1px solid var(--t360-line);
}
.t360-case__ri {
	flex: 0 0 auto;
	display: grid;
	place-items: center;
	width: 38px;
	height: 38px;
	border-radius: 11px;
	background: rgba(255, 90, 0, .10);
	color: var(--t360-orange-deep);
}
.t360-case__ri svg {
	width: 21px;
	height: 21px;
}
.t360-case__rt {
	font-size: 14px;
	color: var(--t360-ink);
}
.t360-case__rt strong {
	font-weight: 800;
}
/* So em dispositivos com rato.
   Em ecras tateis o browser SIMULA o :hover ("sticky hover"): ao tocar, cola o
   estado ao elemento ate se tocar noutro sitio. Com 1 cartao por pagina a
   seccao muda de altura a cada pagina, as setas deslocam-se debaixo do dedo e
   o hover saltava entre a seta e o cartao - a barra laranja parecia disparar
   duas vezes. Sem rato, nao ha hover nenhum. */
@media (hover: hover) and (pointer: fine) {
	.t360-case:hover {
		transform: translateY(-6px);
		border-color: rgba(255, 90, 0, .35);
		box-shadow: 0 14px 26px -16px rgba(21, 23, 28, .42);
	}
	.t360-case:hover::before {
		transform: scaleX(1);
	}
}
/* Entrada por fade (transform livre para o hover) */
.t360-js .t360-cases .t360-case {
	opacity: .001;
}
.t360-cases.t360-inview .t360-case {
	animation: t360-fade .5s ease forwards;
}
.t360-cases.t360-inview .t360-case:nth-child(2) { animation-delay: .08s; }
.t360-cases.t360-inview .t360-case:nth-child(3) { animation-delay: .16s; }
.t360-cases.t360-inview .t360-case:nth-child(4) { animation-delay: .24s; }
.t360-cases.t360-inview .t360-case:nth-child(5) { animation-delay: .32s; }

@media (max-width: 900px) {
	.t360-case { flex-basis: calc((100% - 20px) / 2); }
}
@media (max-width: 620px) {
	/* Só o carrossel ocupa a largura total do ecrã (o título mantém-se no sítio).
	   Com 20px de padding no viewport, fica 1 card centrado a 20px de cada lado,
	   sem espreitar o seguinte. Em touch usa-se scroll nativo com snap obrigatório
	   (o drag custom fica desligado no JS), por isso encaixa sempre 1 card. */
	.t360-cases__carousel {
		margin-left: calc(50% - 50vw);
		margin-right: calc(50% - 50vw);
	}
	.t360-cases__viewport {
		padding-left: 20px;
		padding-right: 20px;
		scroll-snap-type: x mandatory;
		touch-action: pan-x;
	}
	.t360-case {
		flex-basis: 100%;
		scroll-snap-align: center;
	}
}

/* =========================================================
   Secção #11 - Sobre nós
   ========================================================= */
.t360-about {
	position: relative;
	padding: clamp(56px, 8vw, 104px) 0;
}
.t360-about__inner {
	max-width: var(--t360-maxw, none);
	margin-inline: auto;
	padding-inline: var(--t360-gutter, 0);
}
.t360-about__head {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 48px;
	align-items: center;
}
.t360-about__head .t360-head {
	max-width: none;
	margin: 0;
	text-align: left;
}
.t360-about__text p {
	font-size: 16px;
	line-height: 1.65;
	color: #3f434b;
}
.t360-about__text p + p {
	margin-top: 16px;
}
.t360-about__text .t360-btn {
	margin-top: 26px;
}
.t360-about__values {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 14px;
	margin-top: clamp(30px, 4vw, 44px);
}
.t360-about-value {
	display: flex;
	align-items: flex-start;
	gap: 13px;
	background: var(--t360-white, #ffffff);
	border: 1px solid var(--t360-line);
	border-radius: 18px;
	padding: 18px 18px;
	transition: transform .22s ease, box-shadow .22s ease;
}
.t360-about-value__txt { min-width: 0; }
.t360-about-value__ic {
	display: grid;
	place-items: center;
	flex: 0 0 auto;
	width: 40px;
	height: 40px;
	border-radius: 11px;
	background: rgba(255, 90, 0, .10);
	color: var(--t360-orange-deep);
}
.t360-about-value__ic svg {
	width: 21px;
	height: 21px;
}
.t360-about-value__t {
	margin: 0;
	font-size: 15px;
	font-weight: 800;
	letter-spacing: -.01em;
	color: var(--t360-ink);
}
.t360-about-value__d {
	margin: 5px 0 0;
	font-size: 12.5px;
	line-height: 1.5;
	color: var(--t360-muted);
}
.t360-about-value:hover {
	transform: translateY(-4px);
	box-shadow: 0 24px 40px -28px rgba(21, 23, 28, .4);
}

@media (max-width: 1100px) {
	.t360-about__values { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 900px) {
	.t360-about__head { grid-template-columns: 1fr; gap: 20px; }
	.t360-about__head .t360-head { margin-bottom: 0; }
}
@media (max-width: 520px) {
	.t360-about__values { grid-template-columns: 1fr; }
}

@media (prefers-reduced-motion: reduce) {
	.t360-case,
	.t360-case::before,
	.t360-about-value {
		transition: none;
	}
	.t360-js .t360-cases .t360-case {
		opacity: 1;
		animation: none;
	}
}


/* =========================================================
   Secção #10 - FAQ (acordeão)
   ========================================================= */
.t360-faq {
	position: relative;
	padding: clamp(56px, 8vw, 104px) 0;
}
.t360-faq__inner {
	max-width: var(--t360-faq-maxw, 820px);
	margin-inline: auto;
	padding-inline: var(--t360-gutter, 0);
}
.t360-faq__item {
	background: #ffffff;
	border: 1px solid var(--t360-line, #e6ddd3);
	border-radius: 16px;
	overflow: hidden;
	transition: border-color .25s ease, box-shadow .25s ease;
}
.t360-faq__item + .t360-faq__item {
	margin-top: 12px;
}
.t360-faq__item:hover {
	border-color: rgba(255, 90, 0, .35);
}
.t360-faq__item.is-open {
	border-color: rgba(255, 90, 0, .5);
	box-shadow: 0 22px 44px -30px rgba(21, 23, 28, .4);
}
.t360-faq__q {
	width: 100%;
	display: flex;
	align-items: center;
	gap: 16px;
	padding: 20px 22px;
	background: none;
	border: 0;
	cursor: pointer;
	text-align: left;
	font: inherit;
	color: inherit;
}
.t360-faq__q-text {
	flex: 1;
	font-size: 16.5px;
	font-weight: 700;
	letter-spacing: -.01em;
	color: var(--t360-ink, #15171c);
	transition: color .2s ease;
}
.t360-faq__item.is-open .t360-faq__q-text {
	color: var(--t360-orange-deep, #e64900);
}
.t360-faq__ic {
	flex: 0 0 auto;
	width: 34px;
	height: 34px;
	border-radius: 50%;
	background: rgba(255, 90, 0, .10);
	color: var(--t360-orange-deep, #e64900);
	display: grid;
	place-items: center;
	transition: transform .35s cubic-bezier(.22, .61, .36, 1), background .25s ease, color .25s ease;
}
.t360-faq__ic svg {
	width: 16px;
	height: 16px;
}
.t360-faq__item.is-open .t360-faq__ic {
	transform: rotate(45deg);
	background: var(--t360-orange, #ff5a00);
	color: #ffffff;
}
.t360-faq__a {
	display: grid;
	grid-template-rows: 0fr;
	transition: grid-template-rows .35s cubic-bezier(.22, .61, .36, 1);
}
.t360-faq__item.is-open .t360-faq__a {
	grid-template-rows: 1fr;
}
.t360-faq__a-inner {
	overflow: hidden;
}
.t360-faq__a-text {
	margin: 0;
	padding: 0 22px 22px;
	font-size: 14.5px;
	line-height: 1.65;
	color: #4a4f57;
}
@media (max-width: 600px) {
	.t360-faq__q { padding: 16px 16px; gap: 12px; }
	.t360-faq__q-text { font-size: 15.5px; }
	.t360-faq__a-text { padding: 0 16px 18px; }
}
@media (prefers-reduced-motion: reduce) {
	.t360-faq__a, .t360-faq__ic { transition: none; }
}


/* =========================================================
   Localizações - layout de mapa (map=flat|gradient|glow)
   ========================================================= */
.t360-locs--map .t360-mp__grid {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 44px;
	align-items: center;
	margin-top: 8px;
}
.t360-mp__mapcol { display: flex; justify-content: center; align-items: center; gap: 30px; }
.t360-mp__wrap {
	position: relative;
	height: 540px;
	aspect-ratio: 1269.4 / 2642.1;
	max-width: 100%;
}
.t360-mp__svg { position: absolute; inset: 0; width: 100%; height: 100%; overflow: visible; }

/* Base: distritos não cobertos (ghost) */
.t360-mp__d {
	fill: #e7ddd0;
	stroke: rgba(21, 23, 28, .09);
	stroke-width: 1;
	vector-effect: non-scaling-stroke;
	transition: fill .25s ease;
}
/* flat (A) */
.t360-mp--flat .t360-mp__d { fill: rgba(255, 90, 0, .08); stroke: rgba(255, 90, 0, .32); }
.t360-mp--flat .t360-mp__d.is-cov {
	fill: var(--t360-orange, #ff5a00);
	stroke: var(--t360-orange-deep, #e64900);
	stroke-width: 1.5;
	filter: drop-shadow(0 8px 15px rgba(230, 73, 0, .22));
}
.t360-mp--flat .t360-mp__d.is-cov.is-hot { fill: #ff7d33; }
/* gradient (B) - sem linhas, gradiente único */
.t360-mp--gradient .t360-mp__d { fill: url(#t360mpGrad); stroke: none; }
/* glow (C, claro) - cobertos a brilhar + anéis 360 */
.t360-mp--glow .t360-mp__d.is-cov {
	fill: var(--t360-orange, #ff5a00);
	stroke: var(--t360-orange-deep, #e64900);
	stroke-width: 1.5;
	filter: url(#t360mpGlow);
}
.t360-mp--glow .t360-mp__d.is-cov.is-hot { fill: #ff7d33; }
.t360-mp__ring { fill: none; stroke: rgba(255, 90, 0, .13); stroke-width: 1.5; vector-effect: non-scaling-stroke; }

/* Pinos (overlay) */
.t360-mp__pin {
	position: absolute;
	/* Posicao por variaveis: as de mobile (--t360-mtop/--t360-mleft) so entram
	   no @media la em baixo, e caem para as de desktop se estiverem vazias. */
	top: var(--t360-top);
	left: var(--t360-left);
	transform: translate(-50%, -100%);
	width: 30px;
	height: 30px;
	cursor: pointer;
	transition: transform .2s ease;
	z-index: 2;
}
.t360-mp__pin svg { width: 100%; height: 100%; filter: drop-shadow(0 6px 8px rgba(21, 23, 28, .28)); }
.t360-mp__pin:hover, .t360-mp__pin.is-hot { transform: translate(-50%, -108%) scale(1.14); z-index: 5; }
.t360-mp__pinlabel {
	position: absolute;
	bottom: 100%;
	left: 50%;
	transform: translate(calc(-50% + var(--t360-dx, 0px)), -6px);
	background: var(--t360-ink, #15171c);
	color: #fff;
	font-size: 12px;
	font-weight: 600;
	white-space: nowrap;
	padding: 5px 10px;
	border-radius: 8px;
	opacity: 0;
	pointer-events: none;
	transition: opacity .18s ease;
}
.t360-mp__pinlabel::after {
	content: "";
	position: absolute;
	top: 100%;
	/* compensa o --t360-dx: a seta continua a apontar ao pino */
	left: calc(50% - var(--t360-dx, 0px));
	transform: translateX(-50%);
	border: 5px solid transparent;
	border-top-color: var(--t360-ink, #15171c);
}
.t360-mp__pin:hover .t360-mp__pinlabel, .t360-mp__pin.is-hot .t360-mp__pinlabel { opacity: 1; }

/* Lista de concelhos */
.t360-mp__list { display: flex; flex-direction: column; gap: 6px; }
.t360-mp__lead { font-size: 15px; line-height: 1.6; color: var(--t360-muted, #6b7280); margin: 0 0 14px; max-width: 44ch; }
.t360-mp__row {
	display: flex;
	align-items: flex-start;
	gap: 12px;
	padding: 13px 14px;
	border-radius: 16px;
	border: 1px solid transparent;
	transition: background .2s ease, border-color .2s ease;
}
.t360-mp__row:hover { background: #ffffff; border-color: var(--t360-line, #e6ddd3); }
.t360-mp__mark { flex: 0 0 auto; width: 26px; height: 30px; display: grid; place-items: center; }
.t360-mp__mark svg { width: 22px; height: 26px; }
.t360-mp__name { display: block; font-size: 17px; font-weight: 700; letter-spacing: -.01em; color: var(--t360-ink, #15171c); }
.t360-mp__conc { display: block; margin-top: 3px; font-size: 12.5px; line-height: 1.55; color: var(--t360-muted, #6b7280); }

@media (max-width: 820px) {
	.t360-locs--map .t360-mp__grid { grid-template-columns: 1fr; gap: 26px; }
	.t360-mp__wrap,
	.t360-mp--lg .t360-mp__wrap { width: min(100%, 330px); height: auto; }
}

/* Mapa - tamanho grande (size="large") */
.t360-mp--lg .t360-mp__grid { gap: 60px; }
.t360-mp--lg .t360-mp__wrap { height: 660px; }
.t360-mp--lg .t360-mp__lead { font-size: 17px; line-height: 1.65; margin-bottom: 22px; max-width: 46ch; }
.t360-mp--lg .t360-mp__row { padding: 17px 20px; gap: 16px; border-radius: 18px; }
.t360-mp--lg .t360-mp__mark { width: 30px; height: 34px; }
.t360-mp--lg .t360-mp__mark svg { width: 26px; height: 30px; }
.t360-mp--lg .t360-mp__name { font-size: 21px; }
.t360-mp--lg .t360-mp__conc { font-size: 14px; margin-top: 5px; line-height: 1.6; }
.t360-mp--lg .t360-mp__pin { width: 36px; height: 36px; }
@media (max-width: 820px) {
	.t360-mp--lg .t360-mp__wrap { height: 500px; }
	.t360-mp--lg .t360-mp__name { font-size: 19px; }
}

/* Mapa - radial animado (radial="animated"): pulsação em onda, dentro -> fora */
.t360-mp__rings--anim .t360-mp__ring { stroke: rgba(255, 90, 0, .22); animation: t360-radar-pulse 3.6s ease-in-out infinite; }
.t360-mp__rings--anim .t360-mp__ring:nth-child(1) { animation-delay: 0s; }
.t360-mp__rings--anim .t360-mp__ring:nth-child(2) { animation-delay: .28s; }
.t360-mp__rings--anim .t360-mp__ring:nth-child(3) { animation-delay: .56s; }
.t360-mp__rings--anim .t360-mp__ring:nth-child(4) { animation-delay: .84s; }
.t360-mp__rings--anim .t360-mp__ring:nth-child(5) { animation-delay: 1.12s; }
@keyframes t360-radar-pulse {
	0%, 100% { opacity: .25; }
	45% { opacity: 1; }
}
@media (prefers-reduced-motion: reduce) {
	.t360-mp__rings--anim .t360-mp__ring { animation: none; opacity: 1; }
}


/* =========================================================
   Como funciona - variantes "pop" (círculos grandes ligados)
   style="solid|flat|gauge|gauge-full|dark"
   ========================================================= */
.t360-steps--pop .t360-steps__row {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 22px;
	position: relative;
}
.t360-pstep {
	text-align: center;
	position: relative;
}
.t360-pstep__node {
	position: relative;
	z-index: 1;
	width: 94px;
	height: 94px;
	margin: 0 auto;
	border-radius: 50%;
	display: grid;
	place-items: center;
}
.t360-pstep__disc {
	display: grid;
	place-items: center;
	width: 100%;
	height: 100%;
	border-radius: 50%;
}
.t360-pstep__disc svg { width: 40px; height: 40px; }
.t360-pstep__num {
	position: absolute;
	width: 32px;
	height: 32px;
	border-radius: 50%;
	background: #ffffff;
	color: var(--t360-orange-deep, #e64900);
	font-size: 13px;
	font-weight: 800;
	display: grid;
	place-items: center;
	box-shadow: 0 4px 10px rgba(21, 23, 28, .16);
}
.t360-pstep__title {
	margin: 22px 0 0;
	font-size: 22px;
	font-weight: 700;
	letter-spacing: -.015em;
	color: var(--t360-ink, #15171c);
}
.t360-pstep__desc {
	margin: 10px 0 0;
	font-size: 14px;
	line-height: 1.6;
	color: var(--t360-muted, #6b7280);
}
.t360-steps__line2 {
	position: absolute;
	top: 47px;
	left: 12.5%;
	right: 12.5%;
	height: 4px;
	border-radius: 4px;
	z-index: 0;
}

/* solid (gradiente) */
.t360-pstyle--solid .t360-pstep__node { background: radial-gradient(circle at 50% 38%, #ff8330, #e64900); color: #fff; box-shadow: 0 14px 30px -10px rgba(230, 73, 0, .55); }
.t360-pstyle--solid .t360-steps__line2 { background: linear-gradient(90deg, #ff8038, #ff5a00); }
.t360-pstyle--solid .t360-pstep__num { top: 3px; right: 3px; }

/* flat (cor sólida) */
.t360-pstyle--flat .t360-pstep__node { background: var(--t360-orange, #ff5a00); color: #fff; box-shadow: 0 14px 30px -10px rgba(230, 73, 0, .5); }
.t360-pstyle--flat .t360-steps__line2 { background: linear-gradient(90deg, #ff8038, #ff5a00); }
.t360-pstyle--flat .t360-pstep__num { top: 3px; right: 3px; }

/* gauge (progressivo) e gaugefull (completo) */
.t360-pstyle--gauge .t360-pstep__disc,
.t360-pstyle--gaugefull .t360-pstep__disc { width: 78px; height: 78px; background: #fff; color: var(--t360-orange-deep, #e64900); box-shadow: 0 8px 20px -10px rgba(21, 23, 28, .3); }
.t360-pstyle--gauge .t360-pstep__disc svg,
.t360-pstyle--gaugefull .t360-pstep__disc svg { width: 36px; height: 36px; }
.t360-pstyle--gauge .t360-pstep__num,
.t360-pstyle--gaugefull .t360-pstep__num { top: -2px; right: 12px; }
.t360-pstyle--gauge .t360-steps__line2 { background: rgba(255, 90, 0, .4); height: 3px; }
.t360-pstyle--gaugefull .t360-steps__line2 { background: var(--t360-orange, #ff5a00); height: 3px; }

/* dark (banda escura) */
.t360-pstyle--dark { background: var(--t360-ink, #15171c); padding-block: clamp(48px, 6vw, 84px); }
.t360-pstyle--dark .t360-pstep__node { background: radial-gradient(circle at 50% 38%, #ff8330, #e64900); color: #fff; box-shadow: 0 0 0 7px rgba(255, 90, 0, .13), 0 16px 34px -10px rgba(255, 90, 0, .65); }
.t360-pstyle--dark .t360-pstep__title { color: #fff; }
.t360-pstyle--dark .t360-pstep__desc { color: #c2c6cf; }
.t360-pstyle--dark .t360-pstep__num { top: 3px; right: 3px; }
.t360-pstyle--dark .t360-steps__line2 { height: 2px; background: linear-gradient(90deg, transparent, rgba(255, 90, 0, .55) 15%, rgba(255, 90, 0, .55) 85%, transparent); }
.t360-pstyle--dark .t360-head__title { color: #fff; }
.t360-pstyle--dark .t360-head__eyebrow { color: var(--t360-orange-2, #ff8038); }
.t360-pstyle--dark .t360-head__intro { color: #c2c6cf; }

@media (max-width: 820px) {
	.t360-steps--pop .t360-steps__row { grid-template-columns: 1fr 1fr; gap: 32px 18px; }
	.t360-steps__line2 { display: none; }
	.t360-pstep__title { font-size: 19px; }
}

/* Como funciona - clássico em tamanho grande (style="large") */
.t360-steps--lg .t360-steps__line { top: 48px; }
.t360-steps--lg .t360-step__node { width: 96px; height: 96px; margin-bottom: 24px; border-width: 2px; }
.t360-steps--lg .t360-step__node svg { width: 40px; height: 40px; }
.t360-steps--lg .t360-step__num { min-width: 30px; height: 30px; padding: 0 9px; font-size: 14px; top: -8px; right: -8px; }
.t360-steps--lg .t360-step__title { font-size: 22px; margin-bottom: 9px; }
.t360-steps--lg .t360-step__desc { font-size: 15.5px; line-height: 1.6; }
@media (max-width: 780px) {
	.t360-steps--lg .t360-step { grid-template-columns: 100px 1fr; }
	.t360-steps--lg .t360-steps__line { left: 48px; }
}

/* =========================================================
   Hover dos passos (qualquer estilo): o círculo cresce + pulso
   subtil. Não mexe na posição do círculo nem no texto.
   ========================================================= */
.t360-pstep__node { transition: transform .3s cubic-bezier(.34, 1.56, .64, 1); }
.t360-pstep:hover .t360-pstep__node,
.t360-step:hover .t360-step__node { transform: scale(1.1); }
.t360-pstep__node::after,
.t360-step__node::after {
	content: "";
	position: absolute;
	inset: 0;
	border-radius: 50%;
	border: 2px solid var(--t360-orange, #ff5a00);
	opacity: 0;
	pointer-events: none;
}
.t360-pstep:hover .t360-pstep__node::after,
.t360-step:hover .t360-step__node::after {
	animation: t360-step-pulse 1.5s ease-out infinite;
}
@keyframes t360-step-pulse {
	0%   { opacity: .55; transform: scale(1); }
	100% { opacity: 0; transform: scale(1.55); }
}
@media (prefers-reduced-motion: reduce) {
	.t360-pstep:hover .t360-pstep__node,
	.t360-step:hover .t360-step__node { transform: scale(1.05); }
	.t360-pstep:hover .t360-pstep__node::after,
	.t360-step:hover .t360-step__node::after { animation: none; }
}

/* =========================================================
   Passos - clique (cursor de mão) + preenchimento progressivo
   da linha no hover (fill nas suaves, brilho nas cheias)
   ========================================================= */
a.t360-step__node,
a.t360-pstep__node {
	cursor: pointer;
	text-decoration: none;
	color: inherit;
	-webkit-tap-highlight-color: transparent;
}

.t360-steps__row,
.t360-steps__track { --t360-fill: 0%; }
.t360-steps__track:has(.t360-step:nth-of-type(1):hover),
.t360-steps__row:has(.t360-pstep:nth-of-type(1):hover) { --t360-fill: 0%; }
.t360-steps__track:has(.t360-step:nth-of-type(2):hover),
.t360-steps__row:has(.t360-pstep:nth-of-type(2):hover) { --t360-fill: 33.333%; }
.t360-steps__track:has(.t360-step:nth-of-type(3):hover),
.t360-steps__row:has(.t360-pstep:nth-of-type(3):hover) { --t360-fill: 66.666%; }
.t360-steps__track:has(.t360-step:nth-of-type(4):hover),
.t360-steps__row:has(.t360-pstep:nth-of-type(4):hover) { --t360-fill: 100%; }

.t360-steps__progress {
	position: absolute;
	top: 36px;
	left: 12.5%;
	right: 12.5%;
	height: 4px;
	z-index: 0;
	opacity: 0;
	pointer-events: none;
	transition: opacity .25s ease;
}
.t360-steps--lg .t360-steps__progress { top: 48px; }
.t360-steps--pop .t360-steps__progress { top: 47px; }
.t360-steps__track:has(.t360-step:hover) .t360-steps__progress,
.t360-steps__row:has(.t360-pstep:hover) .t360-steps__progress { opacity: 1; }
.t360-steps__progress-fill {
	position: absolute;
	left: 0;
	top: 0;
	height: 100%;
	width: var(--t360-fill, 0%);
	border-radius: 4px;
	background: linear-gradient(90deg, #ff6a1a, #ff8038 55%, #ffc79e);
	box-shadow: 0 0 10px rgba(255, 110, 26, .7);
	transition: width .5s cubic-bezier(.4, 0, .2, 1);
}
.t360-steps__progress-fill::after {
	content: "";
	position: absolute;
	right: 0;
	top: 50%;
	transform: translate(50%, -50%);
	width: 13px;
	height: 13px;
	border-radius: 50%;
	background: radial-gradient(circle, #fff 30%, rgba(255, 150, 80, .75) 62%, transparent 72%);
}
.t360-pstyle--dark .t360-steps__progress-fill { box-shadow: 0 0 14px rgba(255, 120, 30, .9); }
@media (max-width: 780px) { .t360-steps__progress { display: none; } }
@media (prefers-reduced-motion: reduce) { .t360-steps__progress-fill { transition: none; } }

/* =========================================================
   .tabsx (Elementor Nested Tabs) - transição suave do conteúdo
   ========================================================= */
.tabsx .e-n-tabs-content > .e-active {
	animation: t360-tab-slide .15s ease-out both;
}
@keyframes t360-tab-slide {
	from { transform: translateY(4px); }
	to   { transform: none; }
}
@media (prefers-reduced-motion: reduce) {
	.tabsx .e-n-tabs-content > .e-active { animation: none; }
}

/* Porquê a Tejo360 - mais respiro no desktop entre a tabela, o texto e o botão */
@media (min-width: 1025px) {
	.t360-why__cta { margin-top: 76px; }
	.t360-why__cta-line { margin-bottom: 32px; }
}

/* Setas do carrossel: elimina o atraso de toque (~300ms) em mobile */
.tejo360-section .t360-cases__arrow { touch-action: manipulation; }

/* Como funciona com 3 passos: grelha, linha e preenchimento ajustados */
.t360-steps--n3 .t360-steps__track,
.t360-steps--n3.t360-steps--pop .t360-steps__row { grid-template-columns: repeat(3, 1fr); }
.t360-steps--n3 .t360-steps__line { left: 16.667%; width: 66.666%; }
.t360-steps--n3 .t360-steps__line2 { left: 16.667%; right: 16.667%; }
.t360-steps--n3 .t360-steps__progress { left: 16.667%; right: 16.667%; }
.t360-steps--n3 .t360-steps__track:has(.t360-step:nth-of-type(2):hover),
.t360-steps--n3 .t360-steps__row:has(.t360-pstep:nth-of-type(2):hover) { --t360-fill: 50%; }
.t360-steps--n3 .t360-steps__track:has(.t360-step:nth-of-type(3):hover),
.t360-steps--n3 .t360-steps__row:has(.t360-pstep:nth-of-type(3):hover) { --t360-fill: 100%; }

/* =========================================================
   Mapa - 2 cores de cobertura, rótulos sempre visíveis,
   legenda e caixa de concelhos no hover (conc="hover")
   ========================================================= */
/* Tier: "full" (todo o distrito) vs "urban" (zonas urbanas) */
.t360-mp--flat .t360-mp__d.is-cov.is-full,
.t360-mp--glow .t360-mp__d.is-cov.is-full { fill: #fe5002; }
.t360-mp--flat .t360-mp__d.is-cov.is-urban,
.t360-mp--glow .t360-mp__d.is-cov.is-urban { fill: #ffab73; }
.t360-mp--flat .t360-mp__d.is-cov.is-hot,
.t360-mp--glow .t360-mp__d.is-cov.is-hot { fill: #ff7d33; }

/* Rótulos dos distritos sempre visíveis */
.t360-mp__pinlabel { opacity: 1; font-size: 11.5px; padding: 3px 8px; }

/* Legenda */
.t360-mp__legend { display: flex; flex-direction: column; align-items: flex-start; gap: 10px; margin-top: 0; }
@media (max-width: 700px) {
	.t360-mp__mapcol { flex-direction: column; align-items: center; gap: 16px; }
	/* O .t360-mp--lg (0,2,0) ganhava a um .t360-mp__wrap simples (0,1,0) e
	   forcava height:500px. Com width:330 E height:500 o aspect-ratio e
	   IGNORADO, a caixa fica com racio 0,66 contra os 0,48 do SVG, e o mapa
	   encolhe-se para caber na altura e centra-se -> 45px de margem de cada
	   lado. Os pinos, que sao posicionados em % da CAIXA, caiam na margem
	   (Lisboa ia parar ao oceano). Repetir o --lg aqui devolve o comando ao
	   aspect-ratio e o mapa volta a preencher a caixa. */
	.t360-mp__wrap,
	.t360-mp--lg .t360-mp__wrap { width: min(100%, 330px); height: auto; }
	/* Ajuste fino so para mobile, definido no admin. Sem valor -> usa o desktop. */
	.t360-mp__pin {
		top: var(--t360-mtop, var(--t360-top));
		left: var(--t360-mleft, var(--t360-left));
	}
	.t360-mp__legend { flex-direction: row; flex-wrap: wrap; justify-content: center; align-items: center; gap: 8px 18px; margin-top: 2px; }
	/* Rótulos mais pequenos e pinos mais discretos: evita sobreposição no mapa estreito */
	.t360-mp__pinlabel { font-size: 10px; padding: 2px 6px; border-radius: 6px; }
	.t360-mp__pin { width: 24px; height: 24px; }
	/* Cliente: em mobile, sem o descritivo longo dos concelhos (fica legenda + frase + CTA) */
	.t360-mp__row { display: none; }
	.t360-mp__list { display: none; }
}
.t360-mp__leg { display: inline-flex; align-items: center; gap: 7px; font-size: 12.5px; font-weight: 600; color: var(--t360-muted, #6b7280); }
.t360-mp__swatch { width: 14px; height: 14px; border-radius: 4px; flex: 0 0 auto; }
.t360-mp__swatch.is-full { background: #fe5002; }
.t360-mp__swatch.is-urban { background: #ffab73; }

/* Modo "hover": sem coluna de lista, mapa centrado, concelhos numa caixa */
.t360-mp--conc-hover .t360-mp__grid { grid-template-columns: 1fr; justify-items: center; }
.t360-mp--conc-hover .t360-mp__mapcol { width: 100%; }
.t360-mp__pop {
	position: absolute;
	top: calc(100% + 8px);
	left: 50%;
	transform: translateX(-50%) translateY(4px);
	width: max-content;
	max-width: 230px;
	background: #fff;
	border: 1px solid var(--t360-line, #e6ddd3);
	box-shadow: 0 18px 34px -18px rgba(21, 23, 28, .45);
	border-radius: 12px;
	padding: 10px 13px;
	font-size: 12px;
	line-height: 1.5;
	color: var(--t360-muted, #6b7280);
	text-align: left;
	opacity: 0;
	pointer-events: none;
	transition: opacity .16s ease, transform .16s ease;
	z-index: 6;
}
.t360-mp__pop-name { display: block; font-size: 13px; font-weight: 700; color: var(--t360-ink, #15171c); margin-bottom: 3px; }
.t360-mp__pin:hover .t360-mp__pop,
.t360-mp__pin:focus .t360-mp__pop,
.t360-mp__pin:focus-within .t360-mp__pop { opacity: 1; transform: translateX(-50%) translateY(0); }

/* Porquê a Tejo360 - tabela compacta lado a lado (mobile <=900px) */
.t360-why__table { display: none; border: 1px solid var(--t360-line, #e6ddd3); border-radius: 16px; padding: 14px; background: #fff; box-shadow: 0 20px 44px -34px rgba(21, 23, 28, .5); }
.t360-why__thead { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-bottom: 4px; }
.t360-why__thead span { text-align: center; font-size: 12.5px; font-weight: 800; padding: 8px 6px; border-radius: 10px; }
.t360-why__thead .is-good { color: #fff; background: #fe5002; box-shadow: 0 10px 20px -12px rgba(254, 80, 2, .9); }
.t360-why__thead .is-bad { color: var(--t360-muted, #6b7280); background: #efeae2; }
.t360-why__trow { padding: 10px 0 0; }
.t360-why__crit { display: block; font-size: 11.5px; font-weight: 700; color: var(--t360-muted, #6b7280); margin-bottom: 6px; text-align: center; }
.t360-why__cells { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; align-items: stretch; }
.t360-why__cell { display: flex; align-items: flex-start; gap: 6px; font-size: 12.5px; line-height: 1.35; padding: 9px 10px; border-radius: 10px; }
/* Coluna Tejo360 em destaque: linha laranja contínua, como os cartões do desktop */
.t360-why__cell.is-good { background: rgba(255, 90, 0, .07); border: 1px solid rgba(255, 90, 0, .3); border-left: 3px solid var(--t360-orange, #fe5002); color: var(--t360-ink, #15171c); font-weight: 700; }
.t360-why__cell.is-bad { background: #f5f2ec; border: 1px solid transparent; color: var(--t360-muted, #6b7280); }
.t360-why__cic { flex: 0 0 auto; width: 15px; height: 15px; margin-top: 1px; }
.t360-why__cic svg { width: 15px; height: 15px; display: block; }
.t360-why__cell.is-good .t360-why__cic { color: #e64900; }
.t360-why__cell.is-bad .t360-why__cic { color: #a59a8b; }
@media (max-width: 900px) {
	.t360-why__grid { display: none; }
	.t360-why__table { display: block; margin-top: 4px; }
}

/* =========================================================
   Casos reais - novo formato de card (testemunho identificado)
   + style="a" (carrossel) e style="b" (galeria 2x2 com fade)
   ========================================================= */
.t360-case { box-shadow: 0 18px 40px -30px rgba(21, 23, 28, .4); }
.t360-case__top { display: flex; align-items: center; gap: 13px; margin-bottom: 14px; }
.t360-case__av {
	flex: 0 0 auto; width: 48px; height: 48px; border-radius: 50%;
	background: #fe5002; color: #fff; font-weight: 800; font-size: 16px;
	display: flex; align-items: center; justify-content: center;
	background-size: cover; background-position: center;
}
.t360-case__av.has-photo { background-color: #f0e9df; color: transparent; }
.t360-case__id { display: flex; flex-direction: column; line-height: 1.2; min-width: 0; }
.t360-case__name { font-size: 16px; font-weight: 700; color: var(--t360-ink, #15171c); }
.t360-case__meta { font-size: 12px; color: var(--t360-muted, #6b7280); margin-top: 2px; }
.t360-case__tipo { color: var(--t360-orange-deep, #e64900); font-weight: 700; }
.t360-case__quote {
	font-size: 14.5px; line-height: 1.6; color: #33363d; margin: 0 0 16px;
	display: -webkit-box; -webkit-line-clamp: 5; -webkit-box-orient: vertical; overflow: hidden;
	font-style: italic;
}
/* Aspas: dizem "isto e um testemunho" antes de se ler uma palavra */
.t360-case__quote::before {
	content: "\201C";
	color: rgba(254, 80, 2, .28);
	font-size: 34px;
	font-weight: 800;
	font-style: normal;
	line-height: 0;
	position: relative;
	top: 10px;
	margin-right: 3px;
}
.t360-case__kta {
	margin-top: auto; display: flex; align-items: flex-start; gap: 9px; padding-top: 14px;
	border-top: 1px solid var(--t360-line, #efe7db); font-size: 13.5px; font-weight: 700; color: var(--t360-ink, #15171c);
}
.t360-case__ktaic {
	flex: 0 0 auto; width: 20px; height: 20px; border-radius: 50%; background: rgba(254, 80, 2, .12);
	color: var(--t360-orange-deep, #e64900); display: flex; align-items: center; justify-content: center; margin-top: 1px;
}
.t360-case__ktaic svg { width: 13px; height: 13px; }

/* style B - galeria 2x2 com paginação (alturas fixas = sem layout shift) */
.t360-cases__gallery { position: relative; }
.t360-cases__gtrack {
	display: grid; grid-template-columns: 1fr 1fr; grid-template-rows: 1fr 1fr; gap: 20px;
}
.t360-cases__gtrack.is-in { animation: t360-gal-in .32s ease; }
@keyframes t360-gal-in { from { opacity: 0; transform: translateY(14px) scale(.985); } to { opacity: 1; transform: translateY(0) scale(1); } }
.t360-cases--b .t360-case { flex: none; height: 100%; padding: 20px 22px; opacity: 1 !important; animation: none !important; }
/* As duas paginas ocupam as MESMAS celulas da grelha: os cartoes escondidos
   continuam a contar para a altura, por isso todos ficam com a altura do mais
   alto das duas paginas e a pagina nunca muda de altura. */
.t360-cases--b .t360-case:nth-child(4n+1) { grid-column: 1; grid-row: 1; }
.t360-cases--b .t360-case:nth-child(4n+2) { grid-column: 2; grid-row: 1; }
.t360-cases--b .t360-case:nth-child(4n+3) { grid-column: 1; grid-row: 2; }
.t360-cases--b .t360-case:nth-child(4n+4) { grid-column: 2; grid-row: 2; }
.t360-cases--b .t360-case.is-off { visibility: hidden; pointer-events: none; }
.t360-cases--b .t360-case__quote { -webkit-line-clamp: 4; margin-bottom: 12px; }
@media (max-width: 720px) {
	/* Mobile: altura livre e texto completo (sem cortes "...").
	   Aqui NAO se igualam alturas: o cartao esconde-se mesmo (display:none),
	   senao o texto completo criava espaco morto de volta. */
	.t360-cases__gtrack { grid-template-columns: 1fr; grid-template-rows: none; grid-auto-rows: auto; }
	/* Os :nth-child tem de ser repetidos aqui. Um :nth-child() conta como
	   CLASSE na especificidade: as regras de desktop valem 0,3,0 e um
	   ".t360-cases--b .t360-case" simples so 0,2,0 - o grid-column:2 sobrevivia
	   ao mobile, criava uma segunda coluna implicita e os cartoes das duas
	   paginas empilhavam-se na mesma celula. */
	.t360-cases--b .t360-case:nth-child(4n+1),
	.t360-cases--b .t360-case:nth-child(4n+2),
	.t360-cases--b .t360-case:nth-child(4n+3),
	.t360-cases--b .t360-case:nth-child(4n+4) {
		grid-column: auto;
		grid-row: auto;
	}
	.t360-cases--b .t360-case { height: auto; }
	.t360-cases--b .t360-case.is-off { display: none; }
	.t360-case__quote,
	.t360-cases--b .t360-case__quote { display: block; -webkit-line-clamp: unset; overflow: visible; }
}
.t360-cases__gnav { display: flex; align-items: center; justify-content: center; gap: 12px; margin-top: 24px; }
.tejo360-section .t360-cases__garrow {
	width: 46px; height: 46px; border-radius: 50%; border: 1px solid var(--t360-line, #e6ddd3);
	background: #fff; color: var(--t360-ink, #15171c); display: grid; place-items: center;
	cursor: pointer; padding: 0; transition: background .2s ease, color .2s ease, border-color .2s ease; touch-action: manipulation;
}
@media (hover: hover) and (pointer: fine) {
	.tejo360-section .t360-cases__garrow:hover { background: #fe5002; color: #fff; border-color: #fe5002; }
}
.t360-cases__garrow svg { width: 20px; height: 20px; }
.t360-cases__count { min-width: 46px; text-align: center; font-size: 13px; font-weight: 600; color: var(--t360-muted, #6b7280); }

/* Botões CTA renderizados como <button> (modo popup) - mesmo aspeto do <a> */
button.t360-btn { -webkit-appearance: none; appearance: none; border: 0; cursor: pointer; font: inherit; }

/* =========================================================
   Quando compramos - showcase escuro (situations)
   ========================================================= */
.t360-when { background: #0E0E0E; color: #fff; }
.t360-when__inner { max-width: var(--t360-maxw, none); margin-inline: auto; padding-inline: var(--t360-gutter, 0); }
.t360-when__head { display: grid; grid-template-columns: 1.15fr 1fr auto; gap: 30px; align-items: start; padding-bottom: 30px; border-bottom: 1px solid rgba(255, 255, 255, .14); }
.t360-when .t360-when__eyebrow { margin: 0; font-size: 13px; letter-spacing: normal; color: #fff; line-height: 1.2; }
.t360-when .t360-when__title { margin: 10px 0 0; font-size: clamp(30px, 4vw, 52px); letter-spacing: -.02em; line-height: 1.05; color: #fff; }
.t360-when__intro { color: rgba(255, 255, 255, .68); font-size: 15px; line-height: 1.6; margin: 0; align-self: center; max-width: 46ch; }
.t360-when__falecta { justify-self: end; align-self: center; }
.t360-when__fale { display: inline-flex; align-items: center; gap: 8px; background: none; border: 0; color: #fff; font: inherit; font-size: 15px; font-weight: 700; cursor: pointer; text-decoration: none; padding: 0; white-space: nowrap; }
.t360-when__falic { width: 18px; height: 18px; color: var(--t360-orange, #fe5002); display: inline-flex; transition: transform .2s ease; }
.t360-when__falic svg { width: 18px; height: 18px; }
.t360-when__fale:hover .t360-when__falic { transform: translateX(3px); }
.t360-when__body { display: grid; grid-template-columns: 300px 1fr; gap: 46px; margin-top: 36px; align-items: start; }
.t360-when__list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 4px; }
.t360-when__tab { display: flex; gap: 12px; align-items: baseline; width: 100%; background: none; border: 0; padding: 9px 0; cursor: pointer; color: rgba(255, 255, 255, .5); font: inherit; font-size: 19px; text-align: left; transition: color .2s ease; }
.t360-when__tab:hover, .t360-when__tab.is-active { color: #fff; }
.t360-when__num { flex: 0 0 auto; font-size: 14px; font-weight: 700; color: rgba(255, 255, 255, .4); font-variant-numeric: tabular-nums; }
.t360-when__tab.is-active .t360-when__num { color: var(--t360-orange, #fe5002); }
.t360-when__stage { position: relative; }
.t360-when__panel { display: none; grid-template-columns: 1.15fr 1fr; gap: 40px; align-items: center; }
.t360-when__panel.is-active { display: grid; animation: t360-when-fade .25s ease; }
@keyframes t360-when-fade { from { opacity: 0; } to { opacity: 1; } }
.t360-when__media { position: relative; border-radius: 18px; overflow: hidden; background: #1a1c21 center / cover no-repeat; aspect-ratio: 16 / 12; display: flex; align-items: center; justify-content: center; }
.t360-when__badge { position: absolute; top: 14px; left: 14px; font-size: 12px; font-weight: 800; color: #fff; background: rgba(0, 0, 0, .45); border: 1px solid rgba(255, 255, 255, .25); border-radius: 30px; padding: 3px 10px; letter-spacing: .04em; }
.t360-when__ic { width: 60px; height: 60px; color: rgba(255, 255, 255, .28); }
.t360-when__ic svg { width: 60px; height: 60px; }
.t360-when .t360-when__h { margin: 0 0 14px; font-size: clamp(26px, 3vw, 40px); letter-spacing: -.02em; line-height: 1.1; color: #fff; }
.t360-when__d { color: rgba(255, 255, 255, .72); font-size: 16px; line-height: 1.6; margin: 0 0 24px; max-width: 36ch; }
.t360-when .t360-when__tt { margin: 0; font-family: inherit; font-size: inherit; line-height: 1.25; color: inherit; }
.t360-when .t360-btn, .t360-when .t360-btn:hover { box-shadow: none; }
@media (max-width: 900px) {
	.t360-when__head { grid-template-columns: 1fr; gap: 14px; padding-bottom: 22px; }
	.t360-when__title { margin-top: 6px; }
	.t360-when__falecta { justify-self: start; }
	.t360-when__body { grid-template-columns: 1fr; gap: 18px; margin-top: 26px; }
	.t360-when__stage { display: flex; flex-direction: column; gap: 18px; }
	.t360-when--mcompact .t360-when__body { display: none; }
	.t360-when--mcompact .t360-when__rows { display: flex; flex-direction: column; gap: 10px; margin-top: 26px; }
	.t360-when__list { display: none; }
	.t360-when__panel { display: grid !important; grid-template-columns: 1fr; gap: 0; border: 1px solid rgba(255, 255, 255, .12); border-radius: 18px; overflow: hidden; animation: none; }
	.t360-when__media { border-radius: 0; aspect-ratio: 16 / 9; }
	.t360-when__info { padding: 20px 20px 22px; }
	.t360-when__d { max-width: none; }
}

/* Quando compramos - estilo compacto (style="compact"): linhas, menos scroll em mobile */
.t360-when__rows { display: none; }
.t360-when__row { display: flex; align-items: center; gap: 14px; padding: 12px 16px 12px 12px; border: 1px solid rgba(255, 255, 255, .12); border-radius: 14px; background: #141519; cursor: pointer; text-decoration: none; color: inherit; transition: border-color .2s ease, background .2s ease, transform .2s ease; }
.t360-when__row:hover { border-color: rgba(255, 90, 0, .55); background: #17181d; transform: translateY(-1px); }
.t360-when__rthumb { flex: 0 0 auto; width: 56px; height: 56px; border-radius: 10px; overflow: hidden; background: #1f2127 center / cover no-repeat; display: flex; align-items: center; justify-content: center; }
.t360-when__rthumb .t360-when__ic { width: 26px; height: 26px; color: rgba(255, 255, 255, .4); }
.t360-when__rthumb .t360-when__ic svg { width: 26px; height: 26px; }
.t360-when__rtxt { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.t360-when .t360-when__rt { margin: 0; font-size: 15.5px; line-height: 1.2; color: #fff; }
.t360-when__rd { font-size: 12.5px; line-height: 1.4; color: rgba(255, 255, 255, .58); }
.t360-when__rarrow { flex: 0 0 auto; width: 18px; height: 18px; color: var(--t360-orange, #fe5002); display: inline-flex; }
.t360-when__rarrow svg { width: 18px; height: 18px; }

/* =========================================================
   Como funciona (pop/gauge) - mobile: passos na vertical,
   em linha compacta (ícone à esquerda, texto à direita)
   ========================================================= */
@media (max-width: 700px) {
	/* A classe repete-se de proposito. A regra das 3 colunas
	   (.t360-steps--n3.t360-steps--pop .t360-steps__row) esta FORA de media
	   queries e vale 0,3,0 - ganhava a um .t360-steps--pop simples, que vale
	   0,2,0. Duplicar a classe iguala a especificidade e, como esta regra vem
	   depois no ficheiro, passa a ganhar. Funciona para qualquer --nX. */
	.t360-steps--pop.t360-steps--pop .t360-steps__row {
		grid-template-columns: 1fr;
		gap: 12px;
	}
	.t360-steps--pop .t360-steps__line,
	.t360-steps--pop .t360-steps__line2,
	.t360-steps--pop .t360-steps__progress { display: none; }
	.t360-pstep {
		min-width: 0;
		display: grid;
		grid-template-columns: 64px 1fr;
		grid-template-areas: "node title" "node desc";
		align-items: center;
		column-gap: 14px;
		text-align: left;
		padding: 12px 14px;
		border: 1px solid var(--t360-line, #e6ddd3);
		border-radius: 16px;
		background: var(--t360-white, #fff);
	}
	.t360-pstep__node { grid-area: node; width: 64px; height: 64px; margin: 0; }
	.t360-pstep__disc svg { width: 26px; height: 26px; }
	.t360-pstyle--gauge .t360-pstep__disc,
	.t360-pstyle--gaugefull .t360-pstep__disc { width: 54px; height: 54px; }
	.t360-pstyle--gauge .t360-pstep__disc svg,
	.t360-pstyle--gaugefull .t360-pstep__disc svg { width: 24px; height: 24px; }
	.t360-pstep__num { width: 22px; height: 22px; font-size: 11px; }
	.t360-pstyle--gauge .t360-pstep__num,
	.t360-pstyle--gaugefull .t360-pstep__num { top: -2px; right: -2px; }
	.t360-pstep__title { grid-area: title; margin: 0; font-size: 17px; }
	.t360-pstep__desc { grid-area: desc; margin: 3px 0 0; font-size: 13px; line-height: 1.45; }
}

/* =========================================================
   Sobre nós - layout="side": os 4 cartões à direita do texto
   + variação sem texto (text="off")
   ========================================================= */
.t360-about__split {
	display: grid;
	grid-template-columns: 1.05fr 1fr;
	gap: clamp(32px, 4vw, 56px);
	align-items: center;
}
.t360-about__split .t360-head {
	max-width: none;
	margin: 0;
	text-align: left;
}
.t360-about__split .t360-about__text { margin-top: 18px; }
/* Cartões em 2x2, mais compactos (coluna estreita) */
.t360-about__values--side {
	grid-template-columns: 1fr 1fr;
	margin-top: 0;
	gap: 12px;
}
.t360-about__values--side .t360-about-value { padding: 16px 15px; gap: 11px; }
.t360-about__values--side .t360-about-value__ic { width: 36px; height: 36px; border-radius: 10px; }
.t360-about__values--side .t360-about-value__ic svg { width: 19px; height: 19px; }
.t360-about__values--side .t360-about-value__t { font-size: 14px; }
.t360-about__values--side .t360-about-value__d { font-size: 12px; }
/* Sem texto: o cabeçalho deixa de ser 2 colunas */
.t360-about--notext .t360-about__head { grid-template-columns: 1fr; }
@media (max-width: 900px) {
	.t360-about__split { grid-template-columns: 1fr; gap: 26px; }
	.t360-about__values--side { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 520px) {
	.t360-about__values--side { grid-template-columns: 1fr; }
}

/* Sobre nos - CTA depois dos 4 tiles (cta_pos="after") */
.t360-about__ctaafter { margin-top: clamp(32px, 4vw, 46px); }
.t360-about--row .t360-about__ctaafter { text-align: center; }
/* cta_pos="after-left": mesmo sitio, alinhado a esquerda */
.t360-about--row .t360-about__ctaafter--left,
.t360-about__ctaafter--left { text-align: left; }
/* No layout "side" o CTA fica dentro da coluna dos tiles */
.t360-about__values--side .t360-about__ctaafter { grid-column: 1 / -1; margin-top: clamp(14px, 2vw, 20px); }
