:root {
	--dv-line: 1px solid color-mix(in srgb, var(--wp--preset--color--digital) 18%, transparent);
	--dv-transition: 180ms ease;
}

html {
	scroll-behavior: smooth;
}

body {
	-moz-osx-font-smoothing: grayscale;
	-webkit-font-smoothing: antialiased;
}

::selection {
	background: var(--wp--preset--color--sustainable);
	color: var(--wp--preset--color--white);
}

:where(a, button, input, textarea, select):focus-visible {
	outline: 3px solid var(--wp--preset--color--sustainable);
	outline-offset: 3px;
}

.wp-site-blocks {
	padding-left: 0;
	padding-right: 0;
}

.dv-site-header {
	border-bottom: var(--dv-line);
}

.dv-brand {
	display: inline-flex;
	flex: 0 0 auto;
	line-height: 0;
}

.dv-brand img {
	display: block;
	height: auto;
	width: min(220px, 48vw);
}

.dv-brand--footer img {
	width: min(220px, 58vw);
}

.dv-site-header .wp-block-navigation-item__content {
	text-decoration: none;
	text-underline-offset: 0.35em;
}

.dv-site-header .wp-block-navigation-item__content:hover {
	text-decoration: underline;
	text-decoration-color: var(--wp--preset--color--sustainable);
	text-decoration-thickness: 2px;
}

/* O menu compacto herda o tamanho pequeno da navegação de desktop. No painel
   aberto em telemóvel, aumentamos a letra e a área tocável para melhorar a
   leitura e a seleção sem alterar o menu horizontal. */
.dv-site-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content {
	align-items: flex-start;
	gap: 0.35rem;
}

.dv-site-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container {
	gap: 0.15rem;
}

.dv-site-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content {
	font-size: clamp(1.25rem, 6vw, 1.5rem);
	line-height: 1.2;
	padding: 0.7rem 0;
}

.dv-eyebrow {
	align-items: center;
	display: flex;
	font-size: var(--wp--preset--font-size--small);
	font-weight: 700;
	gap: 0.75rem;
	letter-spacing: 0.08em;
	text-transform: uppercase;
}

.dv-eyebrow::before {
	background: var(--wp--preset--color--sustainable);
	content: "";
	height: 2px;
	width: 2.5rem;
}

/* -------------------------------------------------------------------------
 * Sistema editorial partilhado
 *
 * As classes `is-style-*` são expostas no editor; as classes `dv-*` permitem
 * compor os mesmos elementos em padrões e componentes dinâmicos.
 * ---------------------------------------------------------------------- */

.is-style-dv-page-intro,
.dv-page-intro {
	font-size: var(--wp--preset--font-size--lead);
	line-height: 1.5;
	margin-block-end: var(--wp--preset--spacing--50);
	max-width: min(54ch, var(--wp--style--global--content-size));
}

.is-style-dv-label,
.dv-label {
	color: var(--wp--preset--color--sustainable);
	font-size: var(--wp--preset--font-size--small);
	font-weight: 700;
	letter-spacing: 0.08em;
	line-height: 1.35;
	margin-block: 0;
	text-transform: uppercase;
}

.dv-section-header {
	border-top: 2px solid var(--wp--preset--color--digital);
	display: grid;
	gap: 0.85rem;
	margin-block: var(--wp--preset--spacing--60) var(--wp--preset--spacing--40);
	padding-top: var(--wp--preset--spacing--30);
}

.dv-section-header > * {
	margin-block: 0;
}

.dv-section-header > p:last-child {
	color: color-mix(in srgb, var(--wp--preset--color--graphite) 78%, var(--wp--preset--color--white));
	max-width: 58ch;
}

.dv-section-header--inline {
	align-items: end;
	display: flex;
	gap: var(--wp--preset--spacing--40);
	justify-content: space-between;
	margin-block: 0 var(--wp--preset--spacing--40);
}

.dv-section-header--inline > p:last-child {
	flex-shrink: 0;
}

.is-style-dv-section-heading,
.dv-section-heading {
	border-top: 2px solid var(--wp--preset--color--digital);
	margin-block-start: var(--wp--preset--spacing--60);
	padding-top: var(--wp--preset--spacing--30);
}

.dv-card-grid {
	align-items: stretch;
	gap: var(--wp--preset--spacing--30);
}

.is-style-dv-card,
.is-style-dv-card-mist,
.dv-card {
	border: 1px solid color-mix(in srgb, var(--wp--preset--color--digital) 14%, transparent);
	border-top: 3px solid var(--wp--preset--color--sustainable);
	box-sizing: border-box;
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--30);
	height: 100%;
	padding: clamp(1.25rem, 2.5vw, 1.75rem);
}

.is-style-dv-card-mist,
.dv-card--mist {
	background: var(--wp--preset--color--mist);
	border-color: transparent;
	border-top-color: var(--wp--preset--color--sustainable);
}

:where(.is-style-dv-card, .is-style-dv-card-mist, .dv-card) > * {
	margin-block: 0;
}

