/*
 * Habitação: estilos do tema.
 * Os tokens (cores, tipos, espaçamentos) vivem no theme.json; aqui ficam os componentes.
 */

:root {
	--hab-ink: var(--wp--preset--color--ink);
	--hab-blue: var(--wp--preset--color--azulejo);
	--hab-blue-deep: var(--wp--preset--color--azulejo-deep);
	--hab-yellow: var(--wp--preset--color--amarelo);
	--hab-paper: var(--wp--preset--color--paper);
	--hab-base: var(--wp--preset--color--base);
	--hab-border: 3px solid var(--hab-ink);
	--hab-shadow: 6px 6px 0 var(--hab-ink);

	/* Azulejo: ../img/azulejo.svg (cor) e ../img/azulejo-motif.svg (máscara, qualquer cor). */
	--hab-tile-band: 48px;
}

/* ---------- Base ---------- */

body {
	-webkit-font-smoothing: antialiased;
	text-rendering: optimizeLegibility;
}

::selection {
	background: var(--hab-yellow);
	color: var(--hab-ink);
}

:where(a, button, summary, input):focus-visible {
	outline: 3px solid var(--hab-yellow);
	outline-offset: 3px;
	box-shadow: 0 0 0 6px var(--hab-ink);
}

/* Secções coladas umas às outras: o ritmo vem do padding, não das margens. */
.wp-site-blocks > *,
.hab-main,
.hab-main > *,
.hab-landing > .alignfull,
.hab-prose > .alignfull {
	margin-block: 0;
}

.hab-section {
	position: relative;
	overflow: clip;
}

.hab-section > * {
	position: relative;
}

/*
 * Secções largas: alinhar à esquerda da coluna de 1280px os elementos com
 * largura própria (texto de abertura, frases), em vez de os centrar.
 */
.hab-section.is-layout-constrained:not(.hab-narrow) > :not(.alignfull) {
	margin-left: max(0px, calc((100% - 1280px) / 2)) !important;
	margin-right: auto !important;
}

.hab-display {
	/* Anton tem maiúsculas altas: abaixo disto, cedilhas e tils tocam na linha seguinte. */
	line-height: 1.15 !important;
	letter-spacing: -0.005em;
	text-wrap: balance;
}

h2,
h3 {
	text-wrap: balance;
}

.hab-kicker {
	display: inline-flex;
	align-items: center;
	gap: 0.6rem;
	margin-bottom: 0;
	font-size: 0.875rem;
	font-weight: 800;
	letter-spacing: 0.1em;
	text-transform: uppercase;
}

.hab-kicker::before {
	content: "";
	width: 1.75rem;
	height: 0.35rem;
	background: var(--hab-yellow);
	box-shadow: 2px 2px 0 var(--hab-ink);
}

.hab-lead {
	max-width: 62ch;
	font-size: var(--wp--preset--font-size--large);
	line-height: 1.5;
}

.hab-statement {
	margin-top: var(--wp--preset--spacing--50) !important;
	font-family: var(--wp--preset--font-family--display);
	font-size: var(--wp--preset--font-size--x-large);
	line-height: 1.15;
	text-transform: uppercase;
	max-width: 30ch;
}

.hab-statement::first-line {
	color: var(--hab-blue);
}

.hab-textlink a {
	font-weight: 800;
	text-decoration-thickness: 2px;
	text-underline-offset: 0.25em;
}

/* ---------- Botões ---------- */

.wp-block-button__link {
	transition: transform 0.15s ease, box-shadow 0.15s ease, background-color 0.15s ease, color 0.15s ease;
}

.wp-block-button__link:hover {
	transform: translate(-2px, -2px);
	box-shadow: 8px 8px 0 var(--hab-ink);
}

.wp-block-button__link:active {
	transform: translate(3px, 3px);
	box-shadow: 1px 1px 0 var(--hab-ink);
}

.wp-block-button.is-style-outline > .wp-block-button__link {
	background: transparent;
	color: inherit;
	border: 3px solid currentColor;
	padding: 0.85em 1.4em;
}

.wp-block-button.is-style-outline > .wp-block-button__link:hover {
	background: var(--hab-ink);
	color: var(--hab-yellow);
	border-color: var(--hab-ink);
}

.wp-block-button.is-style-ink > .wp-block-button__link {
	background: var(--hab-ink);
	color: var(--hab-yellow);
}

.wp-block-button.is-style-ink > .wp-block-button__link:hover {
	background: var(--hab-blue);
	color: var(--hab-base);
}

/* Botões claros sobre fundos escuros. */
.has-azulejo-background-color .wp-block-button.is-style-outline > .wp-block-button__link,
.has-azulejo-deep-background-color .wp-block-button.is-style-outline > .wp-block-button__link,
.has-ink-background-color .wp-block-button.is-style-outline > .wp-block-button__link {
	color: var(--hab-base);
	border-color: var(--hab-base);
	box-shadow: 6px 6px 0 rgba(0, 0, 0, 0.35);
}

.has-azulejo-background-color .wp-block-button.is-style-outline > .wp-block-button__link:hover,
.has-azulejo-deep-background-color .wp-block-button.is-style-outline > .wp-block-button__link:hover,
.has-ink-background-color .wp-block-button.is-style-outline > .wp-block-button__link:hover {
	background: var(--hab-base);
	color: var(--hab-ink);
}

.hab-section .wp-block-buttons {
	margin-top: var(--wp--preset--spacing--50);
}

/* ---------- Barra superior e cabeçalho ---------- */

.hab-topbar {
	padding-block: 0.4rem;
	font-size: 0.875rem;
}

.hab-topbar p {
	margin: 0;
}

.hab-topbar a {
	color: var(--hab-yellow);
}

/*
 * Cabeçalho fixo, mas só a barra principal: a barra superior (língua, contacto)
 * sobe com a página. --hab-topbar-h é medido em theme.js.
 */
.hab-site-header {
	position: sticky;
	top: calc(-1 * var(--hab-topbar-h, 0px));
	z-index: 50;
}

.admin-bar .hab-site-header {
	top: calc(var(--wp-admin--admin-bar--height, 32px) - var(--hab-topbar-h, 0px));
}

html {
	scroll-padding-top: 6.5rem;
}

/* Ecrãs muito baixos (telemóvel deitado, zoom forte): nada fixo. */
@media (max-height: 500px) {
	.hab-site-header {
		position: relative;
		top: auto !important;
	}

	html {
		scroll-padding-top: 0;
	}
}

@media (max-width: 600px) {
	/* No telemóvel a barra de administração não é fixa. */
	.admin-bar .hab-site-header {
		top: calc(-1 * var(--hab-topbar-h, 0px));
	}
}

/* Barra superior: frase e email só quando cabem numa linha (o email também está no rodapé). */
@media (max-width: 781px) {
	/* O email também está no rodapé: no telemóvel, a barra fica só com a língua. */
	.hab-topbar__text {
		position: absolute !important;
		width: 1px;
		height: 1px;
		overflow: hidden;
		clip-path: inset(50%);
		white-space: nowrap;
	}

	.hab-topbar__inner {
		justify-content: flex-end !important;
	}
}

.hab-header {
	padding-block: 0.85rem;
	border-bottom: var(--hab-border);
}

.hab-header__bar,
.hab-header__nav {
	gap: clamp(0.75rem, 2vw, 2rem);
}

