/**
 * A página de instalação da app, /app/ e /app/<slug> (Ronda 28, 31 Out 2026).
 * Carrega só aí (inc/app-pagina.php), depois da folha comum (tokens e fontes).
 *
 * Telemóvel primeiro (28c, 390 px); aos 768 px passa ao computador com as
 * medidas do 1024 (28b) e aos 1280 px às do 1440 (28a). O escuro segue o
 * sistema (prefers-color-scheme) com os tokens do navy.
 *
 * As medidas que fogem à escala de tipos do tema (52, 19, 17, 28) são as da
 * Ronda 28 para esta página.
 */

.sp-app-pagina-corpo {
	--apg-fundo: var(--sp-surface-muted, #f4f7fb);
	--apg-cartao: var(--sp-surface, #fff);
	--apg-linha: var(--sp-border, #dfe5ee);
	--apg-tinta: var(--sp-ink, #0f172a);
	--apg-sec: var(--sp-ink-muted, #475569);
	/* O #7C8AA5 do desenho fica a 3,3:1 sobre o fundo: o texto pequeno usa o muted (AA). */
	--apg-fraco: var(--sp-ink-muted, #475569);
	--apg-kicker: var(--sp-porto, #004b9b);
	--apg-ligacao: var(--sp-porto, #004b9b);
	--apg-cap-fundo: var(--sp-surface-subtle, #eef2f7);
	--apg-estrela: var(--sp-estrela, #f5b301);
	--apg-moldura: var(--sp-moldura-telemovel, #0b0b0f);
	--apg-sombra: var(--sp-shadow-modal, 0 20px 60px rgba(4, 15, 33, 0.45));
	--apg-serif: 'Source Serif 4', Georgia, Cambria, serif;
	--apg-sans: 'Libre Franklin', ui-sans-serif, system-ui, sans-serif;
	margin: 0;
	background: var(--apg-fundo);
	color: var(--apg-tinta);
	font-family: var(--apg-sans);
	-webkit-font-smoothing: antialiased;
}

@media (prefers-color-scheme: dark) {
	.sp-app-pagina-corpo {
		color-scheme: dark;
		--apg-fundo: var(--sp-navy, #06152b);
		--apg-cartao: var(--sp-navy-raised, #0c2344);
		--apg-linha: var(--sp-navy-line, #1e3d6b);
		--apg-tinta: var(--sp-on-navy-strong, #f1f5fb);
		--apg-sec: var(--sp-on-navy, #b9cce4);
		--apg-fraco: var(--sp-on-navy-faint, #7f98b9);
		--apg-kicker: var(--sp-on-navy-soft, #9cc0ef);
		--apg-ligacao: var(--sp-on-navy-soft, #9cc0ef);
	}
}

.sp-apg__simbolos {
	position: absolute;
	width: 0;
	height: 0;
	overflow: hidden;
}

.sp-apg {
	position: relative;
	box-sizing: border-box;
	padding: 0 20px;
	overflow-x: clip;
}

.sp-apg *,
.sp-apg *::before,
.sp-apg *::after {
	box-sizing: border-box;
}

:where(.sp-apg) :where(p, h1, h2, figure, blockquote) {
	margin: 0;
}

.sp-apg a:focus-visible {
	outline: 3px solid var(--apg-ligacao);
	outline-offset: 3px;
	border-radius: 6px;
}

/* ---- Cabeçalho ---------------------------------------------------------- */

.sp-apg__cabeca {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	height: 56px;
	border-bottom: 1px solid var(--apg-linha);
}

.sp-apg__logo {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
}

.sp-apg__logo img {
	display: block;
	width: auto;
	height: 26px;
}

.sp-apg__gratis {
	font: 500 12px/1 var(--apg-sans);
	color: var(--apg-fraco);
}

/* ---- A linha de confiança (NotasLojas) ----------------------------------- */

.sp-apg-notas {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 8px;
	font: 500 14px/1.2 var(--apg-sans);
	color: var(--apg-sec);
}

.sp-apg-notas--linha {
	gap: 10px;
}

.sp-apg-notas b {
	font-weight: 700;
	color: var(--apg-tinta);
}

.sp-apg-notas__sep {
	color: var(--apg-linha);
}

.sp-apg-notas__estrelas {
	display: inline-flex;
	gap: 1px;
	line-height: 1;
	color: var(--apg-estrela);
}

.sp-apg-notas__estrelas svg {
	display: block;
}

.sp-apg-notas--cabeca,
.sp-apg-notas--largo {
	display: none;
}

/* ---- Dentro do Facebook / Instagram -------------------------------------- */

/* O balão aponta para o menu da app, logo acima da página, no canto direito. */
.sp-apg__balao {
	position: relative;
	width: max-content;
	max-width: 220px;
	margin: 12px -10px 0 auto;
	padding: 8px 12px;
	border-radius: 10px;
	background: var(--sp-info-ink, #003d7a);
	color: var(--sp-surface, #fff);
	font: 500 12px/16px var(--apg-sans);
}

.sp-apg__balao::before {
	content: '';
	position: absolute;
	top: -8px;
	right: 14px;
	border-right: 7px solid transparent;
	border-bottom: 8px solid var(--sp-info-ink, #003d7a);
	border-left: 7px solid transparent;
}

.sp-apg__dentro {
	display: flex;
	gap: 10px;
	align-items: flex-start;
	margin-top: 12px;
	padding: 12px 14px;
	border: 1px solid var(--sp-info-border, #c3d9f5);
	border-radius: 12px;
	background: var(--sp-info-bg, #f1f6fd);
	color: var(--sp-info-ink, #003d7a);
	font: 400 13px/18px var(--apg-sans);
}

.sp-apg__dentro svg {
	flex: none;
	color: var(--sp-porto, #004b9b);
}

.sp-apg__dentro b {
	font-weight: 600;
}

/* ---- Topo (a promessa e o pedido) ---------------------------------------- */

.sp-apg__corpo {
	display: block;
}

.sp-apg__heroi {
	display: flex;
	flex-direction: column;
	gap: 20px;
	padding: 24px 0 8px;
}

.sp-apg__heroi-texto {
	display: flex;
	flex-direction: column;
	gap: 20px;
}

.sp-apg__kicker {
	font: 700 11px/1 var(--apg-sans);
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--apg-kicker);
}

.sp-apg__titulo {
	margin-top: 12px;
	font-family: var(--apg-serif);
	font-size: 32px;
	font-weight: 700;
	line-height: 1.1;
	letter-spacing: -0.015em;
	color: var(--apg-tinta);
	text-wrap: balance;
}

.sp-apg__frase {
	margin-top: 12px;
	font: 400 16px/1.5 var(--apg-serif);
	color: var(--apg-sec);
	text-wrap: pretty;
}

.sp-apg__frase-longa {
	display: none;
}

.sp-apg__instalar {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 12px;
}

.sp-apg__lojas {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 16px;
}

.sp-apg__selo {
	display: block;
	flex: none;
}

.sp-apg__selo img {
	display: block;
	width: auto;
}

/* O Google Play tem margem dentro da imagem oficial: 56 px ao lado de 46 px. */
.sp-apg__selo--android img {
	height: 56px;
}

.sp-apg__selo--ios img {
	height: 46px;
}

/* Com o sistema conhecido, um selo grande e a outra loja em texto. */
.sp-apg--android .sp-apg__selo--android img,
.sp-apg--ios .sp-apg__selo--android img {
	height: 64px;
}

.sp-apg--android .sp-apg__selo--ios img,
.sp-apg--ios .sp-apg__selo--ios img {
	height: 50px;
}

.sp-apg__selo.is-outra {
	display: none;
}

.sp-apg__aviso {
	padding: 12px 14px;
	border: 1px solid var(--apg-linha);
	border-radius: 12px;
	background: var(--apg-cartao);
	font: 400 14px/1.4 var(--apg-sans);
	color: var(--apg-sec);
}

/* O QR é para o computador: no telemóvel não aparece (nem conta a vista). */
.sp-apg__qr {
	display: none;
}

/* ---- O telemóvel com a captura ------------------------------------------- */

.sp-apg__heroi-tel {
	display: flex;
	justify-content: center;
	padding: 8px 0 4px;
}

.sp-apg-tel {
	--tel-l: 220px;
	--tel-a: 478px;
	--tel-m: 8px;
	--tel-r: 35px;
	--tel-ri: 28px;
	position: relative;
	flex: none;
	width: var(--tel-l);
	height: var(--tel-a);
	padding: var(--tel-m);
	border-radius: var(--tel-r);
	background: var(--apg-moldura);
	box-shadow: var(--apg-sombra);
}

.sp-apg--android .sp-apg-tel:not(.sp-apg-tel--ilha) {
	--tel-a: 489px;
}

.sp-apg-tel__ecra {
	display: block;
	width: 100%;
	height: 100%;
	border-radius: var(--tel-ri);
	background: var(--sp-surface-muted, #f4f7fb);
	object-fit: cover;
	object-position: top;
}

.sp-apg-tel--ilha::after {
	content: '';
	position: absolute;
	top: var(--tel-m);
	left: 50%;
	width: calc(var(--tel-l) * 0.33);
	height: calc(var(--tel-l) * 0.09);
	border-radius: 999px;
	background: var(--apg-moldura);
	transform: translateX(-50%);
}

/* ---- «O que tens na app» -------------------------------------------------- */

.sp-apg__capturas {
	padding: 4px 0 8px;
}

.sp-apg__h2 {
	font-family: var(--apg-serif);
	font-size: 22px;
	font-weight: 700;
	line-height: 1.2;
	color: var(--apg-tinta);
}

.sp-apg__capturas .sp-apg__h2 {
	position: absolute;
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip: rect(0 0 0 0);
	white-space: nowrap;
}

.sp-apg__grelha {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 20px 16px;
}

/* No telemóvel a primeira (o ecrã bloqueado) já está no telemóvel do topo. */
.sp-apg__grelha > .sp-apg-cap:first-child {
	display: none;
}

.sp-apg-cap {
	display: flex;
	flex-direction: column;
	gap: 12px;
	min-width: 0;
}

.sp-apg-cap__moldura {
	overflow: hidden;
	aspect-ratio: 9 / 19.5;
	border: 1px solid var(--apg-linha);
	border-radius: 14px;
	background: var(--apg-cap-fundo);
}

.sp-apg-cap__moldura img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: top;
}

.sp-apg-cap__titulo {
	display: block;
	font: 600 15px/1.3 var(--apg-sans);
	color: var(--apg-tinta);
}

.sp-apg-cap__texto {
	display: block;
	margin-top: 3px;
	font: 400 13px/1.4 var(--apg-sans);
	color: var(--apg-sec);
	text-wrap: pretty;
}

/* ---- Reviews e os selos outra vez ----------------------------------------- */

.sp-apg__opinioes {
	display: flex;
	flex-direction: column;
	gap: 12px;
	padding: 20px 0 8px;
}

.sp-apg__reviews {
	display: flex;
	flex-direction: column;
	gap: 12px;
}

/* No telemóvel, duas (as da loja do sistema primeiro). */
.sp-apg__reviews > .sp-apg-review:nth-child(n + 3) {
	display: none;
}

.sp-apg-review {
	display: flex;
	flex-direction: column;
	gap: 8px;
	padding: 16px;
	border: 1px solid var(--apg-linha);
	border-radius: 16px;
	background: var(--apg-cartao);
}

.sp-apg-review__topo {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
}

.sp-apg-review .sp-apg-notas__estrelas svg {
	width: 14px;
	height: 14px;
}

.sp-apg-review__loja {
	font: 600 11px/1 var(--apg-sans);
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--apg-fraco);
}

.sp-apg-review__texto {
	flex: 1;
	padding: 0;
	border: 0;
	font: 400 15px/1.5 var(--apg-serif);
	font-style: normal;
	color: var(--apg-tinta);
	text-wrap: pretty;
}

.sp-apg-review__autor {
	font: 500 13px/1 var(--apg-sans);
	color: var(--apg-sec);
}

.sp-apg__fim {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 8px;
	padding-top: 4px;
}

.sp-apg__outra {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	font: 500 14px/1 var(--apg-sans);
	color: var(--apg-ligacao);
}

/* ---- Rodapé ------------------------------------------------------------- */

.sp-apg__rodape {
	display: flex;
	flex-direction: column;
	gap: 4px;
	margin-top: 8px;
	padding: 16px 0 20px;
	border-top: 1px solid var(--apg-linha);
	font: 400 12px/16px var(--apg-sans);
	color: var(--apg-fraco);
}

.sp-apg__rodape p {
	order: 2;
}

.sp-apg__continuar {
	order: 1;
	display: inline-flex;
	align-items: center;
	align-self: flex-start;
	gap: 2px;
	min-height: 44px;
	font: 500 14px/1 var(--apg-sans);
	color: var(--apg-sec);
	text-decoration: none;
}

.sp-apg__continuar:hover {
	color: var(--apg-tinta);
	text-decoration: underline;
}

/* ===== Computador (28b, 1024) ============================================= */

@media (min-width: 768px) {
	.sp-apg {
		padding: 0 32px;
	}

	.sp-apg__cabeca,
	.sp-apg__heroi,
	.sp-apg__largura,
	.sp-apg__opinioes,
	.sp-apg__rodape {
		max-width: 960px;
		margin-right: auto;
		margin-left: auto;
	}

	.sp-apg__cabeca {
		height: 72px;
	}

	.sp-apg__logo img {
		height: 30px;
	}

	.sp-apg__gratis,
	.sp-apg-notas--estreito,
	.sp-apg__outra {
		display: none;
	}

	.sp-apg-notas--cabeca,
	.sp-apg-notas--largo {
		display: flex;
	}

	.sp-apg-notas--cabeca {
		font-size: 13px;
	}

	.sp-apg-notas--cabeca .sp-apg-notas__estrelas svg {
		width: 15px;
		height: 15px;
	}

	.sp-apg__heroi {
		display: grid;
		grid-template-columns: minmax(0, 1fr) 260px;
		gap: 48px;
		align-items: center;
		padding: 48px 0;
	}

	.sp-apg__heroi-texto {
		gap: 28px;
		max-width: 560px;
	}

	.sp-apg__kicker {
		font-size: 12px;
	}

	.sp-apg__titulo {
		margin-top: 16px;
		font-size: 40px;
		line-height: 1.06;
	}

	.sp-apg__frase {
		margin-top: 16px;
		font-size: 17px;
	}

	.sp-apg__frase-longa {
		display: inline;
	}

	.sp-apg__frase-curta {
		display: none;
	}

	.sp-apg__instalar {
		gap: 14px;
	}

	/* No computador os dois selos, sempre, com as medidas oficiais. */
	.sp-apg__selo.is-outra {
		display: block;
	}

	.sp-apg .sp-apg__selo--android img {
		height: 56px;
	}

	.sp-apg .sp-apg__selo--ios img {
		height: 46px;
	}

	.sp-apg__qr {
		display: flex;
		align-items: center;
		align-self: flex-start;
		gap: 16px;
		padding: 14px 16px;
		border: 1px solid var(--apg-linha);
		border-radius: 14px;
		background: var(--apg-cartao);
	}

	.sp-apg__qr-codigo {
		flex: none;
		padding: 4px;
		border-radius: 8px;
		/* O QR fica sempre preto sobre branco, também no escuro. */
		background: var(--sp-surface, #fff);
	}

	.sp-apg__qr-codigo svg {
		display: block;
		width: 120px;
		height: 120px;
	}

	.sp-apg__qr-texto {
		display: flex;
		flex-direction: column;
		gap: 4px;
		font: 400 13px/1.4 var(--apg-sans);
		color: var(--apg-sec);
	}

	.sp-apg__qr-texto b {
		font-weight: 600;
		color: var(--apg-tinta);
	}

	.sp-apg__qr-titulo {
		font: 600 15px/1.3 var(--apg-sans);
		color: var(--apg-tinta);
	}

	.sp-apg__heroi-tel {
		padding: 0;
	}

	.sp-apg .sp-apg-tel {
		--tel-l: 260px;
		--tel-a: 565px;
		--tel-m: 9px;
		--tel-r: 42px;
		--tel-ri: 33px;
	}

	.sp-apg__capturas {
		margin: 0 -32px;
		padding: 56px 32px;
		border-top: 1px solid var(--apg-linha);
		border-bottom: 1px solid var(--apg-linha);
		background: var(--apg-cartao);
	}

	.sp-apg__capturas .sp-apg__h2 {
		position: static;
		width: auto;
		height: auto;
		margin-bottom: 32px;
		overflow: visible;
		clip: auto;
		white-space: normal;
		text-align: center;
	}

	.sp-apg__h2 {
		font-size: 28px;
	}

	.sp-apg__grelha {
		grid-template-columns: repeat(5, minmax(0, 1fr));
		gap: 16px;
	}

	.sp-apg__grelha > .sp-apg-cap:first-child {
		display: flex;
	}

	.sp-apg-cap__moldura {
		border-radius: 18px;
	}

	.sp-apg__opinioes {
		align-items: center;
		gap: 32px;
		padding: 56px 0 64px;
	}

	.sp-apg__opinioes .sp-apg__h2 {
		text-align: center;
	}

	.sp-apg__reviews {
		display: grid;
		grid-template-columns: repeat(3, minmax(0, 1fr));
		gap: 20px;
		width: 100%;
	}

	.sp-apg__reviews > .sp-apg-review:nth-child(n + 3) {
		display: flex;
	}

	.sp-apg-review {
		gap: 12px;
		padding: 22px 24px;
	}

	.sp-apg-review .sp-apg-notas__estrelas svg {
		width: 16px;
		height: 16px;
	}

	.sp-apg-review__texto {
		font-size: 17px;
	}

	.sp-apg__fim {
		align-items: center;
		gap: 14px;
		padding-top: 8px;
	}

	.sp-apg__rodape {
		flex-direction: row;
		flex-wrap: wrap;
		align-items: center;
		justify-content: space-between;
		gap: 24px;
		margin-top: 0;
		padding: 24px 0 40px;
		font-size: 13px;
		line-height: 18px;
	}

	.sp-apg__rodape p {
		order: 1;
	}

	.sp-apg__continuar {
		order: 2;
	}

	/* Dentro de uma app no tablet: o aviso fica com a largura do conteúdo. */
	.sp-apg__dentro {
		max-width: 960px;
		margin-right: auto;
		margin-left: auto;
	}
}

@media (min-width: 1024px) {
	.sp-apg__heroi {
		gap: 64px;
		grid-template-columns: minmax(0, 1fr) 300px;
	}

	.sp-apg__titulo {
		font-size: 44px;
	}

	.sp-apg__grelha {
		gap: 24px;
	}
}

/* ===== Computador largo (28a, 1440) ======================================= */

@media (min-width: 1280px) {
	.sp-apg__cabeca,
	.sp-apg__heroi,
	.sp-apg__largura,
	.sp-apg__opinioes,
	.sp-apg__rodape {
		max-width: 1120px;
	}

	.sp-apg__heroi {
		grid-template-columns: minmax(0, 1fr) 340px;
		padding: 64px 0;
	}

	.sp-apg__titulo {
		font-size: 52px;
	}

	.sp-apg__frase {
		font-size: 19px;
	}

	.sp-apg .sp-apg-tel {
		--tel-l: 300px;
		--tel-a: 652px;
		--tel-m: 11px;
		--tel-r: 48px;
		--tel-ri: 38px;
	}
}

@media (prefers-reduced-motion: no-preference) {
	.sp-apg__continuar svg {
		transition: transform 0.15s ease;
	}

	.sp-apg__continuar:hover svg {
		transform: translateX(2px);
	}
}
