/* Fábio Pereira Arquitecto — estilos base.
   Tudo o que está aqui pode ser sobreposto nas definições de estilo do Elementor. */

:root {
	--fp-bg: #e8e8e5;
	--fp-ink: #18191a;
	--fp-muted: #66696b;
	--fp-line: rgba(24, 25, 26, 0.22);
	--fp-dark: #202324;
	--fp-dark-ink: #e8e8e5;
	--fp-dark-line: rgba(232, 232, 229, 0.25);
	--fp-font: "Helvetica Neue", Helvetica, Arial, "Segoe UI", sans-serif;
}

html { scroll-behavior: smooth; }

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

body {
	margin: 0;
	background: var(--fp-bg);
	color: var(--fp-ink);
	font-family: var(--fp-font);
	-webkit-font-smoothing: antialiased;
}

[id] { scroll-margin-top: 72px; }

/* ---------- Tipografia (aplicada por classes nos widgets) ---------- */

.elementor .fp-h1 .elementor-heading-title {
	font-family: var(--fp-font);
	font-weight: 400;
	font-size: clamp(2.5rem, 6.4vw, 6.2rem);
	line-height: 1.02;
	letter-spacing: -0.035em;
	color: var(--fp-ink);
}

.elementor .fp-h2 .elementor-heading-title {
	font-family: var(--fp-font);
	font-weight: 400;
	font-size: clamp(1.9rem, 3.9vw, 3.7rem);
	line-height: 1.06;
	letter-spacing: -0.03em;
	color: var(--fp-ink);
}

.elementor .fp-h3 .elementor-heading-title {
	font-family: var(--fp-font);
	font-weight: 500;
	font-size: clamp(1.15rem, 1.7vw, 1.5rem);
	line-height: 1.2;
	letter-spacing: -0.01em;
	color: var(--fp-ink);
}

.elementor .fp-label .elementor-heading-title {
	font-family: var(--fp-font);
	font-weight: 400;
	font-size: 0.95rem;
	line-height: 1.3;
	letter-spacing: 0;
	color: var(--fp-muted);
}

.elementor .fp-num .elementor-heading-title {
	font-family: var(--fp-font);
	font-weight: 400;
	font-size: 0.95rem;
	color: var(--fp-muted);
	font-variant-numeric: tabular-nums;
}

.elementor .fp-brand .elementor-heading-title {
	font-family: var(--fp-font);
	font-weight: 500;
	font-size: 1.1rem;
	letter-spacing: -0.01em;
	color: var(--fp-ink);
}

.elementor .fp-brand a { color: inherit; text-decoration: none; }

.elementor .fp-muted,
.elementor .fp-brand .fp-muted {
	color: var(--fp-muted);
	font-weight: 400;
}

.elementor .fp-body,
.elementor .fp-body p {
	font-family: var(--fp-font);
	font-size: clamp(1rem, 1.15vw, 1.12rem);
	line-height: 1.6;
	color: var(--fp-ink);
}

.elementor .fp-body { max-width: 52ch; }
.elementor .fp-body p { margin: 0 0 1em; }
.elementor .fp-body p:last-child { margin-bottom: 0; }

.elementor .fp-meta,
.elementor .fp-meta p {
	font-size: 0.95rem;
	line-height: 1.5;
	color: var(--fp-muted);
}

/* ---------- Botões ---------- */

.elementor .fp-btn .elementor-button {
	background: transparent;
	color: var(--fp-ink);
	border: 1px solid var(--fp-ink);
	border-radius: 0;
	padding: 16px 30px;
	font-family: var(--fp-font);
	font-weight: 400;
	font-size: 1rem;
	letter-spacing: 0;
	transition: background-color 0.2s, color 0.2s;
}

.elementor .fp-btn .elementor-button:hover,
.elementor .fp-btn .elementor-button:focus-visible {
	background: var(--fp-ink);
	color: var(--fp-bg);
}

.elementor .fp-link .elementor-button {
	background: transparent;
	color: var(--fp-ink);
	border: 0;
	border-bottom: 1px solid var(--fp-ink);
	border-radius: 0;
	padding: 2px 0;
	font-family: var(--fp-font);
	font-weight: 400;
	font-size: 1rem;
}

.elementor .fp-link .elementor-button:hover { opacity: 0.6; }

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

.elementor .e-con.fp-header {
	position: fixed;
	top: 0;
	left: 0;
	right: 0;
	z-index: 100;
	background: rgba(232, 232, 229, 0.88);
	-webkit-backdrop-filter: blur(12px);
	backdrop-filter: blur(12px);
}

.admin-bar .elementor .e-con.fp-header { top: 32px; }

@media (max-width: 782px) {
	.admin-bar .elementor .e-con.fp-header { top: 46px; }
}

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