.hab-brand {
	display: flex;
	align-items: center;
	gap: 0.65rem;
	margin: 0;
}

.hab-brand::before {
	content: "";
	flex: none;
	width: 2.25rem;
	height: 2.25rem;
	background: #fbf8f1 url(../img/azulejo.svg) center / 100% 100%;
	border: var(--hab-border);
	box-shadow: 3px 3px 0 var(--hab-ink);
}

.hab-brand a {
	color: inherit;
	padding-block: 0.4rem;
	text-decoration: none;
}

.hab-nav .wp-block-navigation-item__content {
	padding-block: 0.35rem;
	text-decoration: none;
	background: linear-gradient(var(--hab-yellow), var(--hab-yellow)) left 100% / 0 0.35em no-repeat;
	transition: background-size 0.2s ease;
}

.hab-nav .wp-block-navigation-item__content:hover,
.hab-nav .current-menu-item > .wp-block-navigation-item__content {
	background-size: 100% 0.35em;
}

.hab-header__cta {
	margin: 0 !important;
}

.hab-header__cta .wp-block-button__link {
	white-space: nowrap;
	padding: 0.6em 1.1em;
	font-size: 0.9rem;
	box-shadow: 4px 4px 0 var(--hab-ink);
}

/*
 * Menu móvel (abaixo de 1100px). O contentor é que faz scroll; por isso:
 * - o botão de fechar fica fixo no canto, com alvo de toque de 44px;
 * - a faixa de azulejo vai no fim da lista (antes era fixa e tapava o último item);
 * - cada secção abre e fecha com o botão .hab-nav__acc (theme.js).
 */
.wp-block-navigation__responsive-container.is-menu-open {
	padding: 0 clamp(1rem, 4vw, 2.5rem) !important;
	overscroll-behavior: contain;
}

.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-dialog {
	padding-top: 5rem;
}

.wp-block-navigation__responsive-container.is-menu-open::after {
	content: "";
	flex: none;
	height: var(--hab-tile-band);
	margin: 2.5rem calc(-1 * clamp(1rem, 4vw, 2.5rem)) 0;
	margin-top: auto;
	background: url(../img/azulejo.svg) 0 0 / var(--hab-tile-band);
	border-top: var(--hab-border);
}

.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content {
	padding-bottom: 2.5rem;
}

.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-close {
	position: fixed;
	top: 0.85rem;
	right: clamp(1rem, 4vw, 2.5rem);
	z-index: 3;
	display: grid;
	place-items: center;
	width: 2.75rem;
	height: 2.75rem;
	color: var(--hab-ink);
	background: var(--hab-base);
	border: var(--hab-border);
	box-shadow: 3px 3px 0 var(--hab-ink);
}

.admin-bar .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-close {
	top: calc(0.85rem + var(--wp-admin--admin-bar--height, 0px));
}

.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-close svg {
	width: 1.6rem;
	height: 1.6rem;
}

.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content,
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container,
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item {
	align-items: stretch !important;
	text-align: left;
}

.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container {
	gap: 0 !important;
	width: 100%;
}

.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container > .wp-block-navigation-item {
	display: grid !important;
	grid-template-columns: minmax(0, 1fr) auto;
	align-items: center !important;
	border-bottom: 2px solid rgb(255 253 248 / 0.25);
}

.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container > .wp-block-navigation-item > .wp-block-navigation-item__content {
	padding-block: 0.85rem;
	font-family: var(--wp--preset--font-family--display);
	font-size: clamp(1.75rem, 7vw, 2.25rem);
	font-weight: 400;
	line-height: 1.1;
	overflow-wrap: anywhere;
	justify-self: start;
}

.hab-nav__acc,
.hab-nav__cta {
	display: none;
}

/* Cópia do botão «Participa» no fim do menu móvel (theme.js). */
.is-menu-open .hab-nav__cta {
	display: block;
	margin-top: 2rem !important;
}

.is-menu-open .hab-nav__cta .wp-block-button__link {
	font-size: 1rem;
	padding: 0.85em 1.4em;
	color: var(--hab-ink);
	background: var(--hab-yellow);
	box-shadow: 4px 4px 0 var(--hab-ink);
}

.is-menu-open .hab-nav__acc {
	display: grid;
	place-items: center;
	width: 2.75rem;
	height: 2.75rem;
	padding: 0;
	color: inherit;
	background: transparent;
	border: 2px solid currentColor;
	cursor: pointer;
}

.is-menu-open .hab-nav__acc svg {
	transition: transform 0.2s ease;
}

.is-menu-open .hab-nav__acc[aria-expanded="true"] {
	color: var(--hab-ink);
	background: var(--hab-yellow);
	border-color: var(--hab-yellow);
}

.is-menu-open .hab-nav__acc[aria-expanded="true"] svg {
	transform: rotate(180deg);
}

.is-menu-open .hab-nav__acc:focus-visible {
	outline: 3px solid var(--hab-yellow);
	outline-offset: 2px;
}

/* Página atual: sublinhado amarelo fixo. */
.hab-nav .current-menu-item > .wp-block-navigation-item__content,
.hab-nav .wp-block-navigation-item__content[aria-current] {
	background-size: 100% 0.35em;
}

/* Submenus: painel de cartaz. */
.hab-nav .wp-block-navigation__submenu-container {
	min-width: 17rem !important;
	padding: 0.5rem 0 !important;
	background: var(--hab-base) !important;
	color: var(--hab-ink) !important;
	border: var(--hab-border) !important;
	box-shadow: var(--hab-shadow);
	text-transform: none;
	letter-spacing: 0;
}

.hab-nav .wp-block-navigation__submenu-container .wp-block-navigation-item__content {
	display: block;
	width: 100%;
	padding: 0.55rem 1.1rem !important;
	font-size: 0.95rem;
	font-weight: 600;
	background: none;
}

.hab-nav .wp-block-navigation__submenu-container .wp-block-navigation-item__content:hover,
.hab-nav .wp-block-navigation__submenu-container .wp-block-navigation-item__content:focus-visible {
	background: var(--hab-yellow);
}

.hab-nav .wp-block-navigation__submenu-icon {
	width: 0.7em;
	height: 0.7em;
	margin-left: 0.3em;
}

/* No menu móvel, os submenus abrem por baixo da secção (acordeão). */
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__submenu-container {
	grid-column: 1 / -1;
	display: none !important;
	min-width: 0 !important;
	padding: 0 0 1rem 0.25rem !important;
	background: transparent !important;
	color: inherit !important;
	border: 0 !important;
	box-shadow: none;
}

.wp-block-navigation__responsive-container.is-menu-open .is-acc-open > .wp-block-navigation__submenu-container {
	display: flex !important;
}

/* Sem JavaScript, as secções ficam abertas. */
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item:not(:has(> .hab-nav__acc)) > .wp-block-navigation__submenu-container {
	display: flex !important;
}

.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__submenu-container .wp-block-navigation-item__content {
	padding: 0.6rem 0 !important;
	font-family: var(--wp--preset--font-family--body);
	font-size: 1.0625rem;
	font-weight: 600;
	opacity: 0.9;
}

/*
 * Menu: completo a partir de 1100px; abaixo disso, botão ☰ (o core só o faz abaixo de 600px,
 * o que fazia o menu partir-se em 2-3 linhas em tablets e portáteis pequenos).
 */