:where(.is-style-dv-card, .is-style-dv-card-mist, .dv-card) > .wp-block-buttons:last-child,
:where(.is-style-dv-card, .is-style-dv-card-mist, .dv-card) > .is-style-dv-text-link:last-child {
	margin-block-start: auto;
	padding-block-start: var(--wp--preset--spacing--20);
}

.dv-card-grid > .wp-block-column {
	min-width: 0;
}

.dv-card-grid > .wp-block-column > :where(.is-style-dv-card, .is-style-dv-card-mist, .dv-card) {
	height: 100%;
}

.wp-block-button.is-style-dv-text-link .wp-block-button__link {
	background: transparent !important;
	border: 0;
	color: var(--wp--preset--color--digital) !important;
	padding: 0.3rem 0;
	text-decoration: underline;
	text-decoration-color: color-mix(in srgb, currentColor 35%, transparent);
	text-underline-offset: 0.3em;
}

.wp-block-button.is-style-dv-text-link .wp-block-button__link::after,
.dv-button--external .wp-block-button__link::after,
.dv-action-link::after {
	content: "↗";
	display: inline-block;
	font-size: 1.1em;
	line-height: 0;
	margin-inline-start: 0.4rem;
	transition: transform var(--dv-transition);
}

.wp-block-button.is-style-dv-text-link .wp-block-button__link:hover,
.wp-block-button.is-style-dv-text-link .wp-block-button__link:focus-visible {
	background: transparent !important;
	color: var(--wp--preset--color--sustainable) !important;
	transform: none;
}

.wp-block-button.is-style-dv-text-link .wp-block-button__link:hover::after,
.dv-button--external .wp-block-button__link:hover::after,
.dv-action-link:hover::after {
	transform: translate(0.15rem, -0.15rem);
}

.dv-actions {
	gap: var(--wp--preset--spacing--20);
	margin-block-start: var(--wp--preset--spacing--40);
}

.is-style-dv-notice,
.dv-notice {
	background: var(--wp--preset--color--mist);
	border-left: 4px solid var(--wp--preset--color--sustainable);
	box-sizing: border-box;
	margin-block: var(--wp--preset--spacing--40);
	padding: var(--wp--preset--spacing--30);
}

.is-style-dv-empty-state,
.dv-empty-state {
	border: 1px dashed color-mix(in srgb, var(--wp--preset--color--digital) 35%, transparent);
	color: color-mix(in srgb, var(--wp--preset--color--graphite) 72%, var(--wp--preset--color--white));
	margin-block: var(--wp--preset--spacing--40);
	padding: var(--wp--preset--spacing--40);
	text-align: center;
}

.dv-meta-list {
	border-top: var(--dv-line);
	list-style: none;
	margin-block: var(--wp--preset--spacing--40);
	padding: 0;
}

.dv-meta-list li {
	border-bottom: var(--dv-line);
	display: grid;
	gap: 0.25rem 1rem;
	grid-template-columns: minmax(9rem, 0.8fr) minmax(0, 1.7fr);
	padding-block: 0.85rem;
}

.dv-meta-list li strong {
	color: var(--wp--preset--color--digital);
	font-weight: 700;
}

.dv-meta {
	align-items: center;
	color: color-mix(in srgb, var(--wp--preset--color--graphite) 72%, var(--wp--preset--color--white));
	display: flex;
	flex-wrap: wrap;
	font-size: var(--wp--preset--font-size--small);
	gap: 0.5rem 1rem;
}

.dv-tag {
	background: var(--wp--preset--color--mist);
	color: var(--wp--preset--color--digital);
	display: inline-block;
	font-size: 0.75rem;
	font-weight: 700;
	letter-spacing: 0.06em;
	padding: 0.3rem 0.55rem;
	text-transform: uppercase;
}

.dv-cta {
	margin-block-start: var(--wp--preset--spacing--60);
}

.dv-cta__layout {
	gap: var(--wp--preset--spacing--40);
}

.dv-cta__copy {
	max-width: 48rem;
}

.dv-cta__copy > * {
	margin-block: 0;
}

.dv-cta__copy > * + * {
	margin-block-start: var(--wp--preset--spacing--20);
}

/* A composição editorial deixa a marca respirar ao lado da mensagem. */
.dv-hero {
	position: relative;
}

.dv-hero__layout {
	align-items: center;
	display: grid;
	gap: clamp(2rem, 5vw, 5rem);
	grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr);
}

.dv-hero__text { min-width: 0; }

.dv-hero__text > :first-child { margin-top: 0; }
.dv-hero__text > * + * { margin-top: 1.5rem; }

.dv-hero .dv-hero__title {
	font-size: clamp(2.8rem, 5.4vw, 4.75rem) !important;
	max-width: 14ch;
	text-wrap: balance;
}

.dv-hero__copy { max-width: 37rem; }

.dv-hero-art {
	margin-top: 0;
	position: relative;
	width: 100%;
}

.dv-hero-art__scene {
	aspect-ratio: 1;
	position: relative;
}

