/* Sandra Lebres, solicitadora. Folha de estilo partilhada por todas as páginas. */
/* Letras alojadas no próprio site (Karla e Marcellus, licença SIL Open Font License): nenhum pedido a terceiros */
@font-face { font-family: 'Karla'; font-style: normal; font-weight: 200 800; font-display: swap; src: url('fonts/karla.woff2') format('woff2'); }
@font-face { font-family: 'Marcellus'; font-style: normal; font-weight: 400; font-display: swap; src: url('fonts/marcellus.woff2') format('woff2'); }
:root {
  --bg: #FBF8F5;
  --alt: #F2EAE4;
  --surface: #FFFFFF;
  --ink: #241C1D;
  --fg: #4A3F41;
  --muted: #6B5F61;
  --wine: #7B1526;
  --wine-dark: #5B0E1C;
  --wine-hover: #93202F;
  --wine-text: #7B1526;
  --wine-text-hover: #5B0E1C;
  --wine-bg: #7B1526;
  --wine-bg-deep: #5B0E1C;
  --cream: #FBF8F5;
  --line: rgba(123,21,38,0.12);
  --line-2: rgba(123,21,38,0.18);
  --line-3: rgba(123,21,38,0.3);
  --input-line: rgba(36,28,29,0.18);
  --serif: 'Marcellus', Georgia, 'Times New Roman', serif;
  --sans: 'Karla', system-ui, -apple-system, sans-serif;
  --mono: ui-monospace, SFMono-Regular, Menlo, monospace;
  color-scheme: only light;
}

* { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; }
body { background: var(--bg); color: var(--ink); font-family: var(--sans); font-size: 16px; line-height: 1.6; -webkit-font-smoothing: antialiased; }
body::before { content: ""; position: fixed; inset: 0 0 auto; height: env(safe-area-inset-top, 0px); z-index: 10; background: var(--bg); }
a { color: var(--wine-text); text-decoration: none; }
a:hover { color: var(--wine-text-hover); }
::selection { background: var(--wine); color: #fff; }
h1, h2, h3 { text-wrap: balance; font-weight: 400; }
img { max-width: 100%; }
.wrap { max-width: 1120px; margin: 0 auto; padding-left: max(24px, env(safe-area-inset-left, 0px)); padding-right: max(24px, env(safe-area-inset-right, 0px)); }
.narrow { max-width: 780px; }
sup { font-size: 0.6em; line-height: 0; vertical-align: 0.55em; margin-left: 0.5px; font-variant-position: normal; }
summary { list-style: none; } summary::-webkit-details-marker { display: none; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }

/* Cabeçalho */
header.top { position: sticky; top: env(safe-area-inset-top, 0px); z-index: 50; background: color-mix(in srgb, var(--bg) 92%, transparent); backdrop-filter: blur(8px); border-bottom: 1px solid var(--line); }
header.top .wrap { padding-block: 14px; display: flex; flex-wrap: wrap; align-items: center; gap: 12px 16px; }
.brand { order: 1; }
nav.menu { order: 2; margin-left: auto; }
header.top a.cta { order: 3; }
.brand { display: flex; align-items: center; gap: 10px; color: var(--ink); }
.brand img { width: 34px; height: 34px; object-fit: contain; }
.brand span { font-family: var(--serif); font-size: 17px; letter-spacing: 0.06em; white-space: nowrap; }
.brand .sfx { font-style: normal; }
nav.menu .so-grande { font-style: normal; }
nav.menu { display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: 10px 20px; font-size: 14px; min-width: 0; }
nav.menu a { color: var(--fg); }
nav.menu a:hover, nav.menu a[aria-current="page"] { color: var(--wine-text); }
header.top a.cta { display: inline-flex; align-items: center; gap: 9px; background: var(--wine); color: #fff; padding: 10px 18px; border-radius: 10px; font-weight: 600; letter-spacing: 0.02em; }
header.top a.cta svg { flex: none; }
header.top a.cta:hover { background: var(--wine-dark); color: #fff; }

/* Topo da página inicial */
.hero2 { background: var(--alt); color: var(--ink); overflow: hidden; border-bottom: 1px solid var(--line); }
.hero2 .wrap { max-width: 1120px; display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(0, .85fr); gap: 32px; align-items: end; padding-block: 68px 0; text-align: left; }
.hero2 .txt { grid-column: 1; grid-row: 1; padding-bottom: 68px; min-width: 0; }
.hero2 .eyebrow2 { font-size: 12px; letter-spacing: 0.14em; text-transform: uppercase; color: var(--muted); margin: 0 0 14px; }
.hero2 h1 { font-family: var(--serif); font-size: clamp(36px, 5.2vw, 62px); line-height: 1.06; margin: 0 0 24px; color: var(--ink); }
.hero2 h1 em { font-style: normal; color: var(--wine-text); }
.hero2 .lead { font-size: clamp(17px, 1.8vw, 21px); line-height: 1.55; color: var(--fg); margin: 0 0 32px; max-width: 42ch; text-wrap: pretty; }
.hero2 .btns { display: flex; flex-wrap: wrap; gap: 12px; }
.hero2 .btns a { display: inline-flex; align-items: center; gap: 11px; padding: 16px 24px; border-radius: 12px; font-weight: 600; font-size: 17px; max-width: 100%; word-break: break-word; }
.hero2 .btns a.p { background: var(--wine); color: #fff; }
.hero2 .btns a.p:hover { background: var(--wine-dark); color: #fff; }
.hero2 .btns a.o { border: 1.5px solid var(--line-3); color: var(--wine-text); }
.hero2 .btns a.o:hover { background: color-mix(in srgb, var(--wine) 7%, transparent); color: var(--wine-text-hover); }
.hero2 .small2 { font-size: 15px; color: var(--muted); margin: 26px 0 0; max-width: 46ch; }
.hero2 .ph { grid-column: 2; grid-row: 1; align-self: end; min-width: 0; display: flex; justify-content: center; }
.hero2 .ph img { width: 100%; max-width: 368px; height: auto; display: block; margin-bottom: -4px; }
@media (max-width: 860px) {
  .hero2 .ident { display: block; }
  .hero2 .ident .bar { display: none; }
  .hero2 .ident .papel { margin-top: 4px; }
  .hero2 .wrap { display: block; padding-block: 28px 0; }
  .hero2 .txt { padding-bottom: 30px; }
  .hero2 .ph { float: right; display: block; width: 120px; margin: 2px 0 6px 16px; }
  .hero2 .ph img { width: 120px; max-width: none; margin-bottom: 0;
    -webkit-mask-image: linear-gradient(to bottom, #000 74%, transparent 100%);
    mask-image: linear-gradient(to bottom, #000 74%, transparent 100%); }
  .hero2 .btns { clear: both; }
}

/* Topo das páginas interiores */
.phead { background: var(--alt); border-bottom: 1px solid var(--line); }
.phead .wrap { padding-block: 44px 48px; }
.crumb { font-size: 13px; color: var(--muted); margin: 0 0 16px; }
.crumb a { color: var(--muted); }
.crumb a:hover { color: var(--wine-text); }
.phead h1 { font-family: var(--serif); font-size: clamp(30px, 4.2vw, 48px); line-height: 1.1; margin: 0 0 16px; max-width: 20ch; }
.phead p.sub { font-size: clamp(16px, 1.7vw, 19px); line-height: 1.6; color: var(--fg); max-width: 56ch; text-wrap: pretty; }

/* Secções */
section.band { background: var(--alt); border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
section .wrap { padding-block: 72px; }
.eyebrow { font-size: 12px; letter-spacing: 0.22em; text-transform: uppercase; color: var(--wine-text); margin: 0 0 18px; }
.h2 { font-family: var(--serif); font-size: clamp(26px, 3.2vw, 38px); line-height: 1.15; margin: 0 0 40px; max-width: 26ch; }

/* Cartões de serviço */
.svc { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(258px, 100%), 1fr)); gap: 16px; }
.svc > a, .svc > div { background: var(--surface); padding: 30px 26px 32px; border-radius: 16px; border: 1px solid var(--line); min-width: 0; display: block; color: inherit; }
.svc > a:hover { border-color: var(--line-3); color: inherit; }
.svc .num { font-family: var(--mono); font-size: 12px; color: var(--wine-text); }
.svc h3 { font-family: var(--serif); font-size: 21px; margin: 12px 0 10px; color: var(--ink); }
.svc p { font-size: 15px; line-height: 1.65; color: var(--fg); text-wrap: pretty; }
.svc .more { display: inline-block; margin-top: 14px; font-size: 14px; font-weight: 600; color: var(--wine-text); }

/* Passos */
.steps { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(240px, 100%), 1fr)); gap: 16px; }
.steps > div { background: var(--surface); border: 1px solid var(--line); border-radius: 16px; padding: 28px 26px 32px; min-width: 0; }
.steps .n { display: inline-flex; align-items: center; justify-content: center; width: 38px; height: 38px; border-radius: 50%; background: var(--wine); color: #fff; font-family: var(--serif); font-size: 17px; }
.steps h3 { font-family: var(--serif); font-size: 20px; margin: 16px 0 10px; }
.steps p { font-size: 15px; line-height: 1.65; color: var(--fg); text-wrap: pretty; }

/* Onde atua */
.zonas { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(290px, 100%), 1fr)); gap: 48px; align-items: center; }
.zonas > div { min-width: 0; }
.zonas .h2 { margin-bottom: 18px; }
.zonas p.t { font-size: 17px; line-height: 1.75; color: var(--fg); margin: 0 0 24px; max-width: 48ch; text-wrap: pretty; }
.chips { display: flex; flex-wrap: wrap; gap: 10px; }
.chips span { border: 1px solid var(--line-3); color: var(--wine-text); font-size: 14px; padding: 8px 14px; border-radius: 10px; }
.office { background: var(--wine-bg); color: var(--cream); border-radius: 20px; overflow: hidden; }
.office img { width: 100%; height: 230px; object-fit: cover; object-position: 55% 38%; display: block; }
.office .in-office { padding: 30px 32px 34px; }
.office .k { font-family: var(--mono); font-size: 12px; letter-spacing: 0.1em; color: rgba(251,248,245,0.75); margin: 0 0 10px; }
.office .nm { font-family: var(--serif); font-size: 25px; margin: 0 0 8px; }
.office .ad { font-size: 16px; color: rgba(251,248,245,0.88); margin: 0 0 24px; }
.office hr { border: none; height: 1px; background: rgba(251,248,245,0.25); margin-bottom: 24px; }
.office .tx { font-size: 15px; line-height: 1.7; color: rgba(251,248,245,0.88); margin: 0 0 20px; }
.office a.map { display: inline-flex; align-items: center; gap: 9px; background: #FBF8F5; color: #7B1526; padding: 13px 20px; border-radius: 10px; font-weight: 600; font-size: 15px; }
.office a.map:hover { background: #fff; color: #7B1526; }

/* Perguntas */
.faq-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(290px, 1fr)); gap: 48px; align-items: start; }
.faq-grid > div { min-width: 0; }
.faq-grid .h2 { margin: 0; }
.faq details { border-bottom: 1px solid var(--line-2); padding: 18px 0; }
.faq summary { font-family: var(--serif); font-size: 19px; cursor: pointer; color: var(--ink); display: flex; gap: 14px; align-items: baseline; justify-content: space-between; }
.faq summary::after { content: "+"; color: var(--wine-text); font-family: var(--sans); font-size: 20px; line-height: 1; flex: none; }
.faq details[open] summary::after { content: "\2013"; }
.faq p { font-size: 15px; line-height: 1.7; color: var(--fg); margin: 12px 0 0; text-wrap: pretty; }
.faq p + p { margin-top: 10px; }

/* Texto corrido das páginas interiores */
.prose { max-width: 70ch; }
.prose h2 { font-family: var(--serif); font-size: clamp(23px, 2.6vw, 30px); margin: 44px 0 14px; }
.prose h2:first-child { margin-top: 0; }
.prose h3 { font-family: var(--serif); font-size: 20px; margin: 28px 0 10px; }
.prose p { font-size: 17px; line-height: 1.75; color: var(--fg); margin-bottom: 16px; text-wrap: pretty; }
.prose ul, .prose ol { margin: 0 0 18px 20px; }
.prose li { font-size: 17px; line-height: 1.7; color: var(--fg); margin-bottom: 8px; }
.prose strong { color: var(--ink); font-weight: 600; }
.prose .nota { background: var(--alt); border-left: 3px solid var(--wine); border-radius: 0 12px 12px 0; padding: 20px 24px; margin: 26px 0; }
.prose .nota p { margin: 0; font-size: 16px; }
.prose .nota p + p { margin-top: 10px; }
.prose table { width: 100%; border-collapse: collapse; margin: 22px 0; font-size: 16px; }
.prose th, .prose td { text-align: left; padding: 12px 14px; border-bottom: 1px solid var(--line-2); color: var(--fg); }
.prose th { font-weight: 600; color: var(--ink); font-size: 14px; letter-spacing: 0.04em; text-transform: uppercase; }

/* Página com barra lateral */
.withside { display: grid; grid-template-columns: minmax(0, 1fr) 320px; gap: 56px; align-items: start; }
@media (max-width: 900px) { .withside { grid-template-columns: 1fr; gap: 40px; } }
.side { position: sticky; top: 100px; display: grid; gap: 16px; }
.side .box { background: var(--surface); border: 1px solid var(--line); border-radius: 16px; padding: 24px 24px 26px; }
.side .box h3 { font-family: var(--serif); font-size: 20px; margin: 0 0 10px; }
.side .box p { font-size: 15px; line-height: 1.65; color: var(--fg); margin: 0 0 16px; }
.side .box a.b { display: flex; align-items: center; justify-content: center; gap: 9px; padding: 14px 18px; border-radius: 10px; font-weight: 600; font-size: 16px; }
.side .box a.wa { background: var(--wine); color: #fff; }
.side .box a.wa:hover { background: var(--wine-dark); color: #fff; }
.side .box a.b.mail { font-size: 14px; letter-spacing: 0.01em; word-break: break-word; padding-inline: 12px; }
.side .box a.tel { border: 1.5px solid var(--line-3); color: var(--wine-text); margin-top: 10px; }
.side .box a.tel:hover { background: color-mix(in srgb, var(--wine) 7%, transparent); }
.side .links a { display: block; font-size: 15px; padding: 9px 0; border-bottom: 1px solid var(--line); color: var(--fg); }
.side .links a:last-child { border-bottom: none; }
.side .links a:hover { color: var(--wine-text); }

/* Artigos */
.posts { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 18px; }
.posts a.post { background: var(--surface); border: 1px solid var(--line); border-radius: 16px; padding: 26px 24px 28px; color: inherit; display: block; }
.posts a.post:hover { border-color: var(--line-3); color: inherit; }
.posts .date { font-family: var(--mono); font-size: 12px; color: var(--muted); }
.posts h3 { font-family: var(--serif); font-size: 21px; margin: 10px 0 10px; color: var(--ink); }
.posts p { font-size: 15px; line-height: 1.6; color: var(--fg); }
.artmeta { font-size: 14px; color: var(--muted); margin: 0 0 8px; }

/* Blocos finais */
section.contact { background: var(--wine-bg); color: var(--cream); }
.contact .wrap { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(300px, 100%), 1fr)); gap: 48px; align-items: start; }
.contact .wrap > div, .contact .wrap > form { min-width: 0; }
.contact .eyebrow { color: rgba(251,248,245,0.72); }
.contact .h2 { font-size: clamp(28px, 3.6vw, 42px); margin: 0 0 18px; max-width: 22ch; color: var(--cream); }
.contact p.t { font-size: 17px; line-height: 1.7; color: rgba(251,248,245,0.84); margin: 0 0 30px; max-width: 46ch; text-wrap: pretty; }
.cbtns { display: flex; flex-wrap: wrap; gap: 12px; }
.cbtns a { display: inline-flex; align-items: center; gap: 10px; padding: 16px 26px; border-radius: 10px; font-weight: 600; font-size: 17px; max-width: 100%; word-break: break-word; }
.cbtns a.p { background: #FBF8F5; color: #7B1526; }
.cbtns a.p:hover { background: #fff; color: #7B1526; }
.cbtns a.o { border: 1.5px solid rgba(251,248,245,0.55); color: var(--cream); word-break: break-word; }
.cbtns a.o:hover { background: rgba(251,248,245,0.1); color: var(--cream); }
.contact .note { font-size: 13px; color: rgba(251,248,245,0.7); margin: 22px 0 0; }
form.cform { background: #FBF8F5; color: #241C1D; padding: 30px 28px; border-radius: 16px; display: grid; gap: 14px; }
form.cform .ttl { font-family: var(--serif); font-size: 21px; margin: 0 0 2px; }
form.cform label { display: grid; gap: 6px; font-size: 13px; letter-spacing: 0.06em; text-transform: uppercase; color: #7B1526; }
form.cform .in, form.cform select { font-family: var(--sans); font-size: 16px; padding: 12px 14px; border: 1px solid rgba(36,28,29,0.25); border-radius: 10px; background: #fff; color: #241C1D; text-transform: none; letter-spacing: normal; width: 100%; outline: none; }
form.cform .in:focus, form.cform select:focus { border-color: #7B1526; }
form.cform textarea.in { resize: vertical; }
form.cform button { display: flex; align-items: center; justify-content: center; gap: 10px; background: #7B1526; color: #fff; border: none; padding: 15px 22px; border-radius: 10px; font-family: var(--sans); font-size: 16px; font-weight: 600; cursor: pointer; }
form.cform button:hover, form.cform button:focus-visible { background: #5B0E1C; outline: none; }
form.cform button:disabled { opacity: 0.7; cursor: default; }
form.cform .fine a { color: #7B1526; font-weight: 600; }
form.cform .alt { text-align: center; font-size: 14px; color: #6B5F61; }
form.cform .alt a { color: #7B1526; font-weight: 600; }
form.cform .fine { font-size: 12px; color: #6B5F61; }
form.cform .fine.err { color: #7B1526; font-weight: 600; }
form.cform .copiar { background: none; border: none; padding: 0 0 0 4px; margin: 0; width: auto; color: #7B1526; font-family: var(--sans); font-size: 12px; font-weight: 600; text-decoration: underline; text-underline-offset: 2px; cursor: pointer; display: inline; }
form.cform .copiar:hover { background: none; color: #5B0E1C; }

footer { background: var(--wine-bg-deep); color: rgba(251,248,245,0.72); }
footer .wrap { padding-block: 44px 28px; }
footer .cols { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(190px, 100%), 1fr)); gap: 28px 32px; margin-bottom: 32px; }
footer h4 { font-family: var(--serif); font-size: 16px; color: var(--cream); margin: 0 0 12px; font-weight: 400; letter-spacing: 0.04em; }
footer a { display: block; font-size: 14px; color: rgba(251,248,245,0.72); padding: 5px 0; }
footer a:hover { color: #fff; }
footer .cols span { display: block; font-size: 14px; color: rgba(251,248,245,0.72); padding: 5px 0; }
footer .fine { border-top: 1px solid rgba(251,248,245,0.16); padding-top: 18px; display: flex; flex-wrap: wrap; gap: 10px 20px; justify-content: space-between; font-size: 13px; }
footer .fine a { display: inline; padding: 0; color: inherit; text-decoration: underline; text-underline-offset: 3px; text-decoration-color: rgba(251,248,245,0.4); }
footer .fine a:hover { color: #fff; text-decoration-color: #fff; }

/* Botão flutuante de WhatsApp */
a.wafloat { position: fixed; right: max(18px, env(safe-area-inset-right, 0px)); bottom: max(18px, env(safe-area-inset-bottom, 0px)); z-index: 60; display: inline-flex; align-items: center; gap: 10px; background: #15803D; color: #fff; padding: 13px 18px; border-radius: 999px; font-weight: 600; font-size: 15px; box-shadow: 0 10px 26px rgba(36,28,29,0.22); }
a.wafloat:hover { background: #116B33; color: #fff; }
a.wafloat svg { flex: none; }
@media (max-width: 560px) { a.wafloat span { display: none; } a.wafloat { padding: 15px; } }

/* Topo: nome e titulo ao mesmo nivel */
.hero2 .ident { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 20px; margin: 0 0 10px; }
/* O título principal (h1) junta o nome e a profissão; cada parte mantém o seu estilo */
.hero2 h1.ident { font-family: inherit; font-size: 16px; line-height: 1.25; color: inherit; font-weight: 400; }
.hero2 .ident .nome, .hero2 .ident .papel { display: block; }
.hero2 .ced { font-size: 15px; line-height: 1.55; letter-spacing: 0.01em; color: var(--muted); margin: 0 0 30px; max-width: 46ch; }
.hero2 .ident .nome { font-family: var(--serif); font-size: clamp(17px, 1.9vw, 22px); line-height: 1.25; margin: 0; color: var(--wine-text); font-weight: 400; letter-spacing: 0.15em; text-transform: uppercase; }
.hero2 .ident .bar { width: 2px; height: 27px; background: color-mix(in srgb, var(--wine) 60%, transparent); flex: none; }
.hero2 .ident .papel { font-family: var(--serif); font-size: clamp(21px, 2.9vw, 30px); letter-spacing: 0.16em; text-transform: uppercase; color: var(--wine-text); margin: 0; }
.hero2 ul.faz { list-style: none; margin: 0 0 32px; padding: 0; display: grid; gap: 9px; max-width: 40ch; }
.hero2 ul.faz li { position: relative; padding-left: 26px; font-size: clamp(16px, 1.6vw, 18px); line-height: 1.45; color: var(--fg); }
.hero2 ul.faz li::before { content: ""; position: absolute; left: 4px; top: 0.62em; width: 9px; height: 9px; border-radius: 50%; background: var(--wine); opacity: 0.85; }

/* Grelha de áreas com ícones */
.areas2 { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(330px, 100%), 1fr)); gap: 18px; }
.areas2 > div { background: var(--surface); border: 1px solid var(--line); border-radius: 18px; padding: 28px 28px 30px; min-width: 0; }
.areas2 .ttl { display: flex; align-items: center; gap: 14px; margin-bottom: 14px; }
.areas2 .ic { flex: none; width: 42px; height: 42px; border-radius: 50%; background: color-mix(in srgb, var(--wine) 8%, transparent); display: flex; align-items: center; justify-content: center; color: var(--wine-text); }
.areas2 h3 { font-family: var(--serif); font-size: 21px; color: var(--ink); margin: 0; }
.areas2 .items { font-size: 15px; line-height: 1.95; color: var(--fg); }
.areas2 .items a { color: inherit; border-bottom: 1px solid color-mix(in srgb, var(--wine) 24%, transparent); }
.areas2 .items a:hover { color: var(--wine-text); border-bottom-color: var(--wine); }
.areas2 .items .sep { color: var(--line-3); padding: 0 2px; }

/* Online e presencial, lado a lado */
.canais { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(300px, 100%), 1fr)); gap: 18px; margin-top: 30px; }
.canais > div { background: var(--alt); border: 1px solid var(--line); border-radius: 16px; padding: 24px 26px 26px; min-width: 0; }
.canais .t { display: flex; align-items: center; gap: 11px; margin-bottom: 10px; color: var(--wine-text); }
.canais h3 { font-family: var(--serif); font-size: 20px; margin: 0; color: var(--ink); }
.canais p { font-size: 15px; line-height: 1.7; color: var(--fg); margin: 0; text-wrap: pretty; }

/* Telemóvel: cabeçalho em duas linhas e espaçamentos mais curtos */
@media (max-width: 560px) {
  header.top .wrap { padding-block: 9px; gap: 10px; flex-wrap: nowrap; }
  .brand img { width: 30px; height: 30px; }
  .brand span { display: none; }
  nav.menu .so-grande { display: none; }
  header.top a.cta { order: 3; padding: 9px 13px; font-size: 14px; gap: 7px; }
  nav.menu { order: 2; width: auto; margin-left: auto; justify-content: flex-end; align-items: center; gap: 16px; font-size: 14px; flex-wrap: nowrap; }

  section .wrap { padding-block: 52px; }
  .phead .wrap { padding-block: 32px 36px; }
  .hero2 .wrap { padding-block: 34px 0; }
  .hero2 .txt { padding-bottom: 28px; }
  .h2 { margin-bottom: 30px; }

  .areas2 { gap: 14px; }
  .areas2 > div { padding: 22px 20px 24px; border-radius: 16px; }
  .steps > div, .canais > div { padding: 22px 20px 24px; }
  .canais { gap: 14px; margin-top: 22px; }
  .zonas { gap: 34px; }
  .contact .wrap { gap: 34px; }
  form.cform { padding: 24px 20px; }
  footer .wrap { padding-block: 34px 24px; }
}

@media (max-width: 560px) {
  .hero2 .eyebrow2 { font-size: 11px; letter-spacing: 0.1em; margin-bottom: 12px; }
  .hero2 .ced { clear: right; padding-top: 4px; }
}

/* Ecrãs mais estreitos: o cabeçalho continua numa só linha */
@media (max-width: 380px) {
  .wrap { padding-left: max(18px, env(safe-area-inset-left, 0px)); padding-right: max(18px, env(safe-area-inset-right, 0px)); }
  header.top .wrap { gap: 8px; }
  .brand img { width: 27px; height: 27px; }
  nav.menu { gap: 12px; font-size: 13px; }
  header.top a.cta { padding: 8px 11px; font-size: 13px; gap: 6px; }
  header.top a.cta svg { width: 17px; height: 17px; }
}

@media (max-width: 900px) and (min-width: 561px) {
  .brand .sfx { display: none; }
  .brand span { font-size: 16px; }
  nav.menu { gap: 10px 15px; font-size: 14px; flex-wrap: nowrap; }
  header.top .wrap { gap: 10px; flex-wrap: nowrap; }
  header.top a.cta { padding: 9px 14px; font-size: 14px; }
}
@media (max-width: 400px) {
  .hero2 .btns a { font-size: 16px; padding: 15px 18px; }
}

@media (max-width: 660px) and (min-width: 561px) {
  .brand span { display: none; }
}

/* Alvos de toque com pelo menos 44px de altura */
nav.menu a { display: inline-block; line-height: 44px; white-space: nowrap; }
.brand { min-height: 44px; }
form.cform .alt a { display: inline-block; padding: 12px 6px; }
footer a { min-height: 32px; }
@media (max-width: 560px) {
  header.top .wrap { padding-block: 4px; }
  footer a { padding: 8px 0; }
}
/* Foco visivel para quem navega com teclado */
a:focus-visible, button:focus-visible, summary:focus-visible { outline: 2px solid var(--wine-text); outline-offset: 3px; border-radius: 4px; }

/* Telemóveis muito estreitos (320 a 370 px): o nome e a profissão cabem ao lado da fotografia */
@media (max-width: 370px) {
  .wrap { padding-left: max(16px, env(safe-area-inset-left, 0px)); padding-right: max(16px, env(safe-area-inset-right, 0px)); }
  .hero2 .ph { width: 100px; margin-left: 12px; }
  .hero2 .ph img { width: 100px; }
  .hero2 .ident .nome { font-size: 16px; }
  .hero2 .ident .papel { font-size: 19px; }
}

/* Ligações para secções da página (por exemplo, "Pergunte"): o título não fica escondido por baixo do cabeçalho */
section[id] { scroll-margin-top: 64px; }
@media (max-width: 560px) { section[id] { scroll-margin-top: 48px; } }

/* O que é um solicitador (página inicial) */
.sol { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr); grid-template-areas: "intro lista" "gar lista" "lei lei"; gap: 30px 56px; align-items: start; }
.sol .intro { grid-area: intro; min-width: 0; }
.sol .intro .t { font-size: 17px; line-height: 1.7; color: var(--fg); margin: 0; max-width: 52ch; text-wrap: pretty; }
.sol .faz2 { grid-area: lista; min-width: 0; background: var(--surface); border: 1px solid var(--line); border-radius: 18px; padding: 30px 30px 32px; }
.sol .faz2 h3 { font-family: var(--serif); font-size: 22px; color: var(--ink); margin: 0 0 18px; font-weight: 400; }
.sol .faz2 ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 15px; }
.sol .faz2 li { position: relative; padding-left: 32px; font-size: 15px; line-height: 1.6; color: var(--fg); text-wrap: pretty; }
.sol .faz2 li::before { content: ""; position: absolute; left: 0; top: 0.2em; width: 20px; height: 20px; border-radius: 50%;
  background: color-mix(in srgb, var(--wine) 9%, transparent) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%237B1526' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 12.5l4 4L18.5 8'/%3E%3C/svg%3E") center / 13px no-repeat; }
.sol .faz2 li strong { color: var(--ink); font-weight: 600; }
.sol .gar { grid-area: gar; min-width: 0; display: grid; gap: 18px; }
.sol .gar > div { border-left: 2px solid color-mix(in srgb, var(--wine) 55%, transparent); padding: 2px 0 2px 18px; }
.sol .gar h3 { font-family: var(--serif); font-size: 19px; color: var(--ink); margin: 0 0 6px; font-weight: 400; }
.sol .gar p { font-size: 15px; line-height: 1.65; color: var(--fg); margin: 0; text-wrap: pretty; }
.sol .lei { grid-area: lei; font-size: 13px; line-height: 1.6; color: var(--muted); margin: 0; padding-top: 18px; border-top: 1px solid var(--line); }
@media (max-width: 860px) {
  .sol { grid-template-columns: minmax(0, 1fr); grid-template-areas: "intro" "lista" "gar" "lei"; gap: 26px; }
}
@media (max-width: 560px) {
  .sol .faz2 { padding: 24px 20px 26px; border-radius: 16px; }
  .sol .intro .t { font-size: 16px; }
}
.sol .intro .h2 { margin-bottom: 20px; }

/* Cartões das áreas: lista, "Ver mais" e "Fale comigo" */
.areas2 > div { display: flex; flex-direction: column; }
.areas2 ul.items { list-style: none; margin: 0; padding: 0; display: grid; gap: 7px; font-size: 15px; line-height: 1.5; color: var(--fg); }
.areas2 ul.items li { position: relative; padding-left: 17px; }
.areas2 ul.items li::before { content: ""; position: absolute; left: 2px; top: 0.6em; width: 6px; height: 6px; border-radius: 50%; background: var(--wine); opacity: 0.75; }
.areas2 details.mais { margin-top: 4px; }
.areas2 details.mais summary { display: inline-flex; align-items: center; gap: 8px; cursor: pointer; padding: 10px 0 6px; font-size: 14px; font-weight: 600; color: var(--wine-text); }
.areas2 details.mais summary::after { content: ""; width: 7px; height: 7px; border-right: 1.7px solid currentColor; border-bottom: 1.7px solid currentColor; transform: translateY(-2px) rotate(45deg); transition: transform .2s; }
.areas2 details.mais[open] summary::after { transform: translateY(2px) rotate(-135deg); }
.areas2 details.mais .vmn, .areas2 details.mais[open] .vm { display: none; }
.areas2 details.mais[open] .vmn { display: inline; }
.areas2 details.mais ul.items { margin-top: 6px; }
.areas2 .fim { margin: auto 0 0; padding-top: 22px; }
.areas2 a.falar { display: inline-flex; align-items: center; gap: 8px; min-height: 44px; padding: 10px 16px; border: 1.5px solid var(--line-3); border-radius: 10px; font-size: 14px; font-weight: 600; color: var(--wine-text); transition: background .15s, color .15s, border-color .15s; }
.areas2 a.falar:hover { background: var(--wine); border-color: var(--wine); color: #fff; }
@media (prefers-reduced-motion: reduce) { .areas2 details.mais summary::after, .areas2 a.falar { transition: none; } }

/* Formulário: destino do "Fale comigo" e realce do assunto escolhido */
form.cform { scroll-margin-top: 92px; }
@media (max-width: 560px) { form.cform { scroll-margin-top: 66px; } }
form.cform select.realce { border-color: #7B1526; box-shadow: 0 0 0 3px rgba(123,21,38,0.18); }

/* Preço das chamadas junto do número (DL 59/2021) */
.hero2 .nota-tel { font-size: 12.5px; color: var(--muted); margin: 10px 0 0; }
.hero2 .nota-tel + .small2 { margin-top: 18px; }
footer .cols .nota-tel { font-size: 12px; color: rgba(251,248,245,0.6); padding: 0 0 6px; margin-top: -2px; }

/* Informação legal no rodapé */
footer .fine { flex-direction: column; justify-content: flex-start; gap: 8px; line-height: 1.6; }

/* Proteção de dados, junto do formulário */
form.cform details.rgpd { font-size: 12px; line-height: 1.6; color: #6B5F61; }
form.cform details.rgpd summary { cursor: pointer; display: inline-flex; align-items: center; gap: 6px; padding: 6px 0; font-weight: 600; color: #7B1526; }
form.cform details.rgpd summary::after { content: ""; width: 6px; height: 6px; border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor; transform: translateY(-2px) rotate(45deg); }
form.cform details.rgpd[open] summary::after { transform: translateY(1px) rotate(-135deg); }
form.cform details.rgpd p { margin: 6px 0 0; }
form.cform details.rgpd a { color: #7B1526; text-decoration: underline; text-underline-offset: 2px; }

/* O botão flutuante do WhatsApp não tapa o fim do rodapé */
footer .wrap { padding-bottom: 96px; }