@media (min-width: 600px) and (max-width: 1099px) {
	.hab-nav .wp-block-navigation__responsive-container-open:not(.always-shown) {
		display: flex;
	}

	.hab-nav .wp-block-navigation__responsive-container:not(.hidden-by-default):not(.is-menu-open) {
		display: none;
	}
}

@media (max-width: 1099px) {
	.hab-header__nav {
		flex-direction: row-reverse;
	}

	.wp-block-navigation__responsive-container-open {
		display: grid;
		place-items: center;
		width: 2.75rem;
		height: 2.75rem;
		border: var(--hab-border);
		background: var(--hab-base);
		box-shadow: 3px 3px 0 var(--hab-ink);
	}

	.wp-block-navigation__responsive-container-open svg {
		width: 1.6rem;
		height: 1.6rem;
	}
}

/* Alemão: as etiquetas do menu são mais longas, por isso o botão ☰ aparece até 1199px. */
@media (min-width: 1100px) and (max-width: 1199px) {
	html[lang^="de"] .hab-nav .wp-block-navigation__responsive-container-open:not(.always-shown) {
		display: grid;
		place-items: center;
		width: 2.75rem;
		height: 2.75rem;
		border: var(--hab-border);
		background: var(--hab-base);
		box-shadow: 3px 3px 0 var(--hab-ink);
	}

	html[lang^="de"] .hab-nav .wp-block-navigation__responsive-container-open svg {
		width: 1.6rem;
		height: 1.6rem;
	}

	html[lang^="de"] .hab-nav .wp-block-navigation__responsive-container:not(.hidden-by-default):not(.is-menu-open) {
		display: none;
	}

	html[lang^="de"] .hab-header__nav {
		flex-direction: row-reverse;
	}
}

/* Menu compacto entre 1100 e 1279px, para caber numa linha. */
@media (min-width: 1100px) and (max-width: 1279px) {
	.hab-nav {
		font-size: 0.85rem !important;
	}

	.hab-nav .wp-block-navigation__container {
		gap: 1rem !important;
	}

	.hab-header__bar,
	.hab-header__nav {
		gap: 1rem !important;
	}
}

@media (max-width: 600px) {
	.hab-header {
		padding-block: 0.55rem;
	}

	.hab-brand {
		font-size: 1.35rem;
	}

	.hab-brand::before {
		width: 2rem;
		height: 2rem;
	}

	.hab-header__cta .wp-block-button__link {
		padding: 0.55em 0.8em;
		font-size: 0.875rem;
		box-shadow: 3px 3px 0 var(--hab-ink);
	}
}

@media (max-width: 374px) {
	.hab-brand {
		font-size: 1.15rem;
	}

	.hab-header__bar,
	.hab-header__nav {
		gap: 0.5rem !important;
	}

	.hab-header__cta .wp-block-button__link {
		padding: 0.5em 0.55em;
		font-size: 0.8125rem;
		letter-spacing: 0.02em;
	}
}

/* Ecrãs muito estreitos: o «Participa» do cabeçalho não cabe em todas as línguas; fica no menu. */
@media (max-width: 359px) {
	.hab-header__cta {
		display: none !important;
	}
}

/* Seletor de língua. */
.hab-lang {
	position: relative;
	font-size: 0.875rem;
	font-weight: 800;
	letter-spacing: 0.08em;
}

.hab-lang__menu {
	position: relative;
}

.hab-lang__toggle {
	display: inline-flex;
	align-items: center;
	gap: 0.4rem;
	min-height: 2.25rem;
	padding: 0.2rem 0.65rem;
	border: 2px solid currentColor;
	cursor: pointer;
	list-style: none;
	line-height: 1.3;
	user-select: none;
}

.hab-lang__toggle::-webkit-details-marker {
	display: none;
}

.hab-lang__toggle:hover,
.hab-lang__menu[open] > .hab-lang__toggle {
	background: var(--hab-yellow);
	color: var(--hab-ink);
	border-color: var(--hab-yellow);
}

.hab-lang__chevron {
	transition: transform 0.15s ease;
}

.hab-lang__menu[open] .hab-lang__chevron {
	transform: rotate(180deg);
}

.hab-lang__list {
	position: absolute;
	top: calc(100% + 0.4rem);
	right: 0;
	z-index: 200;
	display: grid;
	min-width: 13rem;
	margin: 0;
	padding: 0.35rem;
	list-style: none;
	background: var(--hab-base);
	color: var(--hab-ink);
	border: var(--hab-border);
	box-shadow: var(--hab-shadow);
	letter-spacing: 0;
}

/* No rodapé, a lista abre para cima. */
.hab-site-footer .hab-lang__list {
	top: auto;
	bottom: calc(100% + 0.4rem);
}

.hab-lang__list a {
	display: flex;
	align-items: center;
	gap: 0.75rem;
	min-height: 44px;
	padding: 0.35rem 0.6rem;
	color: inherit;
	font-weight: 600;
	text-decoration: none;
}

.hab-lang__list a:hover,
.hab-lang__list a:focus-visible {
	background: var(--wp--preset--color--tile);
}

.hab-lang__list a[aria-current] {
	background: var(--hab-yellow);
}

.hab-lang__code {
	display: inline-grid;
	place-items: center;
	min-width: 2.1rem;
	padding: 0.1rem 0.3rem;
	border: 2px solid var(--hab-ink);
	font-size: 0.75rem;
	font-weight: 800;
	letter-spacing: 0.06em;
}

@media (prefers-reduced-motion: reduce) {
	.hab-lang__chevron {
		transition: none;
	}
}

/* ---------- Herói ---------- */