.dv-hero-art__orbits { display: block; width: 100%; height: 100%; }
.dv-hero-art__guide { stroke: #063b53; stroke-opacity: 0.14; stroke-width: 1; }

.dv-hero-art__symbol {
	display: block;
	height: auto;
	left: 20%;
	position: absolute;
	top: 19%;
	width: 60%;
}

/* Fica estático sem JavaScript; só anima quando o controlo está disponível. */
.dv-hero-art__orbit { transform-origin: 240px 240px; }
.dv-hero-art.is-ready .dv-hero-art__orbit--outer { animation: dv-orbit 36s linear infinite; }
.dv-hero-art.is-ready .dv-hero-art__orbit--inner { animation: dv-orbit 28s linear infinite reverse; }
.dv-hero-art.is-paused .dv-hero-art__orbit { animation-play-state: paused; }

@keyframes dv-orbit { to { transform: rotate(360deg); } }

@media (prefers-reduced-motion: reduce) {
	.dv-hero-art.is-ready .dv-hero-art__orbit { animation: none; }
	.dv-axis-card__symbol.is-ready path { animation: none; opacity: 1; }
}

@media (max-width: 781px) {
	/* Em vez de ocupar o seu próprio bloco, o anel passa para trás do texto,
	   como marca d'água decorativa; poupa o espaço que ocupava a seguir aos
	   botões. */
	.dv-hero { overflow: hidden; }
	.dv-hero__layout { grid-template-columns: minmax(0, 1fr); gap: 2rem; }
	.dv-hero__text { position: relative; z-index: 1; }
	.dv-hero-art {
		left: 50%;
		max-width: none;
		opacity: 0.28;
		pointer-events: none;
		position: absolute;
		top: 50%;
		transform: translate(-50%, -50%);
		width: min(420px, 92vw);
		z-index: 0;
	}
	.dv-hero .dv-hero__title { font-size: clamp(2.8rem, 8.5vw, 4rem) !important; }
}

.dv-axis-card,
.dv-sector-card,
.dv-stat {
	border-top: 1px solid currentColor;
	height: 100%;
	padding-top: var(--wp--preset--spacing--30);
}

/* Estados do anel: um segmento aceso, dois, anel fechado. Identificam o eixo,
   como definido nas guidelines; o texto do título dá o significado. */
.dv-axis-card__symbol {
	display: block;
	height: auto;
	margin-bottom: var(--wp--preset--spacing--30);
	width: clamp(3.25rem, 6vw, 4.5rem);
}

/* Cada arco entra em sequência na primeira vez que o cartão fica visível;
   sem essa entrada, o anel mostra sempre o estado final e continua a
   identificar o eixo, como no ícone estático. */
.dv-axis-card__symbol path {
	transform-box: fill-box;
	transform-origin: center;
}

.dv-axis-card__symbol.is-ready path {
	animation: dv-axis-reveal 480ms ease both;
}

.dv-axis-card__symbol.is-ready path:nth-child(1) { animation-delay: 0ms; }
.dv-axis-card__symbol.is-ready path:nth-child(2) { animation-delay: 160ms; }
.dv-axis-card__symbol.is-ready path:nth-child(3) { animation-delay: 320ms; }

@keyframes dv-axis-reveal {
	from { opacity: 0; transform: scale(0.5); }
	to { opacity: 1; transform: scale(1); }
}

/* Realce só na cor do filete: sobre o Azul Digital da secção, o antigo hover
   com fundo azul era invisível e o avanço do padding fazia o texto saltar. */
.dv-sector-card {
	border-top-width: 2px;
	transition: border-top-color var(--dv-transition);
}

.dv-sector-card:hover {
	border-top-color: var(--wp--preset--color--sustainable);
}

.dv-stat__value {
	color: var(--wp--preset--color--digital);
	font-size: clamp(3.5rem, 8vw, 7rem);
	font-weight: 700;
	letter-spacing: -0.06em;
	line-height: 0.85;
}

.dv-post-list .wp-block-post {
	border-top: var(--dv-line);
	padding-top: var(--wp--preset--spacing--30);
}

.dv-post-list .wp-block-post-title a {
	text-decoration: none;
}

.dv-post-list .wp-block-post-title a:hover {
	color: var(--wp--preset--color--sustainable);
}

.dv-partners {
	align-items: center;
	display: flex;
	flex-wrap: wrap;
	font-size: var(--wp--preset--font-size--small);
	font-weight: 700;
	gap: 1.5rem;
}

.dv-partner-logo {
	display: block;
	height: auto;
	max-width: 180px;
}

/* A marca INESC TEC é horizontal: precisa de mais largura do que a da AEP
   para as duas ficarem com peso ótico semelhante. */
.dv-partner-logo--inesctec {
	max-width: 235px;
}

/* Linha de promotores da página Parceiros: só os logótipos, centrados, sem
   enquadramentos nem legendas. */
.dv-partners--page {
	gap: clamp(2.5rem, 6vw, 5rem);
	justify-content: center;
	margin-top: calc(2rem + var(--wp-admin--admin-bar--height, 0px));
}

.dv-partner-logo--page {
	max-width: 210px;
}

.dv-partner-logo--page.dv-partner-logo--inesctec {
	max-width: 270px;
}

.dv-eyebrow--center {
	justify-content: center;
}

@media (max-width: 600px) {
	.dv-partners--page {
		flex-direction: column;
		gap: 2.5rem;
	}

	.dv-partner-logo--page {
		max-width: 190px;
	}

	.dv-partner-logo--page.dv-partner-logo--inesctec {
		max-width: 230px;
	}
}

.dv-site-footer a {
	color: inherit;
}

/* Rodapé institucional: composição editorial, compacta e com um fragmento
   abstrato dos anéis da marca. A decoração é puramente visual e fica sempre
   atrás do conteúdo. */
.dv-site-footer {
	isolation: isolate;
	overflow: hidden;
	position: relative;
}

.dv-site-footer::before {
	border: 1px solid rgb(255 255 255 / 10%);
	border-radius: 50%;
	box-shadow:
		0 0 0 3rem rgb(255 255 255 / 4%),
		0 0 0 6rem rgb(255 255 255 / 3%);
	content: "";
	height: 17rem;
	pointer-events: none;
	position: absolute;
	right: -5rem;
	top: -7rem;
	width: 17rem;
	z-index: -1;
}

.dv-site-footer__main {
	align-items: flex-start;
}

.dv-site-footer__intro {
	max-width: 34rem;
}

.dv-site-footer__description {
	color: rgb(255 255 255 / 78%);
	font-size: 1rem;
	line-height: 1.55;
	margin-block: 1.35rem 0;
	max-width: 35ch;
}

.dv-site-footer__heading {
	color: rgb(255 255 255 / 68%) !important;
	font-size: 0.75rem !important;
	font-weight: 700;
	letter-spacing: 0.09em;
	line-height: 1.3;
	margin-block: 0 1.15rem;
	text-transform: uppercase;
}

.dv-site-footer__navigation .wp-block-navigation__container {
	gap: 0.45rem;
}

.dv-site-footer__navigation .wp-block-navigation-item__content {
	font-size: 1rem;
	line-height: 1.4;
	padding-block: 0.15rem;
	text-decoration-color: transparent;
	text-underline-offset: 0.35em;
	transition: color var(--dv-transition), text-decoration-color var(--dv-transition);
}

.dv-site-footer__navigation .wp-block-navigation-item__content:hover,
.dv-site-footer__navigation .wp-block-navigation-item__content:focus-visible {
	color: var(--wp--preset--color--white);
	text-decoration-color: var(--wp--preset--color--sustainable);
	text-decoration-thickness: 2px;
}

.dv-site-footer .dv-partners {
	align-items: flex-start;
	flex-direction: column;
	gap: 1rem;
}

/* Regra de comunicação do Portugal 2030: os logótipos de outras entidades não
   podem exceder em altura o emblema da União Europeia. O emblema ocupa 200,5
   das 3085 unidades de largura da barra oficial (medido no SVG) e a barra
   ocupa min(760px, largura do conteúdo), pelo que a sua altura acompanha a
   largura da janela. O fator 0,061 fica abaixo da proporção real (0,065) para
   cobrir a diferença entre `100vw` e a largura útil quando há barra de
   deslocamento. A largura máxima de cada logótipo é a altura do emblema
   multiplicada pela proporção do ficheiro; sem a barra visível ao lado, as
   larguras de desenho continuam a mandar. */
.dv-site-footer {
	--dv-eu-emblem-height: calc(min(760px, 100vw - 2rem) * 0.061);
	--dv-logo-max-aep: calc(var(--dv-eu-emblem-height) * 3.6); /* 234 x 65 */
	--dv-logo-max-inesctec: calc(var(--dv-eu-emblem-height) * 7.14); /* 800 x 112 */
}

.dv-site-footer .dv-partner-logo {
	max-width: min(150px, var(--dv-logo-max-aep));
}

.dv-site-footer .dv-partner-logo--inesctec {
	max-width: min(190px, var(--dv-logo-max-inesctec));
}

.dv-site-footer__meta > * {
	margin-block: 0;
}

.dv-site-footer__meta,
.dv-site-footer__motto {
	color: rgb(255 255 255 / 68%);
}

.dv-site-footer__motto {
	letter-spacing: 0.015em;
}

.dv-funding__bar {
	display: block;
	height: auto;
	margin-inline: auto;
	width: min(760px, 100%);
}

@media (max-width: 781px) {
	.dv-site-footer::before {
		right: -9rem;
		top: -8rem;
	}

	.dv-site-footer__main {
		gap: 2.25rem;
	}

	.dv-site-footer__intro {
		max-width: 30rem;
	}

	.dv-site-footer__section {
		border-top: 1px solid rgb(255 255 255 / 18%);
		padding-top: 1.25rem;
	}

	.dv-site-footer__navigation .wp-block-navigation__container {
		gap: 0.15rem;
	}

	.dv-site-footer__navigation .wp-block-navigation-item__content {
		font-size: 1rem;
		padding-block: 0.65rem;
	}

	.dv-site-footer .dv-partners {
		align-items: center;
		flex-direction: row;
		gap: clamp(1.25rem, 7vw, 2.5rem);
	}

	.dv-site-footer .dv-partner-logo {
		max-width: min(125px, var(--dv-logo-max-aep));
	}

	.dv-site-footer .dv-partner-logo--inesctec {
		max-width: min(160px, var(--dv-logo-max-inesctec));
	}
}

@media (max-width: 480px) {
	.dv-brand--footer img {
		width: min(190px, 58vw);
	}

	.dv-site-footer__description {
		font-size: 0.9375rem;
	}

	.dv-site-footer .dv-partners {
		align-items: flex-start;
		flex-direction: column;
		gap: 0.85rem;
	}

	.dv-site-footer .dv-partner-logo {
		max-width: min(115px, var(--dv-logo-max-aep));
	}

	.dv-site-footer .dv-partner-logo--inesctec {
		max-width: min(150px, var(--dv-logo-max-inesctec));
	}

	.dv-site-footer__meta {
		align-items: flex-start;
		flex-direction: column;
		gap: 0.45rem;
	}

	.dv-funding {
		padding-block: 1.25rem !important;
	}
}

/* Resource detail: compact editorial heading and an image-aware banner. */
.dv-resource .dv-resource__title {
	font-size: clamp(2rem, 1.6rem + 1.5vw, 2.75rem);
	line-height: 1.12;
	text-wrap: balance;
	overflow-wrap: anywhere;
}

/* The band adapts to the image: it never crops, never upscales and never
   takes over the page. Wide artwork fills the column and reads as a banner;
   logos and covers stay at their own size, centred on Cinza claro. */
.dv-resource .dv-resource__banner {
	display: flex;
	align-items: center;
	justify-content: center;
	box-sizing: border-box;
	min-height: clamp(160px, 18vw, 220px);
	padding: 20px;
	background: var(--wp--preset--color--mist, #EDEFEE);
	margin-block: 2rem;
}

.dv-resource .dv-resource__banner img {
	width: auto;
	height: auto;
	max-width: 100%;
	max-height: clamp(200px, 26vw, 320px);
	object-fit: contain;
}

.dv-resource .dv-resource__meta {
	column-gap: 1.25rem;
	row-gap: 0.25rem;
}

.dv-resource .dv-resource__meta .wp-block-post-terms a {
	text-decoration: none;
}

.dv-resource .dv-resource__meta .wp-block-post-terms a:hover {
	text-decoration: underline;
}

/* Resource listing: the card grid fills the wide column; the media band follows
   the same rule as the detail page, so logos and covers are never cropped. */
.dv-resource-grid {
	margin-block: 0 2.5rem;
}

.dv-resource-card {
	display: flex;
	flex-direction: column;
	gap: 0.6rem;
	height: 100%;
	box-sizing: border-box;
	padding: 1.25rem;
	border: 1px solid var(--wp--preset--color--mist, #EDEFEE);
	border-bottom: 3px solid var(--wp--preset--color--mist, #EDEFEE);
	background: var(--wp--preset--color--white, #FFFFFF);
	transition: border-color var(--dv-transition);
}

.dv-resource-card > * {
	margin-block: 0;
}

.dv-resource-card:hover {
	border-bottom-color: var(--wp--preset--color--sustainable, #2F7A4F);
}

/* Na faixa do catálogo o fundo já é Cinza claro: os cartões destacam-se pelo
   branco e a moldura da imagem passa a ser um filete, não outro bloco cinzento. */
.dv-catalogue .dv-resource-card {
	border-color: transparent;
	border-bottom-color: var(--wp--preset--color--mist, #EDEFEE);
}

.dv-catalogue .dv-resource-card__media {
	background: var(--wp--preset--color--white, #FFFFFF);
	border: 1px solid var(--wp--preset--color--mist, #EDEFEE);
}

.dv-resource-card__media {
	display: flex;
	align-items: center;
	justify-content: center;
	box-sizing: border-box;
	min-height: 140px;
	padding: 12px;
	background: var(--wp--preset--color--mist, #EDEFEE);
}

.dv-resource-card__media a {
	display: flex;
	height: auto;
	max-width: 100%;
}

.dv-resource-card__media img {
	width: auto;
	height: auto;
	max-width: 100%;
	max-height: 150px;
	object-fit: contain;
}

.dv-resource-card__type a,
.dv-resource-card__type {
	color: var(--wp--preset--color--sustainable, #2F7A4F);
	font-size: 0.75rem;
	font-weight: 700;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	text-decoration: none;
}

.dv-resource-card__title {
	font-size: 1.2rem;
	line-height: 1.2;
}

.dv-resource-card__title a {
	text-decoration: none;
}

.dv-resource-card__title a:hover {
	text-decoration: underline;
}

.dv-resource-card .wp-block-post-excerpt__excerpt {
	font-size: 0.9375rem;
	line-height: 1.5;
}

.dv-resource-card__sector {
	margin-top: auto;
	padding-top: 0.5rem;
	font-size: 0.8125rem;
	color: var(--wp--preset--color--graphite, #26292B);
}

.dv-resource-card__sector a {
	color: inherit;
}

.wp-element-button {
	transition: background-color var(--dv-transition), color var(--dv-transition), transform var(--dv-transition);
}

.wp-element-button:hover {
	background: var(--wp--preset--color--digital) !important;
	color: var(--wp--preset--color--white) !important;
	transform: translateY(-2px);
}

/* O hover é !important de propósito: o WordPress gera as classes de cor da
   paleta com !important (ex.: .has-digital-color, .has-white-background-color),
   e um hover sem !important perde para elas — botões com texto azul ficavam
   com texto azul sobre o fundo azul, e o botão de fundo branco ficava com
   texto branco sobre o fundo branco, ambos ilegíveis. O desenho do tema é
   que o hover preencha qualquer botão de Azul Digital com texto branco.

   Ação secundária: contorno Azul Digital que preenche ao passar o cursor ou
   ao receber foco de teclado; a cor do texto segue a mesma regra. */
.wp-block-button.is-style-outline > .wp-block-button__link:hover,
.wp-block-button.is-style-outline > .wp-block-button__link:focus-visible {
	background: var(--wp--preset--color--digital) !important;
	color: var(--wp--preset--color--white) !important;
}

@media (prefers-reduced-motion: reduce) {
	html {
		scroll-behavior: auto;
	}

	.wp-element-button,
	.dv-sector-card,
	.wp-block-button.is-style-dv-text-link .wp-block-button__link::after,
	.dv-button--external .wp-block-button__link::after,
	.dv-action-link::after {
		transition: none;
	}
}

@media (max-width: 600px) {
	.dv-section-header--inline {
		align-items: start;
		flex-direction: column;
		gap: var(--wp--preset--spacing--20);
	}

	.dv-meta-list li {
		grid-template-columns: minmax(0, 1fr);
	}
}

/* Mapa de cabeçalhos, construído por assets/js/toc.js em páginas com três ou
   mais H2/H3. Sem o script, nada muda; abaixo de três cabeçalhos, o índice
   também não existe. Em ecrãs largos é a coluna direita, fixa; abaixo disso,
   um «Índice» recolhível sob o título. O realce do item ativo é só no
   filete, para não competir com o texto do conteúdo. */

/* Espaçamento base do índice; ajustado por tamanho de ecrã abaixo. */
.dv-toc {
	margin-top: 0.5rem;
}

/* Fechado por omissão em ecrã pequeno; abre com o botão, e em ecrã largo a
   regra da grelha abaixo mostra-o sempre. */
.dv-toc__list {
	display: none;
	list-style: none;
	margin: 0;
	padding: 0;
}

.dv-toc__item a {
	border-left: 2px solid var(--wp--preset--color--mist);
	color: var(--wp--preset--color--graphite);
	display: block;
	font-size: var(--wp--preset--font-size--small);
	line-height: 1.45;
	padding: 0.3rem 0 0.3rem 0.9rem;
	text-decoration: none;
	transition: border-left-color var(--dv-transition), color var(--dv-transition);
}

.dv-toc__item--sub a {
	padding-left: 1.9rem;
}

.dv-toc__item a:hover {
	border-left-color: var(--wp--preset--color--digital);
	color: var(--wp--preset--color--digital);
}

.dv-toc__item.is-active a {
	border-left-color: var(--wp--preset--color--sustainable);
	color: var(--wp--preset--color--digital);
	font-weight: 500;
}

/* Âncoras: folga no topo do salto, já que o cabeçalho do site não é fixo. */
.dv-toc-target {
	scroll-margin-top: 1.5rem;
}

/* Abaixo do ecrã largo, o índice é recolhível, sob o título. O botão ocupa a
   largura toda — texto à esquerda, seta à direita — para se ler como uma
   secção do conteúdo e se notar de imediato. */
.dv-toc__toggle {
	align-items: center;
	background: none;
	border: 0;
	border-bottom: 2px solid var(--wp--preset--color--mist);
	color: var(--wp--preset--color--digital);
	cursor: pointer;
	display: flex;
	font-family: inherit;
	font-size: var(--wp--preset--font-size--small);
	font-weight: 700;
	gap: 0.6rem;
	justify-content: space-between;
	letter-spacing: 0.04em;
	line-height: 1;
	padding: 0.875rem 0;
	text-transform: uppercase;
	width: 100%;
}

.dv-toc__chevron {
	transition: transform var(--dv-transition);
}

.dv-toc.is-open .dv-toc__chevron {
	transform: rotate(180deg);
}

.dv-toc.is-open .dv-toc__list {
	display: block;
	max-height: 60vh;
	margin-top: var(--wp--preset--spacing--20);
	overflow-y: auto;
}

/* Ecrã pequeno: separar o índice do título e do conteúdo. */
@media (max-width: 1199px) {
	main.dv-toc-page {
		display: block;
	}

	main.dv-toc-page > .dv-toc {
		margin-top: 1.5rem;
	}

	main.dv-toc-page .entry-content {
		margin-top: 1.5rem;
	}
}

/* Linhas explícitas: título, imagem opcional e conteúdo. Sem esta definição,
   -1 aponta para o início da grelha explícita e o índice estica a linha do
   título. O índice acompanha as duas linhas abaixo do título. */
@media (min-width: 1200px) {
	main.dv-toc-page {
		column-gap: 0;
		display: grid;
		grid-template-columns: minmax(0, 1fr) minmax(0, var(--wp--style--global--content-size)) minmax(0, 1fr);
		grid-template-rows: auto auto 1fr;
	}

	main.dv-toc-page > :not(.dv-toc) {
		grid-column: 2;
		min-width: 0;
		width: 100%;
	}

	main.dv-toc-page > .dv-toc {
		align-self: start;
		box-sizing: border-box;
		grid-column: 3;
		grid-row: 2 / -1;
		margin-left: var(--wp--preset--spacing--40);
		margin-right: 0;
		min-height: 0;
		/* A mesma margem superior do conteúdo, para o primeiro item do índice
		   alinhar com o primeiro parágrafo. */
		margin-top: var(--wp--preset--spacing--30);
		position: sticky;
		/* Folga ao fixar, incluindo a barra de administração quando existe. */
		top: calc(2rem + var(--wp-admin--admin-bar--height, 0px));
		width: min(220px, calc(100% - var(--wp--preset--spacing--40)));
	}

	main.dv-toc-page .dv-toc__toggle {
		display: none;
	}

	main.dv-toc-page .dv-toc__list {
		display: block;
		max-height: none;
		margin-top: 0;
		overflow-y: visible;
	}
}

@media (prefers-reduced-motion: reduce) {
	.dv-toc__chevron {
		transition: none;
	}
}

/* Homepage: curated resources, with a compact invitation for guests. */
.dv-home-resources {
	padding: var(--wp--preset--spacing--50) var(--wp--preset--spacing--40);
	background: var(--wp--preset--color--mist);
}
.dv-home-resources__inner { max-width: 1240px; margin-inline: auto; }
.dv-home-resources__heading { display: flex; align-items: end; justify-content: space-between; gap: 2rem; margin-bottom: 1.5rem; }
.dv-home-resources__heading h2 { margin: 0; font-size: clamp(1.8rem, 3vw, 2.5rem); line-height: 1.15; }
.dv-home-resources__heading .dv-eyebrow { margin-top: 0; }
.dv-home-resources__all { flex-shrink: 0; text-underline-offset: 0.25em; }
.dv-home-resources__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr)); gap: 1.5rem; }
.dv-home-resources__grid .dv-resource-card:only-child { display: grid; grid-template-columns: minmax(180px, 1fr) 2fr; column-gap: 2rem; align-content: center; }
.dv-home-resources__grid .dv-resource-card:only-child .dv-resource-card__media { grid-column: 1; grid-row: 1 / span 3; }
.dv-home-resources__grid .dv-resource-card:only-child > :not(.dv-resource-card__media) { grid-column: 2; }
.dv-home-resources__account { display: flex; align-items: center; justify-content: space-between; gap: 2rem; margin-top: 1.5rem; padding-top: 1.5rem; border-top: 1px solid #c6cfcb; }
.dv-home-resources__account h3 { font-size: 1.2rem; margin: 0 0 0.5rem; }
.dv-home-resources__account p { max-width: 65ch; margin: 0; font-size: 0.9375rem; }
.dv-home-resources__account .dv-home-resources__notice { margin-top: 0.5rem; }
.dv-home-resources__account > a { flex-shrink: 0; }
@media (max-width: 781px) {
	.dv-home-resources__heading, .dv-home-resources__account { flex-direction: column; align-items: start; gap: 1.25rem; }
	.dv-home-resources__grid .dv-resource-card:only-child { display: flex; }
}

/* Percurso: um eixo de leitura comum ao cabeçalho e às três etapas. */
.dv-project-axes__heading {
	margin-bottom: var(--wp--preset--spacing--50);
	max-width: 760px;
}
.dv-project-axes__heading > .dv-eyebrow { margin-block: 0 1rem; }
.dv-project-axes__heading > h2 { margin-block: 0; text-wrap: balance; }
.dv-project-axes .dv-axis-card {
	box-sizing: border-box;
	display: grid;
	grid-template-rows: auto auto auto 1fr;
	gap: 1rem;
	align-content: start;
}
.dv-project-axes .dv-axis-card > * {
	margin: 0;
	max-width: none;
	min-width: 0;
	justify-self: start;
}
.dv-project-axes .dv-axis-card > h3 { line-height: 1.2; }
.dv-project-axes .dv-axis-card__formal { font-size: 0.9375rem; line-height: 1.5; }
@media (min-width: 782px) {
	.dv-project-axes .dv-axis-card > h3 { min-height: 2.4em; }
	.dv-project-axes .dv-axis-card__formal { min-height: 3em; }
	/* As linhas partilhadas acompanham também títulos maiores ou zoom. */
	@supports (grid-template-rows: subgrid) {
		.dv-project-axes .dv-project-axes__steps {
			display: grid;
			grid-template-columns: repeat(3, minmax(0, 1fr));
			row-gap: 1rem;
		}
		.dv-project-axes__steps > .wp-block-column {
			display: grid;
			grid-row: span 4;
			grid-template-rows: subgrid;
		}
		.dv-project-axes .dv-axis-card {
			grid-row: span 4;
			grid-template-rows: subgrid;
		}
		.dv-project-axes .dv-axis-card > h3,
		.dv-project-axes .dv-axis-card__formal { min-height: 0; }
	}
}
@media (max-width: 781px) {
	.dv-project-axes .dv-axis-card {
		grid-template-columns: 3.25rem minmax(0, 1fr);
		grid-template-rows: auto auto auto;
		align-items: center;
	}
	.dv-project-axes .dv-axis-card__symbol { grid-column: 1; grid-row: 1; width: 3.25rem; }
	.dv-project-axes .dv-axis-card > h3 { grid-column: 2; grid-row: 1; }
	.dv-project-axes .dv-axis-card > p { grid-column: 1 / -1; }
}

/* Eventos — agenda editorial, data em coluna e informação prática. */
.dv-agenda { margin-block: var(--wp--preset--spacing--40); }
.dv-agenda__nav { display: flex; flex-wrap: wrap; gap: .5rem 1.75rem; border-bottom: 1px solid #c6cfcb; margin-bottom: 2.5rem; }
.dv-agenda > .is-style-dv-section-heading { margin-top: 0; }
.dv-agenda__nav a { display: inline-block; padding: .85rem 0; text-decoration: none; border-bottom: 3px solid transparent; font-weight: 500; }
.dv-agenda__nav a[aria-current] { border-color: var(--wp--preset--color--sustainable); color: var(--wp--preset--color--sustainable); }
.dv-event-row { display: grid; grid-template-columns: 84px minmax(0, 1fr) 1.5rem; gap: clamp(1rem, 3vw, 2rem); padding-block: 1.5rem; border-top: 1px solid #c6cfcb; }
.dv-event-row:last-of-type { border-bottom: 1px solid #c6cfcb; }
.dv-event-row__date { align-self: start; display: flex; flex-direction: column; align-items: center; padding: .8rem .3rem; background: var(--wp--preset--color--digital); color: #fff; font-size: .8rem; line-height: 1.5; text-transform: uppercase; }
.dv-event-row__date strong { font-size: 2.7rem; font-weight: 500; line-height: 1.1; font-variant-numeric: tabular-nums; }
.dv-event-row__body > * { margin: 0; }
.dv-event-row__body h3 { font-size: clamp(1.35rem, 2.5vw, 1.85rem); line-height: 1.2; margin-block: .45rem .7rem; overflow-wrap: anywhere; }
.dv-event-row__body h3 a { text-decoration: none; }
.dv-event-row__body h3 a:hover { text-decoration: underline; text-underline-offset: .15em; }
.dv-event-row__when { font-size: .9375rem; font-weight: 500; }
.dv-event-row__place { font-size: .9375rem; margin-top: .3rem; }
.dv-event-row__excerpt { margin-top: .7rem; font-size: 1rem; max-width: 65ch; }
.dv-event-row__arrow { color: var(--wp--preset--color--sustainable); font-size: 1.8rem; }
.dv-event-row .dv-tag { margin-left: .5rem; }
.dv-agenda__pages ul { display: flex; flex-wrap: wrap; gap: .5rem; padding: 0; list-style: none; }
.dv-agenda__pages a, .dv-agenda__pages span { display: block; padding: .6rem .9rem; }
.dv-agenda__pages .current { background: var(--wp--preset--color--mist); }
.dv-event__title { font-size: clamp(2.25rem, 4.2vw, 3.65rem); line-height: 1.08; text-wrap: balance; }
.dv-event-details { margin-block: 2rem; background: var(--wp--preset--color--mist); border-top: 3px solid var(--wp--preset--color--sustainable); padding: clamp(1.25rem, 3vw, 2rem); }
.dv-event-details__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.5rem 2rem; margin: 0; }
.dv-event-details dt { font-size: .75rem; font-weight: 700; text-transform: uppercase; letter-spacing: .07em; color: var(--wp--preset--color--sustainable); margin-bottom: .35rem; }
.dv-event-details dd { margin: 0; font-size: 1rem; overflow-wrap: anywhere; }
.dv-event-details__registration { margin-top: 1.75rem; border-top: 1px solid #c6cfcb; padding-top: 1.5rem; }
.dv-event-details__registration p { font-size: .875rem; margin-bottom: 0; }
.dv-event__back { margin-top: 2.5rem; border-top: 1px solid #c6cfcb; padding-top: 1.5rem; }
.dv-home-events { background: #fff; padding: var(--wp--preset--spacing--50) var(--wp--preset--spacing--30); }
.dv-home-events__inner { max-width: 1240px; margin-inline: auto; }
.dv-home-events__heading { display: flex; justify-content: space-between; align-items: end; gap: 1.5rem; margin-bottom: 1.5rem; }
.dv-home-events__heading h2 { margin: 0; font-size: clamp(1.8rem, 3vw, 2.5rem); line-height: 1.15; }
.dv-home-events__heading .dv-eyebrow { margin-top: 0; }
.dv-home-events__heading > a { flex-shrink: 0; text-underline-offset: .25em; }
@media (max-width: 600px) {
    .dv-event-row { grid-template-columns: 62px minmax(0, 1fr); gap: 1rem; padding-block: 1.5rem; }
    .dv-event-row__date strong { font-size: 2.2rem; }
    .dv-event-row__arrow { display: none; }
    .dv-event-row__excerpt { grid-column: 1 / -1; }
    .dv-event-details__grid { grid-template-columns: 1fr; gap: 1.25rem; }
    .dv-home-events__heading { flex-direction: column; align-items: start; }
}
