/*
Theme Name: Nutricardia
Description: Tema-filho do Hello Elementor para a Nutricardia. O header e o footer são modelos do Elementor ("Header Nutricardia" e "Footer Nutricardia", em Modelos > Modelos guardados) e aparecem em todas as páginas.
Author: Nutricardia
Template: hello-elementor
Version: 1.0.0
Requires PHP: 7.4
License: GNU General Public License v3 or later
License URI: https://www.gnu.org/licenses/gpl-3.0.html
Text Domain: nutricardia
*/

/* As cores e fontes vêm das definições globais do Elementor (Site Settings).
   Este ficheiro só trata do que o Elementor gratuito não permite configurar. */

:root {
	--nc-ease: cubic-bezier(.4, 0, .2, 1);
	--nc-ease-out: cubic-bezier(.16, 1, .3, 1);
	--nc-primary: var(--e-global-color-primary, #5B766A);
	--nc-accent: var(--e-global-color-accent, #AD5A3A);
	--nc-text: var(--e-global-color-text, #2E3330);
	--nc-muted-fg: var(--e-global-color-nctexto2, #616B64);
	--nc-muted: var(--e-global-color-ncsuave, #F2F1ED);
	--nc-border: var(--e-global-color-ncborda, #DDE4E1);
	--nc-bg: var(--e-global-color-ncfundo, #F9F8F6);
	--nc-primary-dark: var(--e-global-color-ncverdeesc, #4D675B);
}

body {
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	font-feature-settings: "ss01", "cv01";
}

/* As âncoras (#secção) não ficam escondidas por baixo do header fixo. */
html { scroll-padding-top: 96px; }

/* Foco visível para quem navega com o teclado. */
:where(a, button, summary, [tabindex], input[type="checkbox"], input[type="radio"]):focus-visible {
	outline: 2px solid var(--nc-primary);
	outline-offset: 2px;
}
.elementor-button:focus-visible { outline: 2px solid var(--nc-primary); outline-offset: 3px; }
.nc-wa-float .elementor-button:focus-visible { outline-color: #0B3B24; }

.elementor-widget-text-editor p { margin-block: 0; }
.elementor-widget-text-editor p + p { margin-block-start: 1rem; }

/* Ícones e caixas de ícone com a altura exata do ícone (sem entrelinha nem margens do tema). */
.elementor-widget-icon .elementor-icon-wrapper { line-height: 0; }
.elementor-widget-icon-box .elementor-icon-box-title { margin-block: 0; }
.elementor-widget.nc-rating,
.elementor-widget.nc-dots { --e-icon-list-icon-margin: 0; }
.elementor-widget.nc-rating .elementor-icon-list-icon + .elementor-icon-list-text,
.elementor-widget.nc-dots .elementor-icon-list-icon + .elementor-icon-list-text { padding-inline-start: 0; }
.elementor-widget.nc-dots .elementor-icon-list-icon + .elementor-icon-list-text { align-self: flex-start; }

/* ---------- Header ---------- */

.nc-site-header {
	position: sticky;
	top: 0;
	z-index: 50;
}
body.admin-bar .nc-site-header { top: var(--wp-admin--admin-bar--height, 32px); }
@media (max-width: 600px) {
	body.admin-bar .nc-site-header { top: 0; }
}

.nc-header {
	-webkit-backdrop-filter: blur(24px);
	backdrop-filter: blur(24px);
}

.nc-nav .elementor-icon-list-text { position: relative; }
.nc-nav .elementor-icon-list-text::after {
	content: "";
	position: absolute;
	left: 50%;
	bottom: -4px;
	width: 0;
	height: 1.5px;
	background: var(--nc-primary);
	transform: translateX(-50%);
	transition: width .35s cubic-bezier(.65, 0, .35, 1);
}
.nc-nav .elementor-icon-list-item:hover .elementor-icon-list-text::after,
.nc-nav .elementor-icon-list-item.is-active .elementor-icon-list-text::after { width: 100%; }

.nc-menu-toggle { cursor: pointer; }
.nc-menu-toggle .nc-icon-close { display: none; }
.nc-header.is-open .nc-menu-toggle .nc-icon-open { display: none; }
.nc-header.is-open .nc-menu-toggle .nc-icon-close { display: block; }

.e-con.nc-mobile-panel { display: none !important; }
@media (max-width: 767px) {
	.nc-header.is-open .e-con.nc-mobile-panel,
	body.elementor-editor-active .e-con.nc-mobile-panel { display: flex !important; }
}

.nc-mobile-nav .elementor-icon-list-item > a {
	width: 100%;
	padding: 12px 16px;
	border-radius: 32px;
	transition: background-color .15s var(--nc-ease), color .15s var(--nc-ease);
}
.nc-mobile-nav .elementor-icon-list-item > a:hover { background-color: var(--nc-muted); }
.nc-mobile-nav .elementor-icon-list-item.is-active > a { background-color: rgba(91, 118, 106, .1); }
.nc-mobile-nav .elementor-icon-list-item.is-active .elementor-icon-list-text { color: var(--nc-primary) !important; }

/* "5,0 · Google" e selos de avaliação */
.nc-rating .elementor-icon-list-text b {
	color: var(--nc-text);
	font-weight: 600;
	margin-inline-end: 2px;
}
.nc-rating-lg .elementor-icon-list-text b {
	font-size: 18px;
	line-height: 28px;
	font-weight: 700;
	margin-inline-end: 4px;
}

/* ---------- Botões e ligações ---------- */

.nc-grow .elementor-button,
.nc-grow-lg .elementor-button,
.nc-grow-sm .elementor-button { transition: all .15s var(--nc-ease); }
.nc-grow .elementor-button:hover { transform: scale(1.03); }
.nc-grow-lg .elementor-button:hover { transform: scale(1.05); }
.nc-grow-sm .elementor-button:hover { transform: scale(1.02); }

.nc-arrow svg { transition: transform .15s var(--nc-ease); }
.nc-card-link:hover .nc-arrow svg,
.nc-pillar:hover .nc-arrow svg { transform: translateX(4px); }

/* ---------- Sombras (iguais às do site original) ---------- */

.nc-shadow-sm { box-shadow: 0 1px 2px 0 rgba(0, 0, 0, .05); }
.nc-shadow-md { box-shadow: 0 4px 6px -1px rgba(0, 0, 0, .1), 0 2px 4px -2px rgba(0, 0, 0, .1); }
.nc-shadow-xl { box-shadow: 0 20px 25px -5px rgba(0, 0, 0, .1), 0 8px 10px -6px rgba(0, 0, 0, .1); }

/* ---------- Cartões ---------- */

.e-con.nc-card-link {
	transition: transform .5s var(--nc-ease), box-shadow .5s var(--nc-ease);
}
.e-con.nc-card-link:hover {
	transform: translateY(-4px);
	box-shadow: 0 20px 25px -5px rgba(91, 118, 106, .05), 0 8px 10px -6px rgba(91, 118, 106, .05);
}
.e-con.nc-shadow-hover { transition: box-shadow .15s var(--nc-ease); }
.e-con.nc-shadow-hover:hover {
	box-shadow: 0 20px 25px -5px rgba(91, 118, 106, .05), 0 8px 10px -6px rgba(91, 118, 106, .05);
}

/* Cartões que sobem ligeiramente ao passar o rato */
.e-con.nc-lift { transition: transform .35s var(--nc-ease), box-shadow .35s var(--nc-ease); }
.e-con.nc-lift:hover {
	transform: translateY(-6px);
	box-shadow: 0 20px 25px -5px rgba(91, 118, 106, .12), 0 8px 10px -6px rgba(91, 118, 106, .08);
}
.e-con.nc-glass.nc-lift:hover { box-shadow: 0 20px 30px -8px rgba(0, 0, 0, .25); }

.nc-card-img { position: relative; overflow: hidden; }
.nc-card-img img { transition: transform .7s var(--nc-ease); }
.nc-card-img::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(to top, rgba(91, 118, 106, .2), transparent);
	opacity: 0;
	transition: opacity .5s var(--nc-ease);
	pointer-events: none;
}
.nc-card-link:hover .nc-card-img img { transform: scale(1.05); }
.nc-card-link:hover .nc-card-img::after { opacity: 1; }

.nc-img-zoom { overflow: hidden; }
.nc-img-zoom img { transition: transform .7s var(--nc-ease); }
.nc-img-zoom:hover img { transform: scale(1.05); }

/* Cartões "Nutrição" / "Saúde Mental" com imagem de fundo */
.e-con.nc-pillar { isolation: isolate; }
.nc-pillar .nc-pillar-img {
	position: absolute !important;
	inset: 0;
	width: 100% !important;
	height: 100%;
	z-index: -1;
	margin: 0 !important;
}
.nc-pillar .nc-pillar-img img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform .7s var(--nc-ease);
}
.nc-pillar:hover .nc-pillar-img img { transform: scale(1.05); }
/* Garante a leitura do texto claro sobre qualquer zona da fotografia. */
.nc-pillar .elementor-heading-title,
.nc-pillar .elementor-widget-text-editor { text-shadow: 0 1px 3px rgba(0, 0, 0, .3); }

.e-con.nc-glass {
	-webkit-backdrop-filter: blur(4px);
	backdrop-filter: blur(4px);
}

/* ---------- Imagens ---------- */

[class*="nc-ratio-"] img {
	display: block;
	width: 100%;
	height: auto;
	object-fit: cover;
}
.nc-ratio-4-5 img { aspect-ratio: 4 / 5; }
.nc-ratio-3-4 img { aspect-ratio: 3 / 4; }
.nc-ratio-4-3 img { aspect-ratio: 4 / 3; }
.nc-ratio-16-9 img { aspect-ratio: 16 / 9; }

.nc-avatar img {
	display: block;
	aspect-ratio: 1 / 1;
	object-fit: cover;
}

/* Etiquetas flutuantes sobre as fotografias */
.e-con.nc-float-badge {
	position: absolute;
	z-index: 2;
	width: auto;
	max-width: calc(100% - 24px);
}
/* As etiquetas flutuam muito suavemente. */
.e-con.nc-float-badge { animation: nc-float 6s ease-in-out infinite; }
@keyframes nc-float {
	0%, 100% { translate: 0 0; }
	50% { translate: 0 -6px; }
}
.nc-badge-bl { left: -24px; bottom: -24px; }
.nc-badge-br { right: -20px; bottom: -20px; }
.nc-badge-bl-sm { left: -20px; bottom: -20px; }
@media (max-width: 639px) {
	.e-con.nc-float-badge { display: none; }
}

/* ---------- Decoração ---------- */

.e-con.nc-aura {
	pointer-events: none;
	filter: blur(64px);
}
.e-con.nc-aura-sm {
	pointer-events: none;
	filter: blur(40px);
}

/* ---------- Layout ---------- */

.e-con.e-flex.nc-w-auto { --width: auto; }

/* O Elementor força max-width: 100% nos widgets; estas larguras máximas vêm do design original. */
.nc-mw-384 { max-width: 384px !important; }
.nc-mw-448 { max-width: 448px !important; }
.nc-mw-576 { max-width: 576px !important; }
.nc-mw-672 { max-width: 672px !important; }
.nc-mw-768 { max-width: 768px !important; }

.e-con.nc-aura-center { transform: translateX(-50%); }

.nc-btn-ico16 .elementor-button-icon svg {
	width: 16px;
	height: 16px;
}
.nc-btn-ico14 .elementor-button-icon svg {
	width: 14px;
	height: 14px;
}

.elementor-widget.nc-initial {
	display: flex;
	align-items: center;
	justify-content: center;
	flex: none;
	width: 40px;
	height: 40px;
	border-radius: 50%;
	background-color: rgba(91, 118, 106, .1);
}
.nc-initial .elementor-heading-title { line-height: 28px; }

@media (min-width: 768px) {
	.e-con.nc-sticky {
		position: sticky;
		top: 112px;
		align-self: start;
	}
}

/* Somam-se ao scroll-padding-top do html (96px), que já desconta o header fixo. */
.nc-anchor { scroll-margin-top: 16px; }
.nc-anchor-section { scroll-margin-top: 0; }

/* Testemunhos em colunas (masonry) */
.e-con.nc-masonry {
	display: block !important;
	columns: 1;
	column-gap: 24px;
}
@media (min-width: 640px) { .e-con.nc-masonry { columns: 2; } }
@media (min-width: 1024px) { .e-con.nc-masonry { columns: 3; } }
.e-con.nc-masonry > .elementor-element {
	break-inside: avoid;
	margin-block-end: 24px;
}

/* Lista em duas colunas (Perturbações acompanhadas) */
.nc-list-2col .elementor-icon-list-items {
	display: grid;
	grid-template-columns: 1fr;
	gap: 12px;
}
@media (min-width: 640px) {
	.nc-list-2col .elementor-icon-list-items { grid-template-columns: 1fr 1fr; }
}

.nc-ib-nudge .elementor-icon-box-icon { margin-block-start: 2px; }

/* Linha "✓ Especialista em…" / "✓ Membro Efetivo…": o ícone é desenhado aqui; o texto edita-se no Elementor. */
.nc-check .elementor-heading-title {
	display: inline-flex;
	align-items: center;
	gap: 8px;
}
.nc-check .elementor-heading-title::before {
	content: "";
	flex: none;
	width: 16px;
	height: 16px;
	background-color: currentColor;
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z'/%3E%3Cpath d='m9 12 2 2 4-4'/%3E%3C/svg%3E") center / contain no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z'/%3E%3Cpath d='m9 12 2 2 4-4'/%3E%3C/svg%3E") center / contain no-repeat;
}

.nc-hours .nc-l { display: block; }
.nc-hours .nc-l + .nc-l { margin-block-start: 6px; }
.nc-hours b { font-weight: 500; color: var(--nc-text); }
.nc-hours .nc-l + .nc-l-note { margin-block-start: 10px; }

/* Aviso de urgência (112 / SNS 24) */
.nc-emergency .elementor-icon-box-description b { font-weight: 600; }
.nc-emergency .elementor-icon-box-description a {
	color: var(--nc-text);
	font-weight: 600;
	text-decoration: underline;
	text-underline-offset: 2px;
	white-space: nowrap;
}
.nc-emergency .elementor-icon-box-description a:hover { color: var(--nc-primary); }

/* ---------- Formulário de contacto (Fluent Forms) ---------- */
/* Os campos editam-se no Fluent Forms ("Contacto — Nutricardia"); aqui só se lhes dá o aspeto do site. */

.nc-ff-widget .fluentform .ff-el-group { margin-block-end: 20px; }
.nc-ff-widget .fluentform .ff-el-input--label { margin-block-end: 6px; padding: 0; }
.nc-ff-widget .fluentform .ff-el-input--label label {
	margin: 0;
	font-family: "Plus Jakarta Sans", sans-serif;
	font-size: 14px;
	line-height: 20px;
	font-weight: 500;
	color: var(--nc-text);
}
.nc-ff-widget .fluentform .ff-el-input--label.ff-el-is-required.asterisk-right label::after {
	content: " *";
	margin-inline-start: 2px;
	color: var(--nc-accent);
}
.elementor-kit-5 .nc-ff-widget .fluentform .ff-el-form-control {
	display: block;
	width: 100%;
	height: auto;
	padding: 12px 16px;
	border: 1px solid var(--nc-border);
	border-radius: 32px;
	background-color: var(--nc-bg);
	color: var(--nc-text);
	font-family: "Plus Jakarta Sans", sans-serif;
	font-size: 16px;
	line-height: 24px;
	box-shadow: none;
	outline: none;
	transition: border-color .15s var(--nc-ease), box-shadow .15s var(--nc-ease);
}
.elementor-kit-5 .nc-ff-widget .fluentform .ff-el-form-control:focus {
	border-color: var(--nc-primary);
	background-color: var(--nc-bg);
	box-shadow: 0 0 0 2px rgba(91, 118, 106, .25);
}
.nc-ff-widget .fluentform .ff-el-form-control::placeholder { color: #6A756E; opacity: 1; }
/* Seletor nativo do browser, como no original. */
.elementor-kit-5 .nc-ff-widget .fluentform select.ff-el-form-control {
	-webkit-appearance: auto;
	appearance: auto;
	background-image: none;
	line-height: normal;
}
.elementor-kit-5 .nc-ff-widget .fluentform textarea.ff-el-form-control { min-height: 0; resize: none; }
.nc-ff-widget .fluentform .ff-el-help-message {
	margin-block-start: 6px;
	font-size: 12px;
	line-height: 18px;
	font-style: normal;
	color: var(--nc-muted-fg);
}

/* Consentimento (RGPD) */
.nc-ff-widget .fluentform .ff-el-tc label.ff_tc_label {
	display: flex;
	align-items: flex-start;
	gap: 10px;
	margin: 0;
	font-size: 13px;
	line-height: 20px;
	font-weight: 400;
	color: var(--nc-muted-fg);
	cursor: pointer;
}
.nc-ff-widget .fluentform .ff_tc_checkbox { flex: none; padding: 0; }
.nc-ff-widget .fluentform .ff_tc_checkbox input[type="checkbox"] {
	width: 18px;
	height: 18px;
	margin: 1px 0 0;
	accent-color: var(--nc-primary);
	cursor: pointer;
}
.nc-ff-widget .fluentform .ff_t_c { padding: 0; }
.nc-ff-widget .fluentform .ff_t_c a,
.elementor-widget.nc-form-note a {
	color: var(--nc-primary);
	text-decoration: underline;
	text-underline-offset: 2px;
}
.nc-ff-widget .fluentform .ff_t_c a:hover,
.elementor-widget.nc-form-note a:hover { color: var(--nc-text); }
.nc-form-note p + p { margin-block-start: 4px; }
.elementor-widget.nc-form-privacy { border-top: 1px solid var(--nc-border); }
.nc-form-privacy strong { font-weight: 600; color: var(--nc-text); }

/* Erros de validação */
.nc-ff-widget .fluentform .ff-el-is-error .ff-el-form-control { border-color: #B42318; }
.nc-ff-widget .fluentform .error.text-danger {
	margin-block-start: 6px;
	font-size: 13px;
	line-height: 18px;
	color: #B42318;
}

/* Botão "Enviar mensagem" */
.elementor-kit-5 .nc-ff-widget .fluentform .ff_submit_btn_wrapper { margin: 0; }
.elementor-kit-5 .nc-ff-widget .fluentform .ff-btn-submit {
	display: flex;
	width: 100%;
	align-items: center;
	justify-content: center;
	gap: 8px;
	padding: 14px 24px;
	border: 0;
	border-radius: 9999px;
	background-color: var(--nc-accent);
	color: var(--nc-bg);
	font-family: "Plus Jakarta Sans", sans-serif;
	font-size: 16px;
	line-height: 24px;
	font-weight: 600;
	box-shadow: none;
	opacity: 1;
	cursor: pointer;
	transition: all .15s var(--nc-ease);
}
.elementor-kit-5 .nc-ff-widget .fluentform .ff-btn-submit:hover {
	background-color: #994F33;
	color: var(--nc-bg);
	transform: scale(1.02);
}
.nc-ff-widget .fluentform .ff-btn-submit::before {
	content: "";
	flex: none;
	width: 16px;
	height: 16px;
	background-color: currentColor;
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z'/%3E%3Cpath d='m21.854 2.147-10.94 10.939'/%3E%3C/svg%3E") center / contain no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z'/%3E%3Cpath d='m21.854 2.147-10.94 10.939'/%3E%3C/svg%3E") center / contain no-repeat;
}

/* Mensagem de agradecimento depois do envio */
.nc-ff-widget .ff-message-success {
	display: flex;
	flex-direction: column;
	align-items: center;
	margin: 0;
	padding: 32px 0;
	border: 0;
	background: none;
	box-shadow: none;
	text-align: center;
	color: var(--nc-muted-fg);
}
.nc-ff-widget .ff-message-success::before {
	content: "";
	width: 56px;
	height: 56px;
	margin-block-end: 20px;
	background-color: var(--nc-primary);
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='m9 12 2 2 4-4'/%3E%3C/svg%3E") center / contain no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='m9 12 2 2 4-4'/%3E%3C/svg%3E") center / contain no-repeat;
}
.nc-ff-widget .ff-message-success p { max-width: 384px; margin: 0; }
.nc-ff-widget .ff-message-success p + p { margin-block-start: 12px; }
.nc-ff-widget .ff-message-success strong {
	font-family: "Instrument Serif", serif;
	font-size: 24px;
	line-height: 32px;
	font-weight: 400;
	color: var(--nc-text);
}

/* Várias profissionais no mesmo serviço: fotografias sobrepostas */
.nc-avatars .nc-avatar img { box-shadow: 0 0 0 2px #fff; }

/* Mapa: só carrega o Google Maps depois de a pessoa escolher "Mostrar mapa". */
.nc-map { background-color: var(--nc-muted); }
.nc-map iframe {
	display: block;
	width: 100%;
	height: 256px;
	border: 0;
	filter: grayscale(.2);
}
.nc-map.is-loaded .nc-map-consent { display: none; }
.nc-map-consent {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 6px;
	min-height: 256px;
	padding: 24px;
	text-align: center;
}
.nc-map-consent > svg { width: 28px; height: 28px; margin-block-end: 4px; color: var(--nc-primary); }
.nc-map-consent p { margin: 0; }
.nc-map-title {
	font-size: 15px;
	line-height: 22px;
	font-weight: 600;
	color: var(--nc-text);
}
.nc-map-text {
	max-width: 360px;
	font-size: 13px;
	line-height: 20px;
	color: var(--nc-muted-fg);
}
.nc-map .nc-map-text a {
	color: var(--nc-primary-dark);
	text-decoration: underline;
	text-underline-offset: 2px;
}
.nc-map-actions {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 10px;
	margin-block-start: 10px;
}
.elementor-kit-5 .nc-map-load,
.elementor-kit-5 .nc-map-revoke,
.nc-map-load,
.nc-map-revoke {
	padding: 10px 20px;
	font-size: 14px;
	line-height: 20px;
	cursor: pointer;
}
.nc-map-open {
	display: inline-flex;
	align-items: center;
	padding: 9px 20px;
	border: 1px solid var(--nc-border);
	border-radius: 9999px;
	background-color: #fff;
	color: var(--nc-text);
	font-size: 14px;
	line-height: 20px;
	font-weight: 600;
	text-decoration: none;
	transition: border-color .15s var(--nc-ease), color .15s var(--nc-ease);
}
.elementor-kit-5 .nc-map-open:hover,
.nc-map-open:hover { border-color: var(--nc-primary); color: var(--nc-primary); }
.nc-map-revoke-wrap {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 12px;
}
.nc-map-revoke-status {
	font-size: 14px;
	line-height: 20px;
	color: var(--nc-muted-fg);
}

/* ---------- Páginas legais e rodapé ---------- */

.nc-legal :is(ul, ol) {
	margin: 0;
	padding-inline-start: 1.25em;
}
.nc-legal :is(p, ul, ol) + :is(p, ul, ol) { margin-block-start: 1rem; }
.nc-legal li + li { margin-block-start: .5rem; }
.nc-legal li::marker { color: var(--nc-primary); }
.nc-legal strong { font-weight: 600; }
.elementor-widget.nc-legal a {
	color: var(--nc-primary);
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: 3px;
	overflow-wrap: anywhere;
}
.elementor-widget.nc-legal a:hover { color: var(--nc-text); }

/* Índice "Nesta página" */
.nc-legal .nc-toc { padding-inline-start: 1.5em; }
.nc-legal .nc-toc li { margin: 0; padding-block: 4px; break-inside: avoid; }
.nc-legal .nc-toc li::marker { color: var(--nc-muted-fg); font-variant-numeric: tabular-nums; }
.elementor-widget.nc-legal .nc-toc a { color: var(--nc-text); text-decoration: none; }
.elementor-widget.nc-legal .nc-toc a:hover { color: var(--nc-primary); text-decoration: underline; }
@media (min-width: 768px) {
	.nc-legal .nc-toc { columns: 2; column-gap: 40px; }
}

.nc-legal-links .elementor-icon-list-text { text-decoration: underline; text-decoration-color: transparent; text-underline-offset: 3px; transition: text-decoration-color .15s var(--nc-ease); }
.nc-legal-links .elementor-icon-list-item:hover .elementor-icon-list-text { text-decoration-color: currentColor; }
.nc-legal-id p + p { margin-block-start: 8px; }

/* Códigos postais e números que não devem partir-se entre linhas. */
.nc-nowrap { white-space: nowrap; }

/* ---------- Página 404 ---------- */

.nc-404 { padding: 120px 20px 96px; text-align: center; }
.nc-404-inner { max-width: 576px; margin: 0 auto; }
.nc-404-eyebrow {
	margin: 0;
	font-size: 12px;
	line-height: 16px;
	font-weight: 600;
	letter-spacing: 2.4px;
	text-transform: uppercase;
	color: var(--nc-primary);
}
.nc-404 h1 {
	margin: 12px 0 0;
	font-family: "Instrument Serif", serif;
	font-size: 48px;
	line-height: 1;
	font-weight: 400;
	color: var(--nc-text);
}
.nc-404-text { margin: 20px 0 0; font-size: 18px; line-height: 29px; color: var(--nc-muted-fg); }
.nc-404-actions {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	align-items: center;
	gap: 12px 24px;
	margin-top: 32px;
}
.elementor-kit-5 .nc-404-link,
.nc-404-link {
	font-weight: 600;
	color: var(--nc-primary);
	text-decoration: underline;
	text-underline-offset: 3px;
}
.elementor-kit-5 .nc-404-link:hover { color: var(--nc-text); }
@media (max-width: 767px) {
	.nc-404 { padding: 80px 20px 64px; }
	.nc-404 h1 { font-size: 36px; }
}

/* ---------- Botão flutuante do WhatsApp ---------- */

.nc-wa-float {
	position: fixed !important;
	right: 20px;
	bottom: 20px;
	z-index: 50;
	width: auto !important;
	margin: 0 !important;
}
.nc-wa-float .elementor-button { transition: transform .5s var(--nc-ease); }
.nc-wa-float .elementor-button:hover { transform: scale(1.05); }
.nc-wa-float .elementor-button-icon {
	position: relative;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 36px;
	height: 36px;
}
.nc-wa-float .elementor-button-icon::before {
	content: "";
	position: absolute;
	inset: 0;
	border-radius: 50%;
	background: rgba(255, 255, 255, .4);
	animation: nc-ping 1s cubic-bezier(0, 0, .2, 1) infinite;
}
.nc-wa-float .elementor-button-icon svg {
	position: relative;
	width: 28px;
	height: 28px;
}
@keyframes nc-ping {
	75%, 100% { transform: scale(2); opacity: 0; }
}

/* ---------- Animação de entrada ao fazer scroll ---------- */

.nc-js .nc-reveal:not(.nc-in) {
	opacity: 0;
	transform: translateY(28px);
}
/* Ao abrir um endereço com âncora (#...), o salto inicial é imediato (o scroll suave fica para os cliques),
   para a secção ficar exatamente abaixo do header mesmo que as fontes ainda estejam a carregar. */
.nc-js:not(.nc-ready) { scroll-behavior: auto; }
/* Se o JavaScript não arrancar, o conteúdo aparece na mesma ao fim de 4 s. */
.nc-js:not(.nc-io) .nc-reveal:not(.nc-in) { animation: nc-reveal-fallback .01s 4s forwards; }
.nc-reveal:not(.nc-done) {
	transition: opacity .8s var(--nc-ease-out), transform .8s var(--nc-ease-out);
}
.nc-reveal.nc-d1:not(.nc-done) { transition-delay: .08s; }
.nc-reveal.nc-d2:not(.nc-done) { transition-delay: .16s; }
.nc-reveal.nc-d10:not(.nc-done) { transition-delay: .1s; }
.nc-reveal.nc-d15:not(.nc-done) { transition-delay: .15s; }
.nc-reveal.nc-d20:not(.nc-done) { transition-delay: .2s; }
/* Variantes: entra pela esquerda, pela direita, com zoom ou só com fade (no telemóvel, as laterais sobem). */
.nc-js .nc-reveal.nc-from-left:not(.nc-in) { transform: translateX(-48px); }
.nc-js .nc-reveal.nc-from-right:not(.nc-in) { transform: translateX(48px); }
.nc-js .nc-reveal.nc-zoom:not(.nc-in) { transform: scale(.94); }
.nc-js .nc-reveal.nc-fade:not(.nc-in) { transform: none; }
/* Telemóvel: entradas mais curtas e suaves, sem atrasos em escada (os blocos já estão uns por baixo dos outros). */
@media (max-width: 767px) {
	.nc-js .nc-reveal:not(.nc-in),
	.nc-js .nc-reveal.nc-from-left:not(.nc-in),
	.nc-js .nc-reveal.nc-from-right:not(.nc-in),
	.nc-js .nc-reveal.nc-zoom:not(.nc-in) { transform: translateY(16px); }
	.nc-js .nc-reveal.nc-fade:not(.nc-in) { transform: none; }
	.nc-reveal[class]:not(.nc-done) {
		transition: opacity .6s var(--nc-ease-out), transform .6s var(--nc-ease-out);
		transition-delay: 0s !important;
	}
	/* Desfoques mais leves: o scroll fica mais fluido em telemóveis mais modestos. */
	.nc-header { -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px); }
	.e-con.nc-glass { -webkit-backdrop-filter: none; backdrop-filter: none; }
}
/* Ecrãs táteis: sem efeitos de "passar o rato", que ficariam presos depois de tocar. */
@media (hover: none) {
	.e-con.nc-lift:hover,
	.e-con.nc-card-link:hover { transform: none; }
	.nc-img-zoom:hover img,
	.nc-card-link:hover .nc-card-img img,
	.nc-pillar:hover .nc-pillar-img img { transform: none; }
}
/* O que entra pelos lados nunca cria scroll horizontal. */
.nc-main { overflow-x: clip; }
@keyframes nc-reveal-fallback {
	to { opacity: 1; transform: none; }
}
body.elementor-editor-active .nc-reveal {
	opacity: 1 !important;
	transform: none !important;
	animation: none !important;
}
@media (prefers-reduced-motion: reduce) {
	.nc-js .nc-reveal:not(.nc-in) { opacity: 1; transform: none; animation: none; }
	.nc-reveal:not(.nc-done) { transition: none; }
	.nc-wa-float .elementor-button-icon::before { animation: none; }
	.nc-js .nc-reveal[class]:not(.nc-in) { opacity: 1 !important; transform: none !important; animation: none !important; }
	.e-con.nc-lift:hover,
	.e-con.nc-card-link:hover { transform: none; }
	.e-con.nc-float-badge { animation: none; }
}