.hab-hero::before,
.hab-page-hero::before {
	content: "";
	position: absolute;
	inset: 0 0 0 auto;
	width: min(48vw, 640px);
	background: var(--hab-base);
	opacity: 0.14;
	-webkit-mask: url(../img/azulejo-motif.svg) 0 0 / 140px, linear-gradient(to left, #000 30%, transparent);
	-webkit-mask-composite: source-in;
	mask: url(../img/azulejo-motif.svg) 0 0 / 140px, linear-gradient(to left, #000 30%, transparent);
	mask-composite: intersect;
	pointer-events: none;
}

.hab-hero__cols {
	align-items: center !important;
	gap: var(--wp--preset--spacing--60) !important;
}

.hab-hero .hab-display {
	margin-top: var(--wp--preset--spacing--40);
}

.hab-hero .hab-lead {
	font-size: clamp(1.1rem, 1.6vw, 1.35rem);
}

.hab-article65 {
	position: relative;
	padding: clamp(1.5rem, 3vw, 2.5rem);
	padding-top: calc(clamp(1.5rem, 3vw, 2.5rem) + 44px);
	background: var(--hab-base);
	color: var(--hab-ink);
	border: var(--hab-border);
	box-shadow: 12px 12px 0 var(--hab-yellow), 12px 12px 0 3px var(--hab-ink);
}

.hab-article65::before {
	content: "";
	position: absolute;
	inset: 0 0 auto;
	height: 44px;
	background: url(../img/azulejo.svg) 0 0 / 44px;
	border-bottom: var(--hab-border);
}

.hab-article65__label {
	font-size: 0.875rem;
	font-weight: 800;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--hab-blue);
}

.hab-article65__quote {
	font-size: clamp(1.15rem, 1.7vw, 1.4rem);
	font-weight: 650;
	line-height: 1.4;
}

.hab-article65__note {
	margin-top: 1.25rem !important;
	padding-top: 1rem;
	border-top: 2px dashed var(--hab-ink);
	font-family: var(--wp--preset--font-family--display);
	font-size: 1.35rem;
	line-height: 1.1;
	text-transform: uppercase;
}

/* ---------- Faixa animada ---------- */

.hab-ticker {
	overflow: hidden;
	padding-block: 0.9rem;
	border-block: var(--hab-border);
}

.hab-ticker__track {
	display: inline-block;
	margin: 0;
	padding-left: 100%;
	white-space: nowrap;
	font-family: var(--wp--preset--font-family--display);
	font-size: clamp(1.4rem, 2.6vw, 2rem);
	line-height: 1;
	text-transform: uppercase;
}

.hab-ticker.is-ready .hab-ticker__track {
	padding-left: 0;
	animation: hab-marquee var(--hab-ticker-duration, 40s) linear infinite;
}

.hab-ticker__sep {
	display: inline-block;
	margin-inline: 1.1rem;
	color: var(--hab-blue);
}

@keyframes hab-marquee {
	to {
		transform: translateX(-50%);
	}
}

.hab-ticker:hover .hab-ticker__track {
	animation-play-state: paused;
}

/* ---------- Cartões ---------- */

.hab-cards {
	margin-top: var(--wp--preset--spacing--50) !important;
}

.is-style-poster-card {
	padding: clamp(1.25rem, 2.5vw, 2rem);
	background: var(--hab-base);
	color: var(--hab-ink);
	border: var(--hab-border);
	box-shadow: var(--hab-shadow);
	transition: transform 0.18s ease, box-shadow 0.18s ease;
}

.is-style-poster-card:hover {
	transform: translate(-3px, -3px);
	box-shadow: 9px 9px 0 var(--hab-ink);
}

.is-style-poster-card > :first-child {
	margin-top: 0;
}

.is-style-poster-card h3 {
	margin-top: 0.5rem;
}

.hab-card__tag {
	margin: 0;
	font-size: 0.8125rem;
	font-weight: 800;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--hab-blue);
}

.hab-struggle .hab-card:nth-child(1) {
	border-top-width: 12px;
	border-top-color: var(--hab-blue);
}

.hab-struggle .hab-card:nth-child(2) {
	border-top-width: 12px;
	border-top-color: var(--hab-yellow);
}

.hab-struggle .hab-card:nth-child(3) {
	border-top-width: 12px;
	border-top-color: var(--hab-ink);
}

/* Reivindicações numeradas. */
.hab-demand__num {
	margin: 0;
	font-family: var(--wp--preset--font-family--display);
	font-size: clamp(3rem, 5vw, 4.25rem);
	line-height: 0.9;
	color: var(--hab-yellow);
	-webkit-text-stroke: 2px var(--hab-ink);
	paint-order: stroke fill;
	text-shadow: 3px 3px 0 var(--hab-ink);
}

/* ---------- Números ---------- */

.hab-numbers::after {
	content: "";
	position: absolute;
	inset: auto 0 0;
	height: var(--hab-tile-band);
	background: url(../img/azulejo.svg) 0 0 / var(--hab-tile-band);
	border-top: var(--hab-border);
}

.hab-stats {
	gap: 0 !important;
	margin-top: var(--wp--preset--spacing--50) !important;
	border-top: 2px solid rgba(255, 253, 248, 0.25);
	border-left: 2px solid rgba(255, 253, 248, 0.25);
}

.hab-stat {
	padding: clamp(1.25rem, 2.5vw, 2rem);
	border-right: 2px solid rgba(255, 253, 248, 0.25);
	border-bottom: 2px solid rgba(255, 253, 248, 0.25);
}

.hab-stat > * {
	margin: 0;
}

.hab-stat__num {
	font-family: var(--wp--preset--font-family--display);
	font-size: clamp(2.25rem, 3.4vw, 3.25rem);
	line-height: 1;
	color: var(--hab-yellow);
}

.hab-stat__label {
	margin-top: 0.75rem !important;
	line-height: 1.45;
}

.hab-stat__src {
	margin-top: 1rem !important;
	font-size: 0.8125rem;
	font-weight: 700;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	opacity: 0.8;
}

.lang-pt .hab-stat__src::before {
	content: "↳ Fonte: ";
	content: "↳ Fonte: " / "Fonte: ";
}

.lang-en .hab-stat__src::before {
	content: "↳ Source: ";
	content: "↳ Source: " / "Source: ";
}

/* ---------- Participar ---------- */

.hab-participate__cols {
	gap: var(--wp--preset--spacing--60) !important;
}

.hab-goal {
	margin-top: var(--wp--preset--spacing--50) !important;
	padding: clamp(1.25rem, 2.5vw, 2rem);
	background: var(--hab-blue);
	color: var(--hab-base);
	border: var(--hab-border);
	box-shadow: var(--hab-shadow);
}

.hab-goal__big {
	margin-top: 0;
	font-family: var(--wp--preset--font-family--display);
	font-size: clamp(1.8rem, 3vw, 2.4rem);
	line-height: 1;
	text-transform: uppercase;
	color: var(--hab-yellow);
}

.hab-goal .wp-block-buttons {
	margin-top: 1.25rem !important;
}

.hab-steps {
	counter-reset: step;
}

.hab-step {
	display: grid;
	grid-template-columns: 3.5rem 1fr;
	column-gap: 1.25rem;
	padding-block: 1.5rem;
	border-top: var(--hab-border);
}

.hab-step:last-child {
	border-bottom: var(--hab-border);
}

.hab-step > * {
	grid-column: 2;
	margin: 0 !important;
}

.hab-step > .hab-step__num {
	grid-column: 1;
	grid-row: 1 / span 2;
	display: grid;
	place-items: center;
	width: 3.5rem;
	height: 3.5rem;
	background: var(--hab-yellow);
	border: var(--hab-border);
	box-shadow: 3px 3px 0 var(--hab-ink);
	font-family: var(--wp--preset--font-family--display);
	font-size: 1.75rem;
	line-height: 1;
}

.hab-step h3 {
	margin-bottom: 0.4rem !important;
}

/* ---------- Linha do tempo ---------- */

.hab-timeline {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr));
	gap: var(--wp--preset--spacing--50);
	margin-top: var(--wp--preset--spacing--60) !important;
}

.hab-timeline.is-layout-flow > * {
	margin-block: 0;
}

.hab-timeline__item {
	position: relative;
	padding-top: 1.5rem;
	border-top: 3px solid var(--hab-yellow);
}

.hab-timeline__item::before {
	content: "";
	position: absolute;
	top: -10px;
	left: 0;
	width: 17px;
	height: 17px;
	background: var(--hab-yellow);
	transform: rotate(45deg);
}

.hab-timeline__year {
	margin: 0;
	font-family: var(--wp--preset--font-family--display);
	font-size: clamp(2.5rem, 4vw, 3.25rem);
	line-height: 1;
	color: var(--hab-yellow);
}

.hab-timeline__item h3 {
	margin-top: 0.5rem;
}

.hab-law .hab-timeline__item {
	border-top-color: var(--hab-blue);
}