.elementor .fp-cover img {
	display: block;
	width: 100%;
	height: auto;
	aspect-ratio: 16 / 9;
	object-fit: cover;
}

@media (max-width: 767px) {
	.elementor .fp-cover img { aspect-ratio: 4 / 3; }
}

/* ---------- Processo e projectos ---------- */

.elementor .e-con.fp-step,
.elementor .e-con.fp-project {
	border-top: 1px solid var(--fp-line);
}

.elementor .fp-gallery .gallery-icon img {
	display: block;
	width: 100%;
	height: auto;
	aspect-ratio: 4 / 3;
	object-fit: cover;
}

/* ---------- Secções escuras ---------- */

.elementor .e-con.fp-dark { background: var(--fp-dark); }

.elementor .fp-dark .elementor-heading-title,
.elementor .fp-dark .fp-body,
.elementor .fp-dark .fp-body p,
.elementor .fp-dark .fp-body a {
	color: var(--fp-dark-ink);
}

.elementor .fp-dark .fp-meta,
.elementor .fp-dark .fp-meta p,
.elementor .fp-dark .fp-label .elementor-heading-title,
.elementor .fp-dark .fp-muted {
	color: rgba(232, 232, 229, 0.62);
}

.elementor .fp-dark .fp-btn .elementor-button {
	color: var(--fp-dark-ink);
	border-color: var(--fp-dark-ink);
}

.elementor .fp-dark .fp-btn .elementor-button:hover,
.elementor .fp-dark .fp-btn .elementor-button:focus-visible {
	background: var(--fp-dark-ink);
	color: var(--fp-dark);
}

.elementor .e-con.fp-footer-bottom { border-top: 1px solid var(--fp-dark-line); }

.elementor .fp-footer-text a {
	color: inherit;
	text-decoration: underline;
	text-underline-offset: 3px;
}

/* ---------- Formulário de contacto ---------- */

.fp-form {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 28px 36px;
	font-family: var(--fp-font);
	color: var(--fp-ink);
}

.fp-field { display: flex; flex-direction: column; gap: 6px; }

.fp-field--textarea,
.fp-consent,
.fp-submit,
.fp-note { grid-column: 1 / -1; }

.fp-field label { font-size: 0.92rem; color: var(--fp-muted); }

.fp-field input,
.fp-field select,
.fp-field textarea {
	width: 100%;
	box-sizing: border-box;
	font: inherit;
	font-size: 1.05rem;
	color: var(--fp-ink);
	background: transparent;
	border: 0;
	border-bottom: 1px solid var(--fp-ink);
	border-radius: 0;
	padding: 10px 0;
	outline: none;
}

.fp-field textarea { min-height: 130px; resize: vertical; }

.fp-field input:focus,
.fp-field select:focus,
.fp-field textarea:focus {
	box-shadow: 0 1px 0 0 var(--fp-ink);
}

.fp-consent label {
	display: flex;
	gap: 12px;
	align-items: flex-start;
	font-size: 0.92rem;
	line-height: 1.5;
	color: var(--fp-ink);
}

.fp-consent input { margin-top: 4px; accent-color: var(--fp-ink); }
.fp-consent a { color: inherit; text-underline-offset: 3px; }

.fp-submit button {
	background: transparent;
	color: var(--fp-ink);
	border: 1px solid var(--fp-ink);
	border-radius: 0;
	padding: 16px 40px;
	font: inherit;
	font-size: 1rem;
	cursor: pointer;
	transition: background-color 0.2s, color 0.2s;
}

.fp-submit button:hover,
.fp-submit button:focus-visible {
	background: var(--fp-ink);
	color: var(--fp-bg);
}

.fp-note { margin: 0; font-size: 0.85rem; color: var(--fp-muted); }

.fp-status {
	margin: 0 0 28px;
	padding: 14px 0;
	border-top: 1px solid var(--fp-ink);
	border-bottom: 1px solid var(--fp-ink);
	font-family: var(--fp-font);
}

.fp-status--erro { border-color: #8a1c1c; color: #8a1c1c; }

.fp-hp {
	position: absolute;
	left: -9999px;
	width: 1px;
	height: 1px;
	overflow: hidden;
}

@media (max-width: 767px) {
	.fp-form { grid-template-columns: 1fr; }
}

/* ---------- Páginas fora do Elementor Canvas ---------- */

.fp-site-header,
.fp-site-footer,
.fp-content {
	padding: 24px clamp(20px, 5vw, 72px);
	font-family: var(--fp-font);
}

.fp-site-header { display: flex; justify-content: space-between; align-items: center; }
.fp-site-title { color: var(--fp-ink); text-decoration: none; font-weight: 500; }
.fp-site-nav ul { display: flex; gap: 24px; list-style: none; margin: 0; padding: 0; }
.fp-site-nav a { color: var(--fp-ink); text-decoration: none; }
.fp-content { max-width: 760px; }
