/* ECE LDA — página principal */
:root {
  --ink:#14171E; --ink2:#22252C; --ink3:#2F343C;
  --marca:#5DBAC5; --marca-esc:#1F7A87; --marca-clara:#D6F0F3; --bruma:#F1F9FA;
  --cz:#566068; --ln:#DCE5E7; --grelha:rgba(20,23,30,.045);
  --sp:clamp(96px,11vw,176px);
  --ease:cubic-bezier(.2,.75,.2,1);
  --topo:80px;
  --titulo:"Bricolage Grotesque","Instrument Sans",system-ui,sans-serif;
  --corte:clamp(22px,3vw,44px);
}
*,*::before,*::after { box-sizing:border-box; }
html { scroll-behavior:smooth; scroll-padding-top:90px; -webkit-text-size-adjust:100%; }
body { margin:0; background:#fff; color:var(--ink); font:400 17px/1.65 "Instrument Sans",system-ui,sans-serif; -webkit-font-smoothing:antialiased; overflow-x:clip; }
img { display:block; max-width:100%; height:auto; }
a { color:inherit; text-decoration:none; }
button { font:inherit; color:inherit; cursor:pointer; background:none; border:0; padding:0; }
ul,ol { list-style:none; margin:0; padding:0; }
h1,h2,h3,h4 { margin:0; font-family:var(--titulo); font-weight:700; letter-spacing:-.025em; line-height:1.04; text-wrap:balance; }
h2 { font-size:clamp(2.2rem,4.7vw,4rem); font-variation-settings:"wdth" 88; }
p { margin:0; text-wrap:pretty; }
svg { fill:none; stroke:currentColor; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; }
:focus-visible { outline:2px solid var(--marca-esc); outline-offset:3px; }
::selection { background:var(--marca); color:var(--ink); }
.caixa { width:100%; max-width:1280px; margin-inline:auto; padding-inline:clamp(20px,4vw,48px); }
.saltar { position:absolute; left:-999px; top:8px; z-index:100; background:var(--ink); color:#fff; padding:10px 16px; }
.saltar:focus { left:8px; }
.seccao { padding-block:var(--sp); }

/* Etiqueta de secção: um pequeno telhado de uma água */
.etq { display:flex; align-items:center; gap:10px; margin-bottom:22px; font-size:.86rem; font-weight:600; color:var(--marca-esc); }
.etq::before { content:""; width:22px; height:12px; flex:none; background:var(--marca); clip-path:polygon(0 100%,100% 0,100% 100%); }

/* Botões */
.btn { display:inline-flex; align-items:stretch; min-height:56px; background:var(--ink); color:#fff; font-weight:600; font-size:1rem; line-height:1.2; border:1px solid var(--ink); position:relative; overflow:hidden; transition:color .35s; isolation:isolate; }
.btn::before { content:""; position:absolute; inset:0; z-index:-1; background:var(--marca); transform:translateX(-101%); transition:transform .5s var(--ease); }
.btn:hover::before { transform:none; }
.btn:hover { color:var(--ink); }
.btn span { display:flex; align-items:center; padding:0 26px; }
.btn i { display:grid; place-items:center; width:56px; flex:none; background:var(--marca); color:var(--ink); transition:background .35s; }
.btn:hover i { background:transparent; }
.btn i svg { width:20px; height:20px; transition:transform .45s var(--ease); }
.btn:hover i svg { transform:translateX(4px); }
.btn-peq { min-height:44px; font-size:.92rem; }
.btn-peq span { padding:0 18px; }
.btn-linha { background:transparent; color:var(--ink); }
.btn-linha:hover { color:var(--ink); }
.btn-claro { background:#fff; color:var(--ink); border-color:#fff; }
.btn-total { width:100%; justify-content:space-between; }
.acoes { display:flex; flex-wrap:wrap; gap:12px; }
.ligacao { display:inline-flex; align-items:center; gap:10px; font-weight:600; padding-bottom:4px; background:linear-gradient(var(--marca),var(--marca)) 0 100%/100% 2px no-repeat; transition:background-size .45s var(--ease),gap .45s var(--ease); }
.ligacao svg { width:18px; height:18px; flex:none; }
.ligacao:hover { gap:16px; background-size:45% 2px; }

/* Topo */
.topo { position:sticky; top:0; z-index:40; background:rgba(255,255,255,.93); backdrop-filter:blur(14px); border-bottom:1px solid transparent; transition:border-color .3s; }
.topo.rolou { border-color:var(--ln); }
.topo-int { display:flex; align-items:center; justify-content:space-between; gap:24px; height:var(--topo); }
.logo { display:flex; align-items:center; gap:11px; flex:none; }
.logo img { width:36px; height:auto; }
.logo strong { display:block; font-family:var(--titulo); font-size:1.14rem; font-weight:800; line-height:1.1; letter-spacing:-.01em; }
.logo small { display:block; font-size:.7rem; color:var(--cz); }
#menu { position:relative; display:flex; gap:clamp(18px,2.6vw,36px); }
#menu a { padding:8px 0; font-size:.95rem; font-weight:500; color:var(--cz); transition:color .25s; }
#menu a:hover,#menu a[aria-current="page"] { color:var(--ink); }
.indicador { position:absolute; left:0; bottom:0; height:2px; width:0; background:var(--marca); opacity:0; transition:transform .5s var(--ease),width .5s var(--ease),opacity .3s; }
.topo-acoes { display:flex; align-items:center; gap:18px; flex:none; }
.topo-tel { font-weight:600; font-size:.95rem; white-space:nowrap; }
.topo-tel:hover { color:var(--marca-esc); }
.burger { display:none; width:44px; height:44px; position:relative; border:1px solid var(--ln); }
.burger i { position:absolute; left:11px; right:11px; height:2px; background:var(--ink); transition:transform .3s,top .3s; }
.burger i:first-child { top:16px; } .burger i:last-child { top:24px; }
.burger[aria-expanded="true"] i { top:20px; }
.burger[aria-expanded="true"] i:first-child { transform:rotate(45deg); }
.burger[aria-expanded="true"] i:last-child { transform:rotate(-45deg); }
@media (max-width:1080px) { .topo-tel { display:none; } }
@media (max-width:900px) {
  .topo { backdrop-filter:none; background:#fff; }
  .burger { display:block; }
  .topo-acoes .btn-peq { display:none; }
  .indicador { display:none; }
  #menu { position:absolute; left:0; right:0; top:100%; flex-direction:column; gap:0; background:#fff; padding:8px clamp(20px,4vw,48px) 22px; border-bottom:1px solid var(--ln); box-shadow:0 22px 36px rgba(20,23,30,.1); opacity:0; visibility:hidden; transform:translateY(-8px); transition:opacity .25s,transform .25s,visibility .25s; }
  #menu.aberto { opacity:1; visibility:visible; transform:none; }
  #menu a { padding:15px 0; font-size:1.1rem; color:var(--ink); border-bottom:1px solid var(--ln); }
}

/* Hero: com o topo, nunca passa de um ecrã */
.hero { height:calc(100vh - var(--topo)); height:calc(100dvh - var(--topo)); max-height:880px; min-height:0; overflow:hidden; padding-top:clamp(16px,3vh,40px); background-image:linear-gradient(var(--grelha) 1px,transparent 1px),linear-gradient(90deg,var(--grelha) 1px,transparent 1px); background-size:40px 40px; background-position:center top; }
.hero-grelha { display:grid; grid-template-columns:1.08fr 1fr; gap:clamp(32px,5vw,80px); height:100%; }
.hero-txt { align-self:center; padding-bottom:clamp(16px,4vh,48px); }
.hero h1 { font-size:clamp(2.2rem,min(5.2vw,9.2vh),4.9rem); font-weight:700; font-variation-settings:"wdth" 86; line-height:1; letter-spacing:-.03em; margin-bottom:clamp(16px,3vh,30px); }
.hero h1 em { font-style:normal; position:relative; color:var(--marca-esc); white-space:nowrap; }
/* linha de cota por baixo do texto: desenha-se à entrada */
.hero h1 em::after { content:""; position:absolute; left:0; right:0; bottom:-.09em; height:9px; border-inline:2px solid var(--marca); background:linear-gradient(var(--marca),var(--marca)) center/100% 2px no-repeat; transform-origin:left; animation:cota 1.1s .75s var(--ease) both; }
@keyframes cota { from { transform:scaleX(0); } to { transform:none; } }
.lead { font-size:clamp(1.02rem,min(1.5vw,2.5vh),1.24rem); line-height:1.5; color:var(--cz); max-width:31em; margin-bottom:clamp(20px,4vh,36px); }
.ent { animation:sobe .95s var(--ease) both; }
.e2 { animation-delay:.08s; } .e3 { animation-delay:.17s; } .e4 { animation-delay:.26s; }
@keyframes sobe { from { opacity:0; transform:translateY(22px); } to { opacity:1; transform:none; } }
.hero-palco { position:relative; min-height:0; height:100%; }
/* o painel tem o topo inclinado, como um telhado de uma água */
.hero-fundo { position:absolute; inset:14% 0 0; background:var(--ink); clip-path:polygon(0 20%,100% 0,100% 100%,0 100%); overflow:hidden; animation:painel 1.2s var(--ease) both; }
.hero-fundo::before { content:""; position:absolute; inset:0; background-image:linear-gradient(rgba(93,186,197,.13) 1px,transparent 1px),linear-gradient(90deg,rgba(93,186,197,.13) 1px,transparent 1px); background-size:40px 40px; }
.hero-fundo::after { content:""; position:absolute; left:50%; top:60%; width:84%; aspect-ratio:1; translate:-50% -50%; border-radius:50%; background:radial-gradient(closest-side,rgba(93,186,197,.4),transparent); }
@keyframes painel { from { opacity:0; transform:translateY(40px); } to { opacity:1; transform:none; } }
.cota-v { position:absolute; right:14px; bottom:18px; z-index:1; writing-mode:vertical-rl; rotate:180deg; font-size:.72rem; letter-spacing:.08em; color:rgba(214,240,243,.65); }
.tecnico { position:absolute; left:50%; bottom:0; height:96%; width:auto; max-width:none; translate:-50% 0; filter:drop-shadow(0 18px 40px rgba(0,0,0,.35)); animation:construtor 1.25s .12s var(--ease) both; }
@keyframes construtor { from { opacity:0; transform:translateY(36px); } to { opacity:1; transform:none; } }
/* fichas: abrem-se à entrada, os números contam e depois ficam paradas */
.ficha { position:absolute; display:grid; gap:1px; padding:12px 18px 12px 20px; background:#fff; box-shadow:0 18px 40px -12px rgba(20,23,30,.32); animation:ficha 1s var(--ease) both; }
.ficha::before { content:""; position:absolute; left:0; top:0; bottom:0; width:3px; background:var(--marca); transform-origin:top; animation:fichaBarra .7s var(--ease) both; animation-delay:inherit; }
.ficha strong { display:block; font-family:var(--titulo); font-size:1.3rem; line-height:1.1; letter-spacing:-.02em; font-variant-numeric:tabular-nums; }
.ficha strong span { font:inherit; color:inherit; }
.ficha > span { font-size:.8rem; color:var(--cz); line-height:1.3; }
.f1 { left:-5%; top:44%; animation-delay:.7s; }
.f2 { right:-3%; top:27%; animation-delay:.9s; }
.f3 { right:0; bottom:9%; animation-delay:1.1s; }
@keyframes ficha { from { opacity:0; clip-path:inset(0 100% 0 0); transform:translateX(-14px); } to { opacity:1; clip-path:inset(-60px -60px -60px -60px); transform:none; } }
@keyframes fichaBarra { from { transform:scaleY(0); } to { transform:none; } }
@media (max-width:960px) {
  :root { --topo:68px; }
  .hero { height:calc(100vh - var(--topo) - 56px); height:calc(100dvh - var(--topo) - 56px); max-height:none; }
  .hero-grelha { grid-template-columns:1fr; grid-template-rows:auto minmax(0,1fr); gap:0; }
  .hero-txt { padding-bottom:14px; align-self:start; }
  .hero h1 { font-size:clamp(1.8rem,min(8.2vw,5.4vh),3.4rem); margin-bottom:12px; }
  .lead { font-size:.98rem; margin-bottom:14px; }
  .hero-wa { display:none; }
  .btn { min-height:50px; }
  .btn i { width:50px; }
  .hero-palco { width:100%; max-width:520px; margin-inline:auto; }
  .f1 { left:0; top:40%; } .f2 { right:0; top:22%; } .f3 { right:0; bottom:8%; }
  .ficha { padding:7px 11px 7px 13px; } .ficha strong { font-size:1rem; } .ficha > span { font-size:.68rem; }
}
@media (min-width:861px) and (max-width:960px) { .hero { height:calc(100dvh - var(--topo)); } }
@media (max-width:420px) { .hero h1 em { white-space:normal; } .hero h1 em::after { display:none; } .btn span { padding:0 20px; } }

/* Confiança */
.confianca { background:var(--ink); color:#fff; padding-block:clamp(24px,3vw,36px); }
.conf-int { display:flex; align-items:center; gap:clamp(24px,5vw,72px); }
.conf-int > p { flex:none; max-width:13em; font-size:.88rem; line-height:1.35; color:#C5CCD2; }
.marquee { flex:1; min-width:0; overflow:hidden; -webkit-mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent); mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent); }
.marquee ul { display:flex; align-items:center; gap:clamp(44px,6vw,88px); width:max-content; padding-right:clamp(44px,6vw,88px); animation:marquee 42s linear infinite; }
.marquee:hover ul { animation-play-state:paused; }
@keyframes marquee { to { transform:translateX(-50%); } }
.marquee img { height:clamp(32px,3.2vw,44px); width:auto; max-width:none; filter:brightness(0) invert(1); opacity:.78; transition:opacity .3s; }
.marquee img:hover { opacity:1; }
@media (max-width:760px) { .conf-int { flex-direction:column; align-items:stretch; gap:16px; } .conf-int > p { max-width:none; } }

/* Cabeçalhos */
.cabeca { max-width:880px; margin-bottom:clamp(48px,6vw,88px); }
.cabeca-duas { max-width:none; display:flex; align-items:flex-end; justify-content:space-between; gap:28px; flex-wrap:wrap; }
.cabeca-duas h2 { max-width:15em; }

/* Pontos à volta do pintor */
.centro { text-align:center; margin-inline:auto; }
.centro .etq { justify-content:center; }
.pts { display:grid; grid-template-columns:1fr minmax(300px,520px) 1fr; gap:clamp(12px,2vw,28px); align-items:stretch; }
.pts ul { display:grid; grid-template-rows:repeat(3,1fr); gap:clamp(14px,2vw,24px); align-self:center; }
.pts li { position:relative; display:flex; align-items:center; gap:14px; padding:clamp(14px,1.6vw,20px); background:#fff; transition:background .35s,box-shadow .35s; }
.pts-esq li { flex-direction:row-reverse; text-align:right; color:var(--cz); }
.pts b { flex:none; display:grid; place-items:center; width:42px; height:42px; background:var(--bruma); color:var(--marca-esc); transition:background .35s,color .35s; }
.pts-dir b { background:var(--ink); color:var(--marca); }
.pts b svg { width:20px; height:20px; }
.pts strong { display:block; font-family:var(--titulo); font-size:clamp(1.04rem,1.5vw,1.26rem); font-weight:600; line-height:1.2; letter-spacing:-.01em; font-variation-settings:"wdth" 92; }
.pts-dir strong { color:var(--ink); }
.pts em { display:block; margin-top:3px; font-style:normal; font-size:.92rem; line-height:1.4; color:var(--cz); }
/* o ponto liga-se ao pintor: a linha desenha-se ao aparecer */
.pts li::after { content:""; position:absolute; top:50%; width:clamp(14px,2vw,32px); height:2px; background:var(--marca); transform:scaleX(0); transition:transform .8s .35s var(--ease); }
.pts-esq li::after { right:calc(clamp(14px,2vw,32px)*-1); transform-origin:left; }
.pts-dir li::after { left:calc(clamp(14px,2vw,32px)*-1); transform-origin:right; }
.pts.ver li::after { transform:none; }
.pts li::before { content:""; position:absolute; top:50%; width:10px; height:10px; margin-top:-4px; border-radius:50%; background:var(--marca); opacity:0; transition:opacity .4s .9s; z-index:1; }
.pts-esq li::before { right:calc(clamp(14px,2vw,32px)*-1 - 5px); }
.pts-dir li::before { left:calc(clamp(14px,2vw,32px)*-1 - 5px); }
.pts.ver li::before { opacity:1; }
.js .pts ul li { opacity:0; transition:opacity .8s var(--ease),transform .8s var(--ease),background .35s,box-shadow .35s; }
.js .pts-esq li { transform:translateX(-22px); } .js .pts-dir li { transform:translateX(22px); }
.js .pts.ver ul li { opacity:1; transform:none; }
.js .pts ul li:nth-child(2) { transition-delay:.12s,.12s,0s,0s; } .js .pts ul li:nth-child(3) { transition-delay:.24s,.24s,0s,0s; }
/* passar por um ponto destaca o par do outro lado */
.pts li:hover,
.pts:has(.pts-esq li:nth-child(1):hover) .pts-dir li:nth-child(1),.pts:has(.pts-dir li:nth-child(1):hover) .pts-esq li:nth-child(1),
.pts:has(.pts-esq li:nth-child(2):hover) .pts-dir li:nth-child(2),.pts:has(.pts-dir li:nth-child(2):hover) .pts-esq li:nth-child(2),
.pts:has(.pts-esq li:nth-child(3):hover) .pts-dir li:nth-child(3),.pts:has(.pts-dir li:nth-child(3):hover) .pts-esq li:nth-child(3) { background:var(--bruma); box-shadow:inset 0 0 0 1px var(--marca-clara); }
.pts-foto { position:relative; align-self:end; }
.pts-foto::before { content:""; position:absolute; left:8%; right:8%; bottom:0; height:64%; background:var(--marca-clara); clip-path:polygon(0 18%,100% 0,100% 100%,0 100%); }
.pts-foto img { position:relative; width:100%; }
@media (max-width:860px) {
  .pts { grid-template-columns:1fr; gap:10px; }
  .pts ul { display:contents; }
  .pts-foto { order:0; max-width:400px; width:100%; margin-inline:auto; }
  .pts-esq li { flex-direction:row; text-align:left; }
  .pts li::before,.pts li::after { display:none; }
  .pts li { background:var(--bruma); }
  .js .pts-esq li,.js .pts-dir li { transform:translateY(14px); }
  .pts-esq li:nth-child(1) { order:1; } .pts-dir li:nth-child(1) { order:2; margin-bottom:14px; background:var(--ink); }
  .pts-esq li:nth-child(2) { order:3; } .pts-dir li:nth-child(2) { order:4; margin-bottom:14px; background:var(--ink); }
  .pts-esq li:nth-child(3) { order:5; } .pts-dir li:nth-child(3) { order:6; background:var(--ink); }
  .pts-dir strong { color:#fff; } .pts-dir em { color:#C5CCD2; }
}

/* Serviços: empilhados sem JavaScript; fixos e laterais com .pin-on */
.servicos { background:var(--bruma); padding-block:var(--sp); }
.serv-pin { display:flex; flex-direction:column; }
.serv-cabeca { display:flex; align-items:flex-end; justify-content:space-between; gap:24px; margin-bottom:clamp(32px,4vw,56px); }
.serv-cabeca h2 { font-size:clamp(2rem,4vw,3.4rem); max-width:17em; }
.serv-cont { flex:none; font-family:var(--titulo); font-size:1.05rem; color:var(--cz); display:none; }
.serv-cont b { color:var(--ink); font-size:1.9rem; font-weight:700; }
.serv-faixa { display:grid; gap:24px; width:100%; max-width:1280px; margin-inline:auto; padding-inline:clamp(20px,4vw,48px); }
.serv { display:grid; grid-template-columns:1.2fr 1fr; background:#fff; position:relative; clip-path:polygon(0 0,100% 0,100% calc(100% - var(--corte)),calc(100% - var(--corte)) 100%,0 100%); }
.serv-foto { overflow:hidden; min-height:320px; }
.serv-foto img { width:100%; height:100%; object-fit:cover; }
.serv:nth-child(2) .serv-foto img { object-position:14% center; }
.serv-txt { position:relative; padding:clamp(28px,3.6vw,56px); display:flex; flex-direction:column; justify-content:center; overflow:hidden; }
.serv-num { position:absolute; right:clamp(16px,2vw,28px); top:clamp(4px,1vw,14px); font-family:var(--titulo); font-size:clamp(3.4rem,7vw,6.4rem); font-weight:800; line-height:1; color:transparent; -webkit-text-stroke:1.5px var(--marca); font-variation-settings:"wdth" 80; }
.serv h3 { font-size:clamp(1.6rem,2.7vw,2.4rem); font-variation-settings:"wdth" 88; margin-bottom:14px; padding-right:2.4em; }
.serv p { color:var(--cz); margin-bottom:20px; }
.serv ul { margin-bottom:28px; border-top:1px solid var(--ln); }
.serv li { padding:10px 0 10px 24px; border-bottom:1px solid var(--ln); position:relative; font-size:.97rem; line-height:1.4; }
.serv li::before { content:""; position:absolute; left:2px; top:17px; width:12px; height:7px; background:var(--marca); clip-path:polygon(0 100%,100% 0,100% 100%); }
.serv .ligacao { align-self:flex-start; }
.serv-regua-env { display:none; }
.regua { position:relative; height:16px; background-image:repeating-linear-gradient(90deg,rgba(20,23,30,.35) 0 1px,transparent 1px 60px),repeating-linear-gradient(90deg,rgba(20,23,30,.2) 0 1px,transparent 1px 12px); background-size:100% 16px,100% 8px; background-repeat:no-repeat; }
.regua i { position:absolute; left:0; bottom:0; height:3px; width:0; background:var(--marca-esc); }
@media (max-width:760px) { .serv { grid-template-columns:1fr; } .serv-foto { min-height:0; aspect-ratio:16/10; } }

.pin-on.servicos { padding-block:0; }
.pin-on .serv-pin { position:sticky; top:0; height:100vh; height:100svh; overflow:hidden; padding-top:clamp(92px,12vh,120px); padding-bottom:clamp(18px,3vh,32px); }
.pin-on .serv-cabeca { flex:none; margin-bottom:clamp(16px,3vh,36px); }
.pin-on .serv-cabeca h2 { font-size:clamp(1.7rem,min(3.4vw,5.4vh),3rem); }
.pin-on .etq { margin-bottom:10px; }
.pin-on .serv-cont { display:block; }
.pin-on .serv-faixa { flex:1; min-height:0; display:flex; width:max-content; max-width:none; margin:0; gap:clamp(16px,2vw,28px); padding-inline:max(clamp(20px,4vw,48px),calc((100vw - 1280px)/2 + 48px)); will-change:transform; }
.pin-on .serv { flex:none; width:min(1060px,calc(100vw - 2*clamp(20px,4vw,48px) - 28px)); height:100%; max-height:640px; }
.pin-on .serv-foto { min-height:0; }
.pin-on .serv-regua-env { display:block; flex:none; margin-top:clamp(12px,2.4vh,24px); }
@media (max-width:760px) {
  .pin-on .serv { grid-template-columns:none; grid-template-rows:minmax(0,1fr) auto; max-height:none; }
  .pin-on .serv-foto { aspect-ratio:auto; }
  .pin-on .serv-txt { padding:18px 20px 26px; }
  .pin-on .serv h3 { font-size:1.4rem; margin-bottom:6px; }
  .pin-on .serv p { font-size:.93rem; line-height:1.45; margin-bottom:10px; }
  .pin-on .serv ul { margin-bottom:14px; }
  .pin-on .serv li { padding-block:6px; font-size:.87rem; }
  .pin-on .serv li::before { top:12px; }
  .pin-on .serv-num { display:none; }
  .pin-on .serv-cabeca h2 { font-size:1.45rem; }
  .pin-on .serv-pin { padding-top:84px; padding-bottom:calc(66px + 10px); }
}

/* Processo: degraus que sobem */
.escada { display:grid; grid-template-columns:repeat(4,1fr); gap:clamp(12px,1.5vw,20px); align-items:end; }
.escada li { background:var(--bruma); padding:clamp(24px,2.6vw,36px); border-top:3px solid var(--marca); transition:background .4s,color .4s; }
.escada li:nth-child(1) { min-height:300px; }
.escada li:nth-child(2) { min-height:350px; }
.escada li:nth-child(3) { min-height:400px; }
.escada li:nth-child(4) { min-height:450px; background:var(--ink); color:#fff; }
.escada li:nth-child(4) p { color:#C5CCD2; }
.escada b { display:block; font-family:var(--titulo); font-size:clamp(3rem,5vw,4.6rem); line-height:1; font-weight:800; color:transparent; -webkit-text-stroke:1.5px var(--marca-esc); margin-bottom:clamp(36px,5vw,72px); font-variation-settings:"wdth" 80; }
.escada li:nth-child(4) b { -webkit-text-stroke-color:var(--marca); }
.escada h3 { font-size:clamp(1.25rem,1.9vw,1.6rem); font-variation-settings:"wdth" 90; margin-bottom:12px; }
.escada p { color:var(--cz); font-size:.98rem; line-height:1.5; }
@media (max-width:900px) {
  .escada { grid-template-columns:1fr; }
  .escada li { min-height:0 !important; display:grid; grid-template-columns:64px 1fr; column-gap:16px; }
  .escada b { grid-row:span 2; font-size:2.8rem; margin:0; }
}

/* Obras */
.obras { background:var(--ink); color:#fff; clip-path:polygon(0 clamp(28px,5vw,80px),100% 0,100% 100%,0 100%); padding-top:calc(var(--sp) + clamp(28px,5vw,80px)); }
.obras .etq { color:var(--marca); }
.galeria { display:grid; grid-template-columns:repeat(12,1fr); grid-auto-rows:clamp(150px,19vw,270px); gap:clamp(10px,1.2vw,16px); }
.obra { position:relative; display:block; overflow:hidden; width:100%; height:100%; background:var(--ink2); text-align:left; }
.obra img { width:100%; height:100%; object-fit:cover; transition:transform 1.1s var(--ease); }
.obra:hover img { transform:scale(1.05); }
.obra span { position:absolute; left:0; bottom:0; padding:9px 16px; background:#fff; color:var(--ink); font-size:.86rem; font-weight:600; transition:background .3s; }
.obra:hover span { background:var(--marca); }
.g1 { grid-column:span 8; grid-row:span 2; } .g2 { grid-column:span 4; grid-row:span 2; } .g3 { grid-column:span 4; } .g4 { grid-column:span 4; } .g5 { grid-column:span 4; }
@media (max-width:760px) { .g1,.g2 { grid-column:span 12; grid-row:span 2; } .g3,.g4 { grid-column:span 6; } .g5 { grid-column:span 12; grid-row:span 2; } }
.visor { border:0; padding:0; max-width:min(1400px,94vw); max-height:92vh; background:transparent; overflow:visible; }
.visor::backdrop { background:rgba(14,16,20,.9); }
.visor img { max-height:90vh; width:auto; }
.visor-fechar { position:absolute; right:0; top:-46px; width:40px; height:40px; background:var(--marca); color:var(--ink); font-size:1.5rem; line-height:1; }

/* Sobre */
.sobre-grelha { display:grid; grid-template-columns:1fr 1.05fr; gap:clamp(40px,7vw,110px); align-items:center; }
.sobre-txt > p:not(.etq) { color:var(--cz); margin-block:26px 34px; font-size:1.08rem; max-width:34em; }
.lideres { display:grid; grid-template-columns:1fr 1fr; gap:0 28px; border-top:1px solid var(--ln); }
.lideres li { padding:14px 0; border-bottom:1px solid var(--ln); }
.lideres strong { display:block; font-weight:600; line-height:1.3; }
.lideres span { font-size:.87rem; color:var(--cz); }
.sobre-foto { margin:0; position:relative; clip-path:polygon(0 0,100% 0,100% calc(100% - var(--corte)),calc(100% - var(--corte)) 100%,0 100%); }
.sobre-foto img { width:100%; aspect-ratio:1/1.02; object-fit:cover; }
.sobre-foto figcaption { position:absolute; left:0; bottom:0; padding:9px 16px; background:#fff; font-size:.84rem; font-weight:600; }
.numeros { display:grid; grid-template-columns:repeat(4,1fr); gap:24px; margin:clamp(64px,8vw,120px) 0 0; }
.numeros dt { font-family:var(--titulo); font-size:clamp(2.7rem,6.4vw,5.6rem); font-weight:700; font-variation-settings:"wdth" 80; line-height:1; letter-spacing:-.03em; font-variant-numeric:tabular-nums; }
.numeros dd { margin:10px 0 18px; color:var(--cz); font-size:.95rem; line-height:1.35; }
.regua-cheia { background-size:100% 16px,100% 8px; }
@media (max-width:900px) { .sobre-grelha { grid-template-columns:1fr; } }
@media (max-width:620px) { .numeros { grid-template-columns:1fr 1fr; gap:32px 16px; } .lideres { grid-template-columns:1fr; } }

/* Faixa de chamada: a planta inteira, sem cortes, cobre o painel */
.cta-env { padding-bottom:var(--sp); }
.cta { position:relative; background:var(--ink); color:#fff; overflow:hidden; clip-path:polygon(0 0,100% 0,100% calc(100% - var(--corte)),calc(100% - var(--corte)) 100%,0 100%); }
.cta-arte { position:absolute; inset:0; }
.planta { position:absolute; inset:0; width:100%; height:100%; object-fit:contain; object-position:right bottom; opacity:.5; }
.cta-arte::after { content:""; position:absolute; inset:0; background:linear-gradient(90deg,var(--ink) 18%,rgba(20,23,30,.8) 44%,rgba(20,23,30,0) 70%); }
.capacete { position:absolute; z-index:1; right:clamp(24px,3vw,44px); top:clamp(24px,3vw,44px); width:clamp(52px,5vw,76px); height:auto; }
.cta-txt { position:relative; z-index:2; max-width:600px; padding:clamp(40px,6vw,92px) clamp(28px,5vw,76px); }
.cta h2 { font-size:clamp(2.1rem,4vw,3.5rem); margin-bottom:18px; }
.cta p { color:#C5CCD2; margin-bottom:32px; max-width:30em; font-size:1.08rem; }
@media (max-width:760px) {
  .cta-arte { position:relative; inset:auto; aspect-ratio:2560/963; order:2; }
  .cta { display:flex; flex-direction:column; }
  .planta { opacity:.65; }
  .cta-arte::after { background:linear-gradient(180deg,var(--ink),rgba(20,23,30,0) 30%); }
  .cta-txt { padding-bottom:12px; }
}

/* Perguntas */
.perguntas { background:var(--bruma); }
.perg-grelha { display:grid; grid-template-columns:1fr 1.35fr; gap:clamp(40px,7vw,110px); align-items:start; }
.perg-grelha h2 { font-size:clamp(2rem,3.8vw,3.3rem); }
.perg-lista { border-top:2px solid var(--ink); counter-reset:perg; }
details { position:relative; border-bottom:1px solid var(--ln); counter-increment:perg; overflow:hidden; }
/* barra de luz que entra ao passar o rato e fica com a pergunta aberta */
details::before { content:""; position:absolute; left:0; top:0; bottom:0; width:3px; background:var(--marca); transform:scaleY(0); transform-origin:top; transition:transform .5s var(--ease); }
details:hover::before,details[open]::before { transform:none; }
summary { list-style:none; display:flex; align-items:center; gap:16px; padding:24px 6px 24px 18px; cursor:pointer; font-family:var(--titulo); font-size:clamp(1.12rem,1.7vw,1.38rem); font-weight:600; letter-spacing:-.015em; line-height:1.25; position:relative; background:linear-gradient(90deg,#fff,#fff) 0 0/0 100% no-repeat; transition:background-size .55s var(--ease); }
summary:hover,details[open] summary { background-size:100% 100%; }
summary::-webkit-details-marker { display:none; }
summary::before { content:counter(perg,decimal-leading-zero); flex:none; font:600 .78rem/1 "Instrument Sans",sans-serif; color:var(--marca-esc); }
summary > span { flex:1; transition:transform .45s var(--ease); }
summary:hover > span { transform:translateX(6px); }
summary::after { content:""; flex:none; width:38px; height:38px; background:linear-gradient(var(--ink),var(--ink)) center/14px 2px no-repeat,linear-gradient(var(--ink),var(--ink)) center/2px 14px no-repeat,var(--marca-clara); transition:transform .5s var(--ease),background-color .3s; }
summary:hover::after { background-color:var(--marca); }
details[open] summary::after { transform:rotate(135deg); background-color:var(--marca); }
details p { padding:4px 56px 26px 50px; color:var(--cz); background:#fff; }
@media (max-width:860px) { .perg-grelha { grid-template-columns:1fr; } details p { padding:2px 18px 22px 18px; } }

/* Contacto */
.contacto { background:var(--ink); color:#fff; padding-block:var(--sp); }
.contacto .etq { color:var(--marca); }
.cont-grelha { display:grid; grid-template-columns:1fr 1.05fr; gap:clamp(44px,7vw,110px); align-items:start; }
.contacto h2 { font-size:clamp(2.5rem,5.4vw,4.7rem); margin-bottom:22px; }
.cont-txt > p:not(.etq) { color:#C5CCD2; font-size:1.1rem; margin-bottom:40px; max-width:28em; }
.canais a { display:block; padding:16px 0; border-top:1px solid rgba(255,255,255,.16); font-weight:600; font-size:1.1rem; transition:color .25s,padding .45s var(--ease); }
.canais li:last-child a { border-bottom:1px solid rgba(255,255,255,.16); }
.canais a:hover { color:var(--marca); padding-left:8px; }
.canais small { display:block; font-weight:400; font-size:.82rem; color:#A8AFB5; }
#pedido { background:var(--ink2); padding:clamp(24px,3.4vw,44px); display:grid; gap:20px; }
fieldset { border:0; padding:0; margin:0; min-width:0; }
legend { padding:0; margin-bottom:10px; font-size:.9rem; font-weight:600; }
.escolhas { display:flex; flex-wrap:wrap; gap:8px; }
.escolhas input { position:absolute; opacity:0; width:0; height:0; }
.escolhas span { display:block; padding:10px 15px; border:1px solid rgba(255,255,255,.22); font-size:.92rem; font-weight:500; cursor:pointer; transition:background .25s,color .25s,border-color .25s; }
.escolhas span:hover { border-color:var(--marca); }
.escolhas input:checked + span { background:var(--marca); border-color:var(--marca); color:var(--ink); font-weight:600; }
.escolhas input:focus-visible + span { outline:2px solid #fff; outline-offset:2px; }
.dois { display:grid; grid-template-columns:1fr 1fr; gap:16px; }
.campo { display:block; font-size:.9rem; font-weight:600; }
.campo em { font-style:normal; font-weight:400; color:#A8AFB5; }
.campo input,.campo textarea { display:block; width:100%; margin-top:8px; padding:13px 14px; border:1px solid rgba(255,255,255,.22); border-radius:0; background:transparent; color:#fff; font:inherit; font-weight:400; transition:border-color .25s,background .25s; }
.campo textarea { resize:vertical; }
.campo ::placeholder { color:#8A929A; }
.campo input:focus,.campo textarea:focus { outline:none; border-color:var(--marca); background:rgba(93,186,197,.08); }
.nota { font-size:.86rem; color:#A8AFB5; line-height:1.4; margin-top:-6px; }
@media (max-width:860px) { .cont-grelha { grid-template-columns:1fr; } }
@media (max-width:460px) { .dois { grid-template-columns:1fr; } }

/* Rodapé */
.rodape { background:#0E1014; color:#A2A9B0; font-size:.94rem; padding-block:clamp(52px,6vw,80px) 24px; }
.rod-grelha { display:grid; grid-template-columns:1.5fr 1fr 1.1fr 1.1fr; gap:32px; padding-bottom:40px; border-bottom:1px solid rgba(255,255,255,.1); }
.logo-c { display:inline-flex; margin-bottom:14px; }
.logo-c img { background:#fff; border-radius:50%; padding:5px; width:44px; }
.logo-c strong { color:#fff; }
.logo-c small { color:#A2A9B0; }
.rodape p { max-width:30ch; }
.rodape h4 { font-family:inherit; color:#fff; font-size:.92rem; font-weight:600; letter-spacing:0; margin-bottom:14px; }
.rod-grelha > div > a:not(.logo),.rod-grelha > div > span { display:block; margin-bottom:8px; }
.rod-grelha a:not(.logo) { width:fit-content; transition:color .25s,translate .4s var(--ease); }
.rod-grelha a:not(.logo):hover { color:var(--marca); translate:4px 0; }
.rod-base { display:flex; align-items:center; justify-content:space-between; gap:14px; flex-wrap:wrap; padding-top:18px; font-size:.84rem; }
.redes { display:flex; gap:8px; }
.redes a { width:38px; height:38px; display:grid; place-items:center; background:rgba(255,255,255,.08); color:#fff; transition:background .3s,color .3s; }
.redes a:hover { background:var(--marca); color:var(--ink); }
.redes svg { width:18px; height:18px; }
@media (max-width:860px) { .rod-grelha { grid-template-columns:1fr 1fr; } .rod-grelha > :first-child { grid-column:1/-1; } .rodape { padding-bottom:88px; } }
@media (max-width:440px) { .rod-grelha { grid-template-columns:1fr; } }

/* Régua lateral: mostra o progresso da página */
.regua-lateral { position:fixed; right:0; top:20vh; bottom:20vh; width:10px; z-index:20; pointer-events:none; background-image:repeating-linear-gradient(180deg,rgba(127,140,148,.55) 0 1px,transparent 1px 12px); }
.regua-lateral i { position:absolute; right:0; top:0; width:3px; height:100%; background:var(--marca); transform:scaleY(0); transform-origin:top; }
@media (max-width:1100px) { .regua-lateral { display:none; } }

/* Contacto rápido */
.wa { position:fixed; right:22px; bottom:22px; z-index:30; width:54px; height:54px; display:grid; place-items:center; background:var(--marca); color:var(--ink); box-shadow:0 12px 28px rgba(20,23,30,.28); transition:transform .4s var(--ease); }
.wa:hover { transform:translateY(-3px); }
.wa svg { width:26px; height:26px; }
.barra-movel { display:none; }
@media (max-width:860px) {
  .wa { display:none; }
  .barra-movel { position:fixed; left:0; right:0; bottom:0; z-index:35; display:grid; grid-template-columns:1fr 1.1fr 1.5fr; background:#fff; border-top:1px solid var(--ln); box-shadow:0 -8px 24px rgba(20,23,30,.1); }
  .barra-movel a { display:grid; place-items:center; min-height:56px; font-size:.92rem; font-weight:600; border-left:1px solid var(--ln); }
  .barra-movel .forte { background:var(--marca); border:0; }
}

/* Revelação */
.js .rv { opacity:0; transform:translateY(24px); transition:opacity .95s var(--ease),transform .95s var(--ease); }
.js .rv.ver { opacity:1; transform:none; }
.escada .rv:nth-child(2),.med-lista .rv:nth-child(2),.galeria .rv:nth-child(2) { transition-delay:.08s; }
.escada .rv:nth-child(3),.med-lista .rv:nth-child(3),.galeria .rv:nth-child(3) { transition-delay:.16s; }
.escada .rv:nth-child(4),.galeria .rv:nth-child(4) { transition-delay:.24s; }
.galeria .rv:nth-child(5) { transition-delay:.3s; }
@media (prefers-reduced-motion:reduce) {
  html { scroll-behavior:auto; }
  *,*::before,*::after { animation:none !important; transition-duration:.01ms !important; }
  .js .rv { opacity:1; transform:none; }
}

/* Telemóveis com pouca altura: mantém a foto e o essencial de cada serviço */
@media (max-width:760px) and (max-height:780px) {
  .pin-on .etq { display:none; }
  .pin-on .serv ul { display:none; }
  .pin-on .serv-cabeca { margin-bottom:12px; }
  .pin-on .serv-cabeca h2 { font-size:1.28rem; }
  .pin-on .serv .ligacao { font-size:.92rem; }
}

/* Secção da planta: empilhada por omissão; fixa e guiada pelo scroll com .pl-pin */
.planta-sec { background:var(--ink); color:#fff; position:relative; padding-block:var(--sp); background-image:linear-gradient(rgba(93,186,197,.07) 1px,transparent 1px),linear-gradient(90deg,rgba(93,186,197,.07) 1px,transparent 1px); background-size:40px 40px; }
.planta-sec .etq { color:var(--marca); }
.planta-sec h2 { font-size:clamp(2rem,4vw,3.5rem); margin-bottom:clamp(20px,4vh,44px); }
.pl-grelha { display:grid; grid-template-columns:1fr minmax(0,1.05fr); gap:clamp(32px,6vw,96px); align-items:center; }
.pl-passos { display:grid; gap:0; border-top:1px solid rgba(255,255,255,.14); }
.pl-passos li { display:grid; grid-template-columns:44px 1fr; gap:10px; padding:clamp(12px,2.2vh,22px) 0; border-bottom:1px solid rgba(255,255,255,.14); position:relative; opacity:.42; transition:opacity .5s; }
.pl-passos li::before { content:""; position:absolute; left:0; bottom:-1px; height:2px; width:100%; background:var(--marca); transform:scaleX(0); transform-origin:left; transition:transform .7s var(--ease); }
.pl-passos li.on { opacity:1; }
.pl-passos li.on::before { transform:none; }
.pl-passos b { font-size:.82rem; font-weight:600; color:var(--marca); padding-top:.3em; }
.pl-passos h3 { font-size:clamp(1.14rem,1.9vw,1.5rem); font-variation-settings:"wdth" 90; margin-bottom:4px; }
.pl-passos p { color:#C5CCD2; font-size:.96rem; line-height:1.45; }
.pl-fim { margin-top:clamp(18px,3.4vh,32px); }
.pl-palco-env { position:relative; min-height:0; display:flex; flex-direction:column; align-items:center; }
.pl-palco { aspect-ratio:871/1200; width:100%; max-width:560px; }
.pl-palco svg { display:block; width:100%; height:100%; overflow:visible; }
.pl-palco-env small { margin-top:8px; font-size:.74rem; color:#8A929A; }
.pl-regua-env { display:none; }
.regua-clara { background-image:repeating-linear-gradient(90deg,rgba(255,255,255,.4) 0 1px,transparent 1px 60px),repeating-linear-gradient(90deg,rgba(255,255,255,.2) 0 1px,transparent 1px 12px); }
.regua-clara i { width:100%; background:var(--marca); transform:scaleX(0); transform-origin:left; }
.planta-sec.pl-pin { padding-block:0; }
.pl-pin .pl-pin-env { position:sticky; top:0; height:100vh; height:100svh; overflow:hidden; display:flex; flex-direction:column; padding-top:calc(var(--topo) + clamp(10px,2.4vh,24px)); padding-bottom:clamp(14px,2.4vh,24px); }
.pl-pin .pl-grelha { flex:1; min-height:0; }
.pl-pin .pl-palco-env { height:100%; justify-content:center; }
.pl-pin .pl-palco { flex:0 1 auto; height:calc(100svh - var(--topo) - 100px); width:auto; max-width:100%; }
.pl-pin .pl-fim { opacity:0; transform:translateY(10px); pointer-events:none; visibility:hidden; transition:opacity .5s,transform .5s var(--ease),visibility .5s; }
.pl-pin .pl-fim.ver { opacity:1; transform:none; pointer-events:auto; visibility:visible; }
.pl-pin .pl-regua-env { display:block; flex:none; margin-top:clamp(8px,1.4vh,14px); }
@media (max-width:860px) {
  .pl-grelha { grid-template-columns:1fr; }
  .pl-pin .pl-pin-env { padding-bottom:calc(56px + 8px); }
  .pl-pin .pl-grelha { grid-template-columns:1fr; grid-template-rows:auto minmax(0,1fr); gap:10px; }
  .pl-pin .pl-txt h2 { font-size:1.4rem; margin-bottom:8px; }
  .pl-pin .pl-txt .etq { display:none; }
  /* no telemóvel só se vê o passo em curso */
  .pl-pin .pl-passos { border:0; min-height:62px; position:relative; }
  .pl-pin .pl-passos li { position:absolute; inset:0 0 auto; padding:0; border:0; opacity:0; grid-template-columns:30px 1fr; }
  .pl-pin .pl-passos li.on { opacity:1; }
  .pl-pin .pl-passos li::before { display:none; }
  .pl-pin .pl-passos h3 { font-size:1.06rem; margin-bottom:1px; }
  .pl-pin .pl-passos p { font-size:.86rem; }
  .pl-pin .pl-fim { position:absolute; left:50%; bottom:calc(56px + 34px); translate:-50% 0; z-index:3; width:max-content; white-space:nowrap; box-shadow:0 14px 34px rgba(0,0,0,.45); }
  .pl-pin .pl-palco { height:100%; }
  .pl-pin .pl-palco-env { min-height:0; }
  .pl-pin .pl-palco-env small { display:none; }
}
.pl-palco svg,.pl-palco svg * { stroke:none; }

/* Movimento: discreto e sempre com a mesma curva */
html.suave { scroll-behavior:auto; }
.js .rv { transform:translateY(18px); transition-duration:1.1s; }
/* títulos: as palavras sobem de dentro de uma máscara */
.pal { display:inline-block; overflow:hidden; vertical-align:top; padding-bottom:.14em; margin-bottom:-.14em; }
.pal > span { display:inline-block; transform:translateY(112%); transition:transform 1s var(--ease); transition-delay:calc(var(--i) * 34ms); }
.titulo-ver .pal > span { transform:none; }
.js .hero h1 { animation:none; }
/* parágrafos e listas chegam um pouco depois do título */
.js .frase { opacity:0; transform:translateY(12px); transition:opacity .9s .22s var(--ease),transform .9s .22s var(--ease); }
.js .frase.ver { opacity:1; transform:none; }
/* obras: a foto abre-se de baixo para cima */
.js .galeria .obra.rv { opacity:1; transform:none; clip-path:inset(100% 0 0 0); transition:clip-path 1.25s var(--ease); }
.js .galeria .obra.rv.ver { clip-path:inset(0); }
/* imagens com parallax: margem para se moverem sem mostrar as bordas */
.obra img,.sobre-foto img,.serv-foto img { scale:1.1; }
.obra:hover img { transform:scale(1.04); }
@media (prefers-reduced-motion:reduce) {
  .pal > span { transform:none; transition:none; }
  .js .frase { opacity:1; transform:none; }
  .js .galeria .obra.rv { clip-path:none; }
  .obra img,.sobre-foto img,.serv-foto img { scale:1; }
}

/* Páginas interiores */
.pag-hero { padding-top:clamp(28px,4.4vh,56px); background-image:linear-gradient(var(--grelha) 1px,transparent 1px),linear-gradient(90deg,var(--grelha) 1px,transparent 1px); background-size:40px 40px; background-position:center top; }
.pag-hero-grelha { display:grid; grid-template-columns:1.05fr 1fr; gap:clamp(32px,5vw,80px); align-items:center; }
.pag-hero-txt { padding-block:clamp(16px,4vh,56px) clamp(48px,8vh,96px); }
.pag-hero h1 { font-size:clamp(2.5rem,5vw,4.6rem); font-weight:700; font-variation-settings:"wdth" 86; line-height:1; letter-spacing:-.03em; margin-bottom:clamp(18px,3vh,28px); }
.pag-hero .lead { margin-bottom:clamp(22px,3.6vh,34px); }
.trilho { display:flex; gap:8px; margin-bottom:clamp(18px,3vh,28px); font-size:.86rem; font-weight:500; color:var(--cz); }
.trilho a:hover { color:var(--marca-esc); }
.trilho [aria-current] { color:var(--marca-esc); }
.trilho-claro { color:#A8AFB5; }
.trilho-claro [aria-current] { color:var(--marca); }
.trilho-claro a:hover { color:#fff; }
.pag-hero-foto { margin:0; align-self:end; height:clamp(340px,62vh,600px); overflow:hidden; clip-path:polygon(0 12%,100% 0,100% 100%,0 100%); animation:painel 1.2s var(--ease) both; background:var(--ink); }
.pag-hero-foto img { width:100%; height:100%; object-fit:cover; }
@media (max-width:860px) { .pag-hero-grelha { grid-template-columns:1fr; gap:0; } .pag-hero-txt { padding-bottom:32px; } .pag-hero-foto { height:clamp(240px,42vh,420px); } }

/* Blocos alternados de foto e texto */
.det { display:grid; grid-template-columns:1.1fr 1fr; gap:clamp(36px,6vw,96px); align-items:center; scroll-margin-top:110px; }
.det + .det { margin-top:var(--sp); }
.det-inv .det-foto { order:2; }
.det-foto { margin:0; overflow:hidden; clip-path:polygon(0 0,100% 0,100% calc(100% - var(--corte)),calc(100% - var(--corte)) 100%,0 100%); aspect-ratio:1.18; background:var(--bruma); }
.det-foto img { width:100%; height:100%; object-fit:cover; scale:1.1; }
.det-txt { position:relative; }
.det-txt h2 { font-size:clamp(2rem,3.6vw,3.2rem); margin-bottom:20px; padding-right:1.8em; }
.det-txt > p:not(.etq) { color:var(--cz); margin-bottom:14px; font-size:1.05rem; }
.det-txt ul { margin:24px 0 28px; border-top:1px solid var(--ln); }
.det-txt li { padding:12px 0 12px 26px; border-bottom:1px solid var(--ln); position:relative; line-height:1.4; }
.det-txt li::before { content:""; position:absolute; left:2px; top:19px; width:13px; height:8px; background:var(--marca); clip-path:polygon(0 100%,100% 0,100% 100%); }
.det-txt .serv-num { right:0; top:-.28em; }
@media (max-width:860px) { .det { grid-template-columns:1fr; gap:28px; } .det-inv .det-foto { order:0; } .det-foto { aspect-ratio:1.4; } }

/* Três colunas sobre fundo escuro */
.razoes { background:var(--ink); color:#fff; clip-path:polygon(0 clamp(28px,5vw,80px),100% 0,100% 100%,0 100%); padding-top:calc(var(--sp) + clamp(28px,5vw,80px)); }
.razoes .etq { color:var(--marca); }
.tres { display:grid; grid-template-columns:repeat(3,1fr); gap:clamp(12px,1.5vw,20px); }
.tres article { padding:clamp(26px,3vw,44px); background:var(--ink2); border-top:3px solid var(--marca); transition:background .4s; }
.tres article:hover { background:var(--ink3); }
.tres span { display:block; font-family:var(--titulo); font-size:clamp(2.6rem,4.4vw,4rem); font-weight:800; line-height:1; color:transparent; -webkit-text-stroke:1.5px var(--marca); font-variation-settings:"wdth" 80; margin-bottom:clamp(30px,4vw,60px); }
.tres h3 { font-size:clamp(1.25rem,1.9vw,1.6rem); font-variation-settings:"wdth" 90; margin-bottom:12px; }
.tres p { color:#C5CCD2; font-size:.98rem; line-height:1.55; }
.depois-escuro,.espaco-cta { height:var(--sp); }
@media (max-width:860px) { .tres { grid-template-columns:1fr; } }

/* Missão e visão */
.mv { display:grid; grid-template-columns:1fr 1fr; gap:clamp(36px,6vw,96px); }
.missao { background:var(--bruma); }
.mv h2 { font-size:clamp(1.9rem,3.2vw,2.9rem); margin-bottom:18px; }
.mv article > p:last-child { color:var(--cz); font-size:1.06rem; }
@media (max-width:760px) { .mv { grid-template-columns:1fr; } }

/* Liderança */
.lid-grelha { display:grid; grid-template-columns:1fr 1.15fr; gap:clamp(36px,6vw,96px); align-items:start; }
.lid-grelha h2 { font-size:clamp(2rem,3.6vw,3.2rem); margin-bottom:20px; }
.lid-grelha > div > p:last-child { color:var(--cz); font-size:1.06rem; }
.pessoas { border-top:2px solid var(--ink); }
.pessoas li { padding:clamp(20px,2.4vw,30px) 0; border-bottom:1px solid var(--ln); transition:padding .5s var(--ease),background .35s; }
.pessoas li:hover { padding-left:16px; background:var(--bruma); }
.pessoas small { display:block; margin-bottom:6px; color:var(--marca-esc); font-size:.84rem; font-weight:600; }
.pessoas strong { font-family:var(--titulo); font-size:clamp(1.4rem,2.5vw,2.1rem); font-weight:600; line-height:1.15; letter-spacing:-.02em; font-variation-settings:"wdth" 90; }
@media (max-width:860px) { .lid-grelha { grid-template-columns:1fr; } }

/* Contacto como página */
.contacto-pag { padding-top:clamp(36px,6vh,72px); clip-path:polygon(0 0,100% 0,100% calc(100% - clamp(28px,5vw,80px)),0 100%); padding-bottom:calc(var(--sp) + clamp(28px,5vw,80px)); }
.contacto-pag h1 { color:#fff; font-size:clamp(2.5rem,5vw,4.6rem); font-weight:700; font-variation-settings:"wdth" 86; line-height:1; letter-spacing:-.03em; margin-bottom:22px; }
.vis-grelha { display:grid; grid-template-columns:1fr 1.25fr; gap:clamp(36px,6vw,96px); align-items:center; }
.vis-grelha h2 { font-size:clamp(2rem,3.6vw,3.2rem); margin-bottom:18px; }
.vis-grelha p:not(.etq) { color:var(--cz); margin-bottom:24px; font-size:1.06rem; }
.mapa { aspect-ratio:1.5; background:var(--bruma); clip-path:polygon(0 0,100% 0,100% calc(100% - var(--corte)),calc(100% - var(--corte)) 100%,0 100%); }
.mapa iframe { width:100%; height:100%; border:0; display:block; filter:saturate(.75); }
@media (max-width:860px) { .vis-grelha { grid-template-columns:1fr; } }

/* Ligações às páginas a partir do início */
.serv-acoes { display:flex; align-items:center; gap:28px; flex:none; }
.ligacao-esc { font-size:.95rem; }
.sobre-mais { margin-top:26px; }
.rod-grelha > div > a:not(.logo) { display:block; }
@media (max-width:760px) { .ligacao-esc { display:none; } }
@media (max-width:760px) { .cta h2 { padding-right:64px; } }

/* Ícones 3D dos cartões */
.tres article { position:relative; overflow:hidden; }
.tres article::before { content:""; position:absolute; right:-40px; top:-40px; width:190px; height:190px; border-radius:50%; background:radial-gradient(closest-side,rgba(93,186,197,.2),transparent); pointer-events:none; }
.ico3d { position:relative; width:clamp(84px,8vw,112px); margin:-4px 0 clamp(22px,3vw,40px) -6px; transition:transform .7s var(--ease); transform-origin:50% 80%; }
.i3d { display:block; width:100%; height:auto; stroke:none; }
.i3d * { stroke-linecap:round; }
.tres article:hover .ico3d { transform:translateY(-6px) rotate(-4deg) scale(1.05); }

/* Início da página Sobre: a equipa ao fundo e o pintor à frente */
.sb-hero { padding-top:clamp(32px,6vh,72px); background-image:linear-gradient(var(--grelha) 1px,transparent 1px),linear-gradient(90deg,var(--grelha) 1px,transparent 1px); background-size:40px 40px; background-position:center top; }
.sb-topo { position:relative; z-index:2; max-width:min(58%,720px); padding-bottom:clamp(28px,5vh,56px); }
.sb-hero h1 { font-size:clamp(3.2rem,8.4vw,7.4rem); font-weight:700; font-variation-settings:"wdth" 82; line-height:.92; letter-spacing:-.035em; margin-bottom:clamp(18px,3vh,28px); }
.sb-topo .lead { margin:0; max-width:34em; }
.sb-cena { position:relative; }
.sb-palco { position:relative; }
.sb-equipa { margin:0; height:clamp(300px,46vh,460px); overflow:hidden; clip-path:polygon(0 0,100% 14%,100% 100%,0 100%); background:var(--ink); animation:painel 1.2s var(--ease) both; }
.sb-equipa img { width:100%; height:100%; object-fit:cover; object-position:center 42%; scale:1.05; }
.sb-pintor { position:absolute; right:clamp(-20px,-1vw,0px); bottom:0; width:min(46%,600px); height:auto; filter:drop-shadow(0 22px 34px rgba(20,23,30,.4)); animation:construtor 1.25s .15s var(--ease) both; }
.sb-f1 { left:clamp(14px,2.4vw,32px); bottom:clamp(14px,2.4vw,32px); animation-delay:.7s; }
.sb-f2 { left:clamp(190px,17vw,240px); bottom:clamp(14px,2.4vw,32px); animation-delay:.9s; }
@media (max-width:760px) {
  .sb-topo { max-width:none; padding-bottom:clamp(120px,32vw,190px); }
  .sb-equipa { height:clamp(230px,62vw,360px); clip-path:polygon(0 8%,100% 0,100% 100%,0 100%); }
  .sb-pintor { width:78%; right:-4%; bottom:42%; }
  .sb-f1 { left:12px; bottom:12px; }
  .sb-f2 { left:auto; right:12px; bottom:12px; }
}

/* Sobre em ecrãs estreitos: o pintor assenta na base da foto e as fichas ficam por baixo */
@media (max-width:760px) {
  .sb-topo { padding-bottom:clamp(96px,26vw,150px); }
  .sb-cena { display:grid; grid-template-columns:1fr 1fr; gap:8px; }
  .sb-palco { grid-column:1/-1; }
  .sb-equipa { height:clamp(250px,70vw,430px); }
  .sb-pintor { width:min(92%,520px); right:-3%; bottom:0; }
  .sb-cena .ficha { position:static; }
}

/* Ajustes de responsividade encontrados na auditoria */
.sobre-foto { overflow:hidden; }
.pl-grelha > * { min-width:0; }
.pl-pin .pl-palco { aspect-ratio:auto; width:100%; max-width:none; height:calc(100svh - var(--topo) - 100px); }
.pl-pin .pl-palco svg { width:100%; height:100%; }
.sb-f2 { left:calc(clamp(14px,2.4vw,32px) + 208px); }
@media (max-width:860px) {
  .pl-pin .pl-palco { height:100%; min-height:0; }
  .pl-pin .pl-palco-env { width:100%; }
}
@media (max-width:760px) { .sb-f2 { left:auto; } }

/* O pintor assenta na foto sem tapar a equipa */
@media (max-width:760px) {
  .sb-topo { padding-bottom:clamp(40px,11vw,72px); }
  .sb-equipa { height:clamp(190px,50vw,340px); }
  .sb-pintor { width:min(70%,440px); right:-2%; }
  .sb-equipa img { object-position:left 42%; }
}

/* Ecrãs de computador baixos: os passos ficam compactos para o botão não tocar na régua */
@media (min-width:861px) {
  .pl-pin .pl-fim { margin-bottom:clamp(16px,3vh,32px); }
}
@media (min-width:861px) and (max-height:860px) {
  .pl-pin .pl-txt h2 { font-size:clamp(1.8rem,3.2vw,2.6rem); margin-bottom:clamp(14px,2.4vh,24px); }
  .pl-pin .pl-txt .etq { margin-bottom:8px; }
  .pl-pin .pl-passos li { padding:clamp(8px,1.5vh,14px) 0; }
  .pl-pin .pl-passos h3 { margin-bottom:0; }
  .pl-pin .pl-passos p { max-height:0; opacity:0; overflow:hidden; transition:max-height .5s var(--ease),opacity .4s,margin .5s; }
  .pl-pin .pl-passos li.on p { max-height:3em; opacity:1; margin-top:2px; }
  .pl-pin .pl-fim { margin-top:clamp(14px,2.4vh,24px); }
}

/* Telemóvel: espaço reservado por baixo da planta para o botão não ficar por cima da imagem */
@media (max-width:860px) {
  .pl-pin .pl-grelha { margin-bottom:68px; }
}

/* ---------- Portfólio (páginas em PHP) ---------- */
.pf-hero, .pj-topo { padding-top:clamp(40px,7vh,88px); padding-bottom:clamp(36px,6vh,64px); background-image:linear-gradient(var(--grelha) 1px,transparent 1px),linear-gradient(90deg,var(--grelha) 1px,transparent 1px); background-size:40px 40px; }
.pf-hero h1, .pj-topo h1 { font-size:clamp(2.5rem,5.4vw,4.6rem); font-variation-settings:"wdth" 86; line-height:1; letter-spacing:-.03em; max-width:13em; margin-bottom:clamp(18px,3vh,28px); }
.pf-hero .lead { margin-bottom:0; }
.pf-filtros { display:flex; flex-wrap:wrap; gap:8px; margin-top:clamp(26px,4vh,40px); }
.pf-filtros button { min-height:44px; padding:0 18px; border:1px solid var(--ln); background:#fff; color:var(--ink); font-weight:600; font-size:.94rem; transition:background .25s,border-color .25s,color .25s; }
.pf-filtros button:hover { border-color:var(--ink); }
.pf-filtros button[aria-pressed="true"] { background:var(--ink); border-color:var(--ink); color:#fff; }
.pf-lista-sec { padding-bottom:var(--sp); }
.pf-grelha { list-style:none; margin:0; padding:0; display:grid; grid-template-columns:repeat(auto-fill,minmax(min(100%,340px),1fr)); gap:clamp(28px,3vw,44px) clamp(18px,2vw,28px); }
.pf-cartao[hidden] { display:none; }
.pf-cartao a { display:block; color:inherit; text-decoration:none; }
.pf-img { margin:0; position:relative; aspect-ratio:4/3; overflow:hidden; background:var(--bruma); clip-path:polygon(0 0,100% 0,100% calc(100% - var(--corte)),calc(100% - var(--corte)) 100%,0 100%); }
.pf-img img { width:100%; height:100%; object-fit:cover; transition:transform 1.1s var(--ease); }
.pf-cartao a:hover .pf-img img { transform:scale(1.045); }
.pf-sem { position:absolute; inset:0; background:url(/assets/img/marca.png) center/56px auto no-repeat; opacity:.35; }
.pf-img figcaption { position:absolute; left:0; top:0; padding:8px 14px; background:#fff; font-size:.82rem; font-weight:600; }
.pf-txt { position:relative; padding:18px 56px 0 0; }
.pf-txt h2 { font-size:clamp(1.3rem,1.9vw,1.6rem); font-variation-settings:"wdth" 90; }
.pf-txt p { margin:8px 0 0; color:var(--cz); font-size:.96rem; }
.pf-mais { position:absolute; right:0; top:18px; width:44px; height:44px; display:grid; place-items:center; background:var(--marca); color:var(--ink); transition:transform .45s var(--ease); }
.pf-mais svg { width:20px; height:20px; fill:none; stroke:currentColor; stroke-width:2; }
.pf-cartao a:hover .pf-mais { transform:translateX(4px); }
.pf-vazio { padding:clamp(40px,7vw,80px) clamp(24px,5vw,64px); background:var(--bruma); text-align:center; }
.pf-vazio h2 { font-size:clamp(1.6rem,3vw,2.3rem); }
.pf-vazio p { color:var(--cz); margin:12px auto 28px; max-width:30em; }
.pj-voltar { display:inline-flex; align-items:center; gap:8px; margin-bottom:clamp(20px,3vh,32px); color:var(--marca-esc); font-weight:600; text-decoration:none; }
.pj-voltar svg { width:18px; height:18px; fill:none; stroke:currentColor; stroke-width:2; transition:transform .35s var(--ease); }
.pj-voltar:hover svg { transform:translateX(-4px); }
.pj-ficha { display:flex; flex-wrap:wrap; gap:0; margin:0; border-top:1px solid var(--ln); border-bottom:1px solid var(--ln); }
.pj-ficha div { padding:14px 28px 14px 0; margin-right:28px; border-right:1px solid var(--ln); }
.pj-ficha div:last-child { border-right:0; }
.pj-ficha dt { font-size:.78rem; color:var(--cz); text-transform:uppercase; letter-spacing:.06em; }
.pj-ficha dd { margin:4px 0 0; font-weight:600; }
.pj-capa { margin:0; overflow:hidden; background:var(--bruma); clip-path:polygon(0 0,100% 0,100% calc(100% - var(--corte)),calc(100% - var(--corte)) 100%,0 100%); }
.pj-capa img { width:100%; height:auto; max-height:78vh; object-fit:cover; }
.pj-corpo { padding-block:clamp(48px,7vw,96px) var(--sp); }
.pj-desc { max-width:760px; margin-bottom:clamp(40px,6vw,72px); }
.pj-desc p:not(.etq) { font-size:clamp(1.02rem,1.3vw,1.14rem); line-height:1.65; color:var(--cz); margin:0 0 1em; }
.pj-galeria { display:grid; grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr)); gap:clamp(10px,1.2vw,16px); }
.pj-galeria .obra { aspect-ratio:4/3; height:auto; border:0; padding:0; cursor:zoom-in; }
@media (max-width:640px) {
  .pj-ficha div { flex:1 1 45%; margin-right:0; padding-right:12px; border-right:0; }
  .pf-txt { padding-right:52px; }
}