.hab-law .hab-timeline__item::before {
	background: var(--hab-blue);
}

.hab-law .hab-timeline__year {
	color: var(--hab-blue);
}

/* ---------- Dupla filiação ---------- */

.hab-affiliation::before {
	content: "";
	position: absolute;
	inset: 0;
	background: var(--hab-blue);
	opacity: 0.13;
	-webkit-mask: url(../img/azulejo-motif.svg) 0 0 / 140px;
	mask: url(../img/azulejo-motif.svg) 0 0 / 140px;
	pointer-events: none;
}

/* ---------- Apelo final ---------- */

.hab-cta {
	text-align: left;
}

.hab-cta::before {
	content: "";
	position: absolute;
	inset: 0 0 auto;
	height: var(--hab-tile-band);
	background: url(../img/azulejo.svg) 0 0 / var(--hab-tile-band);
	border-bottom: var(--hab-border);
}

.hab-cta .hab-display {
	max-width: 21ch;
}

.hab-cta .wp-block-button.is-style-outline > .wp-block-button__link:hover {
	color: var(--hab-yellow);
}

/* ---------- Páginas interiores ---------- */

.hab-page-hero .hab-display {
	margin-top: var(--wp--preset--spacing--40);
	max-width: 20ch;
}

.hab-page-hero .hab-lead {
	margin-top: var(--wp--preset--spacing--40);
}

.hab-programme__item {
	display: grid;
	grid-template-columns: minmax(4.5rem, 8rem) 1fr;
	gap: var(--wp--preset--spacing--40);
	padding-block: var(--wp--preset--spacing--60);
	border-top: var(--hab-border);
	scroll-margin-top: 7rem;
}

.hab-programme__item:first-child {
	border-top: 0;
	padding-top: 0;
}

.hab-programme__item.is-layout-flow > *,
.hab-programme__body > :first-child {
	margin-top: 0;
}

.hab-programme__body {
	max-width: 70ch;
}

.hab-programme .hab-demand__num {
	font-size: clamp(3.5rem, 8vw, 6.5rem);
}

@media (max-width: 600px) {
	.hab-programme__item {
		grid-template-columns: 1fr;
	}
}

ul.is-style-checks {
	padding-left: 0;
	list-style: none;
}

ul.is-style-checks > li {
	position: relative;
	padding-left: 2rem;
	margin-bottom: 0.65rem;
}

ul.is-style-checks > li::before {
	content: "→";
	position: absolute;
	left: 0;
	font-weight: 900;
	color: var(--hab-blue);
}

.has-ink-background-color ul.is-style-checks > li::before,
.has-azulejo-deep-background-color ul.is-style-checks > li::before {
	color: var(--hab-yellow);
}

/* Perguntas. */
.hab-faq .wp-block-details:last-child {
	border-bottom: var(--hab-border);
}

.wp-block-details summary {
	position: relative;
	padding-right: 2.5rem;
	font-size: 1.15rem;
	font-weight: 800;
	cursor: pointer;
	list-style: none;
}

.wp-block-details summary::-webkit-details-marker {
	display: none;
}

.wp-block-details summary::after {
	content: "+";
	position: absolute;
	top: 50%;
	right: 0;
	display: grid;
	place-items: center;
	width: 1.75rem;
	height: 1.75rem;
	margin-top: -0.875rem;
	background: var(--hab-yellow);
	border: 2px solid var(--hab-ink);
	font-weight: 900;
	line-height: 1;
}

.wp-block-details[open] summary::after {
	content: "−";
	background: var(--hab-ink);
	color: var(--hab-yellow);
}

.wp-block-details[open] summary {
	margin-bottom: 0.75rem;
}

/* Diretório. */
.hab-directory h2 {
	margin-top: var(--wp--preset--spacing--60);
	scroll-margin-top: 7rem;
}

.hab-directory .hab-cards {
	margin-top: var(--wp--preset--spacing--40) !important;
}

.hab-org h3 a {
	text-decoration: none;
}

.hab-org h3 a::after {
	content: " ↗";
	color: var(--hab-blue);
}

.hab-org:hover h3 a {
	text-decoration: underline;
}

.hab-org__url {
	margin-top: auto;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 0.875rem;
	color: var(--hab-blue);
	word-break: break-all;
}

.hab-note {
	max-width: 70ch;
	padding: 1rem 1.25rem;
	background: var(--hab-paper);
	border-left: 6px solid var(--hab-yellow);
}

/* Fontes. */
.hab-sources {
	border-top: var(--hab-border);
}

.hab-sources li {
	font-size: 0.95rem;
}

/* ---------- Conteúdo corrido (páginas e artigos) ---------- */

.hab-prose {
	padding-block: var(--wp--preset--spacing--60);
}

.hab-prose > p,
.hab-prose > ul,
.hab-prose > ol {
	font-size: 1.125rem;
}

.hab-featured {
	margin-top: var(--wp--preset--spacing--60) !important;
	border: var(--hab-border);
	box-shadow: var(--hab-shadow);
}

.hab-meta {
	gap: 1rem;
}

.hab-meta .wp-block-post-terms a {
	color: inherit;
}

.hab-post-card {
	display: flex;
	flex-direction: column;
	height: 100%;
}

.hab-post-card .wp-block-post-title a {
	text-decoration: none;
}

.hab-pagination {
	margin-top: var(--wp--preset--spacing--60);
	font-weight: 800;
}

.hab-search {
	max-width: 36rem;
	margin-top: var(--wp--preset--spacing--40);
}

.hab-search .wp-block-search__input {
	border: var(--hab-border);
	padding: 0.75rem 1rem;
}

.hab-404 .hab-display {
	max-width: 14ch;
}

/* ---------- Rodapé ---------- */

.hab-footer {
	position: relative;
}

.hab-footer::before {
	content: "";
	position: absolute;
	inset: 0 0 auto;
	height: var(--hab-tile-band);
	background: url(../img/azulejo.svg) 0 0 / var(--hab-tile-band);
}

.hab-footer a {
	color: inherit;
}

.hab-footer a:hover {
	color: var(--hab-yellow);
}

.hab-footer__cols {
	gap: var(--wp--preset--spacing--50) !important;
}

.hab-brand--footer {
	font-size: 2.25rem;
}

.hab-footer__blurb {
	max-width: 42ch;
	opacity: 0.85;
}

.hab-footer__title {
	margin-top: 1.5rem;
	font-size: 1.1rem;
	letter-spacing: 0.04em;
	color: var(--hab-yellow);
}

.hab-footer__links {
	padding: 0;
	list-style: none;
}

.hab-footer__links li {
	margin-bottom: 0.5rem;
}

.hab-footer__links a {
	text-decoration: none;
}

.hab-footer__links a:hover {
	text-decoration: underline;
}

.hab-footer__bottom {
	margin-top: var(--wp--preset--spacing--60) !important;
	padding-top: 1.25rem;
	border-top: 1px solid rgba(255, 253, 248, 0.25);
	font-size: 0.9375rem;
}

.hab-footer__bottom p {
	margin: 0;
	opacity: 0.8;
}

/* ---------- Movimento reduzido ---------- */

@media (prefers-reduced-motion: reduce) {
	*,
	*::before,
	*::after {
		transition: none !important;
		animation: none !important;
	}

	.hab-ticker__track {
		padding-left: 0;
		white-space: normal;
	}
}

/* Âncoras do menu: não ficar escondido debaixo do cabeçalho fixo. */
:where(.hab-main) [id] {
	scroll-margin-top: 8rem;
}

@media (min-width: 782px) {
	.hab-article65 {
		transform: rotate(1.25deg);
	}
}

/* ---------- Utilitários de acessibilidade ---------- */

.screen-reader-text {
	position: absolute !important;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip-path: inset(50%);
	white-space: nowrap;
	border: 0;
}

/* Cartão inteiro clicável a partir do link do título (um só link para leitores de ecrã). */
.hab-stretched {
	text-decoration: none;
}

.hab-stretched::after {
	content: "";
	position: absolute;
	inset: 0;
}

.hab-event article,
.hab-news__item article {
	position: relative;
}

.hab-event:hover .hab-stretched,
.hab-news__item:hover .hab-stretched,
.hab-stretched:focus-visible {
	text-decoration: underline;
	text-decoration-thickness: 3px;
	text-underline-offset: 0.15em;
}

/* Faixa animada: botão de pausa (WCAG 2.2.2). */
.hab-ticker {
	position: relative;
}

.hab-ticker__toggle {
	position: absolute;
	top: 50%;
	right: 0.75rem;
	z-index: 2;
	display: inline-flex;
	align-items: center;
	gap: 0.4rem;
	min-height: 2.25rem;
	padding: 0 0.75rem;
	transform: translateY(-50%);
	background: var(--hab-ink);
	color: var(--hab-yellow);
	border: 2px solid var(--hab-ink);
	font: 800 0.8125rem/1 var(--wp--preset--font-family--body);
	letter-spacing: 0.06em;
	text-transform: uppercase;
	cursor: pointer;
}

.hab-ticker__toggle:hover {
	background: var(--hab-base);
	color: var(--hab-ink);
}

.hab-ticker.is-paused .hab-ticker__track {
	animation-play-state: paused;
}

/* ---------- Agenda ---------- */

.hab-agenda {
	display: grid;
	gap: 1rem;
	margin: var(--wp--preset--spacing--40) 0 0;
	padding: 0;
	list-style: none;
}

.hab-event article {
	display: grid;
	grid-template-columns: 6rem 1fr;
	gap: 1.25rem;
	align-items: start;
	padding: 1.25rem;
	background: var(--hab-base);
	color: var(--hab-ink);
	border: var(--hab-border);
	box-shadow: var(--hab-shadow);
	transition: transform 0.18s ease, box-shadow 0.18s ease;
}

.hab-event article:hover {
	transform: translate(-3px, -3px);
	box-shadow: 9px 9px 0 var(--hab-ink);
}

.hab-event__date {
	margin: 0;
	padding: 0.6rem 0.25rem;
	background: var(--hab-blue);
	color: var(--hab-base);
	border: var(--hab-border);
	text-align: center;
	line-height: 1;
}

.hab-event__date time,
.hab-event__date span {
	display: block;
}

.hab-event__day {
	font-family: var(--wp--preset--font-family--display);
	font-size: 2.6rem;
	color: var(--hab-yellow);
}

.hab-event__month {
	margin-top: 0.3rem;
	font-weight: 800;
	font-size: 1rem;
	text-transform: uppercase;
	letter-spacing: 0.06em;
}

.hab-event__year {
	margin-top: 0.2rem;
	font-size: 0.8125rem;
	opacity: 0.85;
}

.hab-event__body > * {
	margin: 0;
}

.hab-event__meta {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
	align-items: center;
}

.hab-event__type {
	font-size: 0.8125rem;
	font-weight: 800;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--hab-blue);
}

.hab-badge {
	padding: 0.15rem 0.5rem;
	background: var(--hab-ink);
	color: var(--hab-yellow);
	font-size: 0.8125rem;
	font-weight: 800;
	text-transform: uppercase;
}

.hab-event__title {
	margin: 0.35rem 0 0.4rem !important;
	font-size: var(--wp--preset--font-size--large);
}

.hab-event__where {
	font-weight: 600;
}

.hab-event__org {
	margin-top: 0.35rem !important;
	font-size: 0.9375rem;
	color: var(--wp--preset--color--muted);
}

.hab-event.is-cancelado .hab-event__title a,
.hab-event.is-cancelado .hab-event__where {
	text-decoration: line-through;
	text-decoration-thickness: 2px;
}

.hab-agenda.is-past .hab-event article {
	box-shadow: none;
	border-width: 2px;
}

.hab-agenda.is-past .hab-event__date {
	background: var(--hab-ink);
}

@media (max-width: 480px) {
	.hab-event article {
		grid-template-columns: 4.5rem 1fr;
		gap: 0.9rem;
		padding: 1rem;
	}

	.hab-event__day {
		font-size: 2rem;
	}
}

.hab-empty {
	margin-top: var(--wp--preset--spacing--40);
	padding: 1.5rem;
	background: var(--hab-paper);
	border: 3px dashed var(--hab-ink);
}

.hab-empty > * {
	margin: 0;
}

.hab-empty__title {
	font-weight: 800;
	font-size: 1.125rem;
}

.hab-empty p + p {
	margin-top: 0.5rem;
}

/* Detalhes de uma mobilização. */
.hab-event-details {
	margin-bottom: var(--wp--preset--spacing--50);
}

.hab-alert {
	padding: 1rem 1.25rem;
	background: var(--hab-yellow);
	border: var(--hab-border);
	font-size: 1.125rem;
}

.hab-facts {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(13rem, 1fr));
	gap: 0;
	margin: 0;
	border: var(--hab-border);
	box-shadow: var(--hab-shadow);
	background: var(--hab-base);
}

.hab-facts > div {
	padding: 1rem 1.25rem;
	border-bottom: 2px solid var(--hab-ink);
}

.hab-facts dt {
	font-size: 0.8125rem;
	font-weight: 800;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--hab-blue);
}

.hab-facts dd {
	margin: 0.3rem 0 0;
	font-size: 1.125rem;
	font-weight: 600;
}

.hab-event-actions {
	display: flex;
	flex-wrap: wrap;
	gap: 1rem;
	margin-top: var(--wp--preset--spacing--40);
}

.hab-event-content {
	margin-top: var(--wp--preset--spacing--50);
	font-size: 1.125rem;
}

/* ---------- Notícias ---------- */

.hab-news__list {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(min(18rem, 100%), 1fr));
	gap: var(--wp--preset--spacing--40);
	margin: var(--wp--preset--spacing--40) 0 0;
	padding: 0;
	list-style: none;
}

.hab-news__title {
	margin: 0.5rem 0 !important;
}

/* Convite a publicar e grupo «Fundo azulejo». */
.hab-publish::before,
.is-style-azulejo::before {
	content: "";
	position: absolute;
	inset: 0;
	background: var(--hab-blue);
	opacity: 0.1;
	-webkit-mask: url(../img/azulejo-motif.svg) 0 0 / 140px;
	mask: url(../img/azulejo-motif.svg) 0 0 / 140px;
	pointer-events: none;
}

.is-style-azulejo {
	position: relative;
}

.is-style-azulejo > * {
	position: relative;
}

/* ---------- Alto contraste (Windows) ---------- */

@media (forced-colors: active) {
	.hab-kicker::before,
	.hab-hero::before,
	.hab-page-hero::before,
	.hab-affiliation::before,
	.hab-publish::before,
	.is-style-azulejo::before {
		display: none;
	}

	.hab-event__date,
	.hab-badge,
	.hab-lang__list a[aria-current] {
		forced-color-adjust: none;
		background: Canvas;
		color: CanvasText;
		outline: 2px solid CanvasText;
	}

	.hab-nav .current-menu-item > .wp-block-navigation-item__content {
		text-decoration: underline;
	}
}

/* ---------- Impressão (programa, agenda e dados em papel) ---------- */

@media print {
	.hab-topbar,
	.hab-site-header,
	.hab-ticker,
	.hab-cta,
	.hab-publish,
	.hab-site-footer .hab-footer__cols,
	.wp-block-buttons,
	.hab-hero::before,
	.hab-page-hero::before,
	.hab-numbers::after,
	.hab-footer::before {
		display: none !important;
	}

	body,
	.hab-section {
		background: #fff !important;
		color: #000 !important;
	}

	.hab-section {
		padding-block: 1rem !important;
	}

	.hab-stat__num,
	.hab-timeline__year,
	.hab-demand__num,
	mark {
		color: #000 !important;
		-webkit-text-stroke: 0;
		text-shadow: none;
	}

	.is-style-poster-card,
	.hab-event article,
	.hab-article65 {
		box-shadow: none !important;
		transform: none !important;
		break-inside: avoid;
	}

	a[href^="http"]::after {
		content: " (" attr(href) ")";
		font-size: 0.8em;
		font-weight: 400;
	}
}


/* =========================================================================
   Responsivo: tipografia, grelhas, toque.
   ========================================================================= */

/* Frases longas em tamanho cartaz (apelo final, 404): escalam com o ecrã para nunca saírem da coluna. */
.hab-cta .hab-display.has-display-font-size,
.hab-404 .hab-display.has-display-font-size {
	font-size: clamp(2.4rem, 10.5vw, 8.5rem) !important;
}

h1,
h2,
h3 {
	overflow-wrap: break-word;
}

/* Três cartões: 1 coluna ou 3, nunca 2+1 (cartão órfão). */
@media (max-width: 899px) {
	.hab-cards:has(> :nth-child(3):last-child) {
		grid-template-columns: 1fr !important;
	}
}

@media (min-width: 900px) {
	.hab-cards:has(> :nth-child(3):last-child) {
		grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
	}
}

/* Linha do tempo resumida (4): 1, 2 ou 4 colunas. */
@media (min-width: 600px) and (max-width: 1023px) {
	.hab-timeline {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

/* Efeitos de levantar só com rato (em ecrãs táteis ficavam "presos" depois do toque). */
@media (hover: none) {
	.is-style-poster-card:hover,
	.hab-event article:hover {
		transform: none;
		box-shadow: var(--hab-shadow);
	}

	.wp-block-button__link:hover {
		transform: none;
	}
}

/* Rodapé em tablet: 2 colunas em vez de uma lista comprida. */
@media (min-width: 600px) and (max-width: 781px) {
	.hab-footer__cols {
		display: grid !important;
		grid-template-columns: 1fr 1fr;
	}

	.hab-footer__cols > .wp-block-column:first-child {
		grid-column: 1 / -1;
	}
}

/* Links do rodapé com área de toque confortável. */
.hab-footer__links a {
	display: inline-block;
	padding-block: 0.3rem;
}

.hab-footer__links li {
	margin-bottom: 0.2rem;
}

/* Botões em ecrãs estreitos: largura total, fáceis de acertar. */
@media (max-width: 480px) {
	.hab-section .wp-block-buttons > .wp-block-button,
	.hab-event-actions > .wp-block-button {
		width: 100%;
	}

	.hab-section .wp-block-buttons > .wp-block-button > .wp-block-button__link,
	.hab-event-actions .wp-block-button__link {
		width: 100%;
		text-align: center;
	}

	.hab-goal .wp-block-buttons > .wp-block-button {
		width: 100%;
	}
}

/* Ecrãs grandes: mais ar entre secções e texto ligeiramente maior. */
@media (min-width: 1600px) {
	body {
		font-size: 1.125rem;
	}
}

/* Faixas de azulejo: o espaço da secção soma-se à faixa, para nunca tocar no texto. */
.hab-cta {
	padding-top: calc(var(--hab-tile-band) + var(--wp--preset--spacing--60)) !important;
}

.hab-numbers {
	padding-bottom: calc(var(--hab-tile-band) + var(--wp--preset--spacing--60)) !important;
}

.hab-footer {
	padding-top: calc(var(--hab-tile-band) + var(--wp--preset--spacing--60)) !important;
}

@media (max-width: 600px) {
	.hab-brand--footer {
		font-size: 1.75rem;
	}
}

/* =========================================================================
   Herói "acima da dobra": ocupa exatamente um ecrã (menos o cabeçalho),
   com a faixa de palavras de ordem a fechar o fundo do ecrã.
   --hab-header-h e --hab-ticker-h são medidos em theme.js.
   ========================================================================= */

.hab-hero {
	display: flex;
	flex-direction: column;
	justify-content: center;
	min-height: calc(100svh - var(--hab-header-h, 126px) - var(--hab-ticker-h, 64px));
	padding-block: clamp(1.25rem, 5svh, 4.5rem) !important;
}

.admin-bar .hab-hero {
	min-height: calc(100svh - var(--hab-header-h, 126px) - var(--hab-ticker-h, 64px) - var(--wp-admin--admin-bar--height, 0px));
}

.hab-hero > * {
	width: 100%;
}

.hab-hero .hab-display {
	margin-top: clamp(0.75rem, 2.5svh, 1.75rem);
	margin-bottom: 0;
}

.hab-hero .hab-lead {
	margin-top: clamp(0.75rem, 2.5svh, 1.5rem);
}

.hab-hero .wp-block-buttons {
	margin-top: clamp(1rem, 3.5svh, 2.5rem) !important;
}

/*
 * Título do herói: o tamanho depende da largura E da altura do ecrã.
 * Em portáteis e ecrãs largos, duas linhas («CASAS PARA VIVER. / NÃO PARA LUCRAR.»).
 */
.hab-hero .hab-display.has-display-font-size {
	font-size: clamp(3rem, min(7.4vw, 13svh), 6.3rem) !important;
}

@media (max-width: 781px) {
	.hab-hero .hab-display.has-display-font-size {
		font-size: clamp(2.6rem, min(15vw, 7.6svh), 4.5rem) !important;
	}

	.hab-hero .hab-lead {
		font-size: 1.0625rem;
	}

	/* No herói, os dois botões lado a lado sempre que cabem. */
	.hab-hero .wp-block-buttons > .wp-block-button {
		width: auto !important;
	}

	.hab-hero .wp-block-buttons {
		gap: 0.75rem;
	}
}

/* Ecrãs de portátil baixos: cartão do artigo 65.º mais compacto. */
@media (min-width: 782px) and (max-height: 820px) {
	.hab-article65__quote {
		font-size: 1.15rem;
	}

	.hab-article65 {
		padding: 1.5rem;
		padding-top: calc(1.5rem + 44px);
	}
}

/* Ecrãs muito baixos (telemóvel deitado): o herói cresce com o conteúdo. */
@media (max-height: 500px) {
	.hab-hero {
		min-height: 0;
	}
}

/* Portáteis baixos (720–820px de altura): tudo um pouco mais compacto para caber num ecrã. */
@media (min-width: 782px) and (max-height: 820px) {
	.hab-hero {
		padding-block: clamp(1rem, 3svh, 2rem) !important;
	}

	.hab-hero .hab-display.has-display-font-size {
		font-size: clamp(3rem, min(7.4vw, 11.5svh), 6.3rem) !important;
	}

	.hab-hero .hab-lead {
		font-size: 1.125rem;
	}

	.hab-hero .wp-block-buttons {
		margin-top: 1.25rem !important;
	}
}

/* Telemóveis baixos (ex.: iPhone SE): o botão principal tem de aparecer sem deslizar. */
@media (max-width: 781px) and (max-height: 740px) {
	.hab-hero {
		padding-block: clamp(1rem, 3svh, 1.5rem) !important;
	}

	.hab-hero .hab-kicker {
		font-size: 0.8125rem;
		letter-spacing: 0.06em;
	}

	.hab-hero .hab-display.has-display-font-size {
		font-size: clamp(2.4rem, min(15vw, 6.6svh), 4.5rem) !important;
	}

	.hab-hero .hab-lead {
		font-size: 1rem;
		line-height: 1.45;
	}
}

/* Til e acentos das maiúsculas (NÃO, ÇÃO) não tocam na linha de cima. */
.hab-hero .hab-display {
	line-height: 1.1 !important;
}

/* =========================================================================
   Organizações (logótipos), ILC pela Habitação, acampadas.
   ========================================================================= */

.hab-allies {
	gap: var(--wp--preset--spacing--40) !important;
}

.hab-ally {
	position: relative;
	display: flex;
	flex-direction: column;
	background: var(--hab-base);
	color: var(--hab-ink);
	border: var(--hab-border);
	box-shadow: var(--hab-shadow);
	transition: transform 0.15s ease, box-shadow 0.15s ease;
}

.hab-ally > * {
	margin: 0 !important;
	padding-inline: 1.1rem;
}

.hab-ally:hover {
	transform: translate(-2px, -2px);
	box-shadow: 8px 8px 0 var(--hab-ink);
}

.hab-ally:focus-within {
	outline: 3px solid var(--hab-yellow);
	outline-offset: 3px;
}

/* Área do logótipo: altura fixa, logótipo inteiro e centrado. */
.hab-ally__mark {
	display: grid;
	place-items: center;
	height: 8.5rem;
	padding: 1rem 1.25rem !important;
	background: #fff;
	border-bottom: var(--hab-border);
}

.hab-ally.is-dark .hab-ally__mark {
	background: var(--hab-ink);
}

.hab-ally .hab-ally__logo {
	display: block;
	width: 100%;
	height: 6.5rem;
	margin: 0 !important;
	padding: 0 !important;
}

.hab-ally .hab-ally__logo img {
	display: block;
	width: 100% !important;
	height: 100% !important;
	max-width: none;
	object-fit: contain;
}

/* Sem logótipo: monograma em azulejo. */
.hab-ally.has-mono .hab-ally__mark {
	background: var(--hab-blue) url(../img/azulejo-motif.svg) center / 4rem;
}

.hab-ally .hab-ally__mono {
	margin: 0 !important;
	padding: 0.2em 0.45em;
	background: var(--hab-ink);
	color: var(--hab-yellow);
	font-family: var(--wp--preset--font-family--display);
	font-size: 2.6rem;
	line-height: 1;
	letter-spacing: 0.04em;
}

.hab-ally h3 {
	margin-top: 1rem !important;
	font-size: 1.125rem;
	line-height: 1.25;
}

.hab-ally h3 a {
	color: inherit;
}

.hab-ally h3 a::before {
	content: "↗ ";
	color: var(--hab-blue);
}

.hab-ally:hover h3 a {
	text-decoration: underline;
}

.hab-ally p {
	margin-top: 0.5rem !important;
	font-size: 0.9375rem;
}

.hab-ally .hab-org__url {
	margin-top: auto !important;
	padding-top: 0.75rem;
	padding-bottom: 1rem;
}

.hab-allies-section .wp-block-buttons {
	margin-top: var(--wp--preset--spacing--60);
}

/* ILC pela Habitação. */
.hab-ilc__cols {
	gap: var(--wp--preset--spacing--60) !important;
	align-items: flex-start !important;
}

.hab-ilc .hab-steps {
	margin-block: var(--wp--preset--spacing--50) !important;
}

.hab-ilc__card {
	background: var(--hab-base);
}

.hab-ilc__logo {
	width: 7rem;
	margin: 0 0 1rem !important;
	border: var(--hab-border);
}

.hab-ilc__logo img {
	display: block;
	width: 100%;
	height: auto;
}

.hab-ilc__note {
	margin-top: 1rem !important;
	font-size: 0.9375rem;
	max-width: 60ch;
}

.hab-ilc__note a {
	overflow-wrap: anywhere;
}

/* Acampadas: lista de cidades em pastilhas. */
.hab-camps {
	display: flex;
	flex-wrap: wrap;
	gap: 0.75rem;
	padding: 0 !important;
	list-style: none;
}

.hab-camps li {
	margin: 0;
}

.hab-camps a {
	display: inline-flex;
	gap: 0.4rem;
	min-height: 44px;
	align-items: center;
	padding: 0.5rem 1rem;
	border: var(--hab-border);
	background: var(--hab-base);
	box-shadow: 3px 3px 0 var(--hab-ink);
	color: var(--hab-ink);
	font-weight: 700;
	text-decoration: none;
}

.hab-camps a:hover {
	background: var(--hab-yellow);
}

.hab-muted {
	color: var(--wp--preset--color--muted);
	font-size: 0.875rem;
}

.hab-timeline--law .hab-timeline__item a {
	color: inherit;
	text-decoration-thickness: 1px;
	text-underline-offset: 0.15em;
}

@media (hover: none) {
	.hab-ally:hover {
		transform: none;
		box-shadow: var(--hab-shadow);
	}
}

@media (prefers-reduced-motion: reduce) {
	.hab-ally {
		transition: none;
	}
}

/* Página inicial, em telemóveis: mural compacto em 2 colunas (só logótipo e nome). */
@media (max-width: 599px) {
	.hab-allies-section .hab-allies {
		grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
		gap: 0.75rem !important;
	}

	.hab-allies-section .hab-ally {
		box-shadow: 4px 4px 0 var(--hab-ink);
	}

	.hab-allies-section .hab-ally__mark {
		height: 5.5rem;
		padding: 0.6rem !important;
	}

	.hab-allies-section .hab-ally .hab-ally__logo {
		height: 4.25rem;
	}

	.hab-allies-section .hab-ally .hab-ally__mono {
		font-size: 1.8rem;
	}

	.hab-allies-section .hab-ally > * {
		padding-inline: 0.7rem;
	}

	.hab-allies-section .hab-ally h3 {
		margin: 0.6rem 0 0.75rem !important;
		font-size: 0.9375rem;
	}

	.hab-allies-section .hab-ally h3 a::before {
		content: none;
	}

	.hab-allies-section .hab-ally > p {
		display: none;
	}
}
