/* =========================================================
   GRAVURA COLOSSAL ENGENHARIA — folha de estilo
   Paleta oficial: azul-marinho #1F2A44 · laranja #E8731C
   Neutro escolhido: areia/betão #EDE8E1
   ========================================================= */

/* ---------- 1. Fichas de cor e medidas ---------- */
:root{
  /* cores da marca */
  --azul:        #1F2A44;
  --azul-fundo:  #141C2F;
  --azul-claro:  #2B3A5C;
  --azul-linha:  #3A4A6E;

  --laranja:     #E8731C;
  --laranja-alt: #F4923F;
  --laranja-fundo:#C55E12;

  --areia:       #EDE8E1;
  --areia-clara: #F7F5F1;

  --branco:      #FFFFFF;
  --texto:       #1A1F2B;
  --texto-suave: #5A6377;
  --texto-claro: #C8CEDC;

  /* tipografia */
  /* serifa de traço robusto, não de revista; grotesca sóbria para o texto */
  --titulo: "Source Serif 4", "Iowan Old Style", Georgia, serif;
  --corpo:  "Archivo", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;

  /* medidas */
  --largura: 1180px;
  --gutter: clamp(1.25rem, 4vw, 2.5rem);
  --raio: 0px;
  --raio-g: 0px;

  /* sombras */
  /* o que separa os elementos passa a ser o filete e o ar, não a sombra */
  --filete:       rgba(31,42,68,.14);
  --filete-forte: rgba(31,42,68,.26);
  --filete-claro: rgba(255,255,255,.14);
  --sombra-s: none;
  --sombra-m: none;
  --sombra-g: none;

  --transicao: 220ms cubic-bezier(.22,.61,.36,1);
}

/* ---------- 2. Reposição ---------- */
*,*::before,*::after{ box-sizing:border-box; }
html{ scroll-behavior:smooth; scroll-padding-top:96px; -webkit-text-size-adjust:100%; }
body{
  margin:0;
  font-family:var(--corpo);
  font-size:clamp(1rem,.97rem + .18vw,1.075rem);
  line-height:1.65;
  color:var(--texto);
  background:var(--branco);
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
img,svg{ max-width:100%; display:block; }
button,input,select,textarea{ font:inherit; color:inherit; }
a{ color:var(--laranja-fundo); text-decoration-thickness:1px; text-underline-offset:3px; }

h1,h2,h3{ font-family:var(--titulo); font-weight:600; margin:0 0 .6em; text-wrap:balance; }
h1{ font-size:clamp(2.5rem,1.5rem + 4.4vw,4.6rem); line-height:1.06; letter-spacing:-.022em; }
h2{ font-size:clamp(1.9rem,1.35rem + 2.3vw,3.05rem); line-height:1.1;  letter-spacing:-.018em; }
h3{ font-size:clamp(1.15rem,1.05rem + .5vw,1.4rem);  line-height:1.24; letter-spacing:-.008em; }
h1 em,h2 em,h3 em{ font-style:italic; color:var(--laranja); }
p{ margin:0 0 1.1em; text-wrap:pretty; }
/* algarismos alinhados: alvarás, percentagens e medidas nunca dançam */
.prova dd,.linha-tempo__num,.linha-tempo__peso,.rodape__legal{ font-variant-numeric:tabular-nums; }
::selection{ background:var(--laranja); color:#fff; }

/* foco visível — acessibilidade */
:focus-visible{ outline:3px solid var(--laranja); outline-offset:3px; border-radius:2px; }

.salta-para{
  position:absolute; left:-9999px; top:0; z-index:200;
  background:var(--laranja); color:#fff; padding:.85rem 1.4rem; font-weight:600;
}
.salta-para:focus{ left:1rem; top:1rem; }

/* ---------- 3. Estruturas base ---------- */
.envolve{ width:100%; max-width:var(--largura); margin-inline:auto; padding-inline:var(--gutter); }
.envolve--estreito{ max-width:820px; }

.seccao{ padding:clamp(4rem,3rem + 6vw,7.5rem) 0; }
.seccao--areia{ background:var(--areia-clara); }
.seccao--escura{ background:var(--azul); color:var(--texto-claro); }
.seccao--escura h2,.seccao--escura h3,.seccao--escura strong{ color:var(--branco); }
.seccao--faixa{ background:var(--areia); }

.seccao__cabecalho{ max-width:680px; margin-bottom:clamp(2.5rem,2rem + 2vw,4rem); }
.seccao__intro{ font-size:1.1em; color:var(--texto-suave); margin-bottom:0; }
.seccao--escura .seccao__intro{ color:var(--texto-claro); }

.sobretitulo{
  font-size:.78rem; font-weight:600; letter-spacing:.16em; text-transform:uppercase;
  color:var(--laranja-alt); margin:0 0 1rem;
}
.sobretitulo--escuro{ color:var(--laranja-fundo); }

.nota{
  margin-top:2.5rem; padding-left:1.1rem; border-left:3px solid var(--laranja);
  color:var(--texto-suave); font-size:.96em; max-width:640px;
}

.grelha{ display:grid; gap:clamp(1.25rem,1rem + 1.2vw,2rem); }
.grelha--3{ grid-template-columns:repeat(auto-fit,minmax(280px,1fr)); }
.grelha--4{ grid-template-columns:repeat(auto-fit,minmax(250px,1fr)); }

/* ---------- 4. Botões ---------- */
.botao{
  --cor-fundo:transparent; --cor-texto:inherit; --cor-borda:currentColor;
  display:inline-flex; align-items:center; justify-content:center; gap:.5rem;
  padding:.85rem 1.6rem; border:2px solid var(--cor-borda); border-radius:var(--raio);
  background:var(--cor-fundo); color:var(--cor-texto);
  font-weight:600; font-size:.98rem; letter-spacing:.01em; text-decoration:none;
  cursor:pointer; transition:transform var(--transicao), background var(--transicao),
             box-shadow var(--transicao), border-color var(--transicao), color var(--transicao);
}
.botao--primario{ --cor-fundo:var(--laranja); --cor-texto:#fff; --cor-borda:var(--laranja); }
.botao--primario:hover{ --cor-fundo:var(--laranja-fundo); --cor-borda:var(--laranja-fundo); }
.botao--fantasma{ --cor-texto:currentColor; --cor-borda:rgba(255,255,255,.4); }
.seccao--escura .botao--fantasma:hover,.hero .botao--fantasma:hover{ --cor-fundo:rgba(255,255,255,.1); --cor-borda:#fff; }
.formulario .botao--fantasma{ --cor-borda:var(--azul-linha); --cor-texto:var(--texto-claro); }
.botao--grande{ padding:1.05rem 2.1rem; font-size:1.05rem; }
.botao--pequeno{ padding:.6rem 1.15rem; font-size:.9rem; border-width:2px; }
.botao--cheio{ width:100%; }
.botao:active{ transform:translateY(0) scale(.99); }

/* ---------- 5. Cabeçalho ---------- */
.cabecalho{
  position:fixed; inset:0 0 auto; z-index:100;
  background:rgba(31,42,68,.0); backdrop-filter:blur(0);
  transition:background var(--transicao), box-shadow var(--transicao), backdrop-filter var(--transicao);
}
.cabecalho.encolhido{
  background:rgba(31,42,68,.94);
  backdrop-filter:blur(12px); -webkit-backdrop-filter:blur(12px);
  box-shadow:inset 0 -1px 0 rgba(255,255,255,.12);
}
.cabecalho__interior{
  max-width:var(--largura); margin-inline:auto; padding:1rem var(--gutter);
  display:flex; align-items:center; justify-content:space-between; gap:1.5rem;
  transition:padding var(--transicao);
}
.cabecalho.encolhido .cabecalho__interior{ padding-block:.6rem; }

.marca{ display:flex; align-items:center; gap:.75rem; text-decoration:none; color:#fff; }
.marca__monograma{
  display:grid; place-items:center; width:44px; height:44px; flex:0 0 44px;
  background:var(--laranja); color:#fff; font-family:var(--titulo); font-weight:700;
  font-size:1.15rem; letter-spacing:.02em; border-radius:var(--raio);
  transition:transform var(--transicao);
}
.marca:hover .marca__monograma{ transform:rotate(-4deg) scale(1.05); }
.marca__texto{ display:flex; flex-direction:column; line-height:1.15; white-space:nowrap; }
.marca__texto strong{ font-family:var(--titulo); font-size:1.06rem; letter-spacing:.01em; }
.marca__texto small{ font-size:.72rem; letter-spacing:.1em; text-transform:uppercase; color:rgba(255,255,255,.66); }

.navegacao{ display:flex; align-items:center; gap:clamp(.9rem,1.6vw,1.9rem); }
.navegacao a{
  color:rgba(255,255,255,.86); text-decoration:none; font-size:.94rem; font-weight:500;
  position:relative; padding-block:.25rem; white-space:nowrap;
  transition:color var(--transicao);
}
.navegacao a:not(.botao)::after{
  content:""; position:absolute; left:0; bottom:0; width:100%; height:2px;
  background:var(--laranja); transform:scaleX(0); transform-origin:right;
  transition:transform var(--transicao);
}
.navegacao a:not(.botao):hover,.navegacao a.ativo{ color:#fff; }
.navegacao a:not(.botao):hover::after,.navegacao a.ativo::after{ transform:scaleX(1); transform-origin:left; }
.navegacao .botao{ color:#fff; }

.menu-botao{
  display:none; width:44px; height:44px; padding:10px; background:none;
  border:1px solid rgba(255,255,255,.28); border-radius:var(--raio); cursor:pointer;
}
.menu-botao span{ display:block; height:2px; background:#fff; margin:4px 0; transition:transform var(--transicao), opacity var(--transicao); }
.menu-botao[aria-expanded="true"] span:nth-child(1){ transform:translateY(6px) rotate(45deg); }
.menu-botao[aria-expanded="true"] span:nth-child(2){ opacity:0; }
.menu-botao[aria-expanded="true"] span:nth-child(3){ transform:translateY(-6px) rotate(-45deg); }

/* ---------- 6. Hero ---------- */
.hero{ position:relative; min-height:100svh; display:flex; align-items:center; color:#fff; overflow:hidden; padding:8rem 0 5rem; }
.hero__fundo{
  position:absolute; inset:0; z-index:0;
  background:
    radial-gradient(110% 80% at 88% 8%, rgba(232,115,28,.30) 0%, transparent 58%),
    radial-gradient(85% 70% at 5% 92%, rgba(43,58,92,.85) 0%, transparent 60%),
    linear-gradient(155deg,#1F2A44 0%,#141C2F 58%,#0F1626 100%);
}
/* malha técnica, como uma planta de arquitetura */
.hero__fundo::after{
  content:""; position:absolute; inset:0; opacity:.10;
  background-image:
    linear-gradient(rgba(255,255,255,.6) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,.6) 1px, transparent 1px);
  background-size:64px 64px;
  mask-image:radial-gradient(70% 60% at 50% 45%, #000 20%, transparent 78%);
  -webkit-mask-image:radial-gradient(70% 60% at 50% 45%, #000 20%, transparent 78%);
}
.hero__interior{ position:relative; z-index:1; }
.hero h1{ max-width:21ch; margin-bottom:1.5rem; }
.hero__texto{ max-width:56ch; font-size:clamp(1.05rem,1rem + .35vw,1.28rem); color:rgba(255,255,255,.85); margin-bottom:2.4rem; }
.hero__acoes{ display:flex; flex-wrap:wrap; gap:1rem; margin-bottom:clamp(3rem,2rem + 4vw,5rem); }

.provas{
  display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr));
  gap:1.75rem 2rem; margin:0; padding-top:2rem; border-top:1px solid rgba(255,255,255,.16);
  max-width:900px;
}
.prova dt{ font-size:.74rem; letter-spacing:.14em; text-transform:uppercase; color:rgba(255,255,255,.55); margin-bottom:.35rem; }
.prova dd{ margin:0; font-family:var(--titulo); font-size:1.6rem; font-weight:700; color:#fff; line-height:1.1; }
.prova dd span{ display:block; font-family:var(--corpo); font-size:.85rem; font-weight:400; color:rgba(255,255,255,.6); letter-spacing:0; }

.hero__seta{ position:absolute; left:50%; bottom:2rem; z-index:2; translate:-50% 0; width:26px; height:42px; border:2px solid rgba(255,255,255,.4); border-radius:14px; }
/* indicador estático: um ponto que salta em ciclo infinito é ruído, não informação */
.hero__seta span{ position:absolute; left:50%; top:10px; translate:-50% 0; width:4px; height:8px; background:var(--laranja); }

/* ---------- 7. Cartões de serviço ---------- */
.cartao{
  position:relative; background:var(--branco); border:1px solid var(--filete);
  padding:2.25rem 2rem;
  transition:border-color var(--transicao), background var(--transicao);
}
.cartao::before{
  content:""; position:absolute; inset:0 0 auto; height:3px;
  background:linear-gradient(90deg,var(--laranja),var(--laranja-alt));
  border-radius:var(--raio-g) var(--raio-g) 0 0;
  transform:scaleX(0); transform-origin:left; transition:transform var(--transicao);
}
.cartao:hover{ border-color:var(--filete-forte); }
.cartao:hover::before{ transform:scaleX(1); }
.cartao--destaque{ border-color:rgba(232,115,28,.45); background:#FFFBF7; }
.cartao--destaque::before{ transform:scaleX(1); }

.cartao__icone{ display:grid; place-items:center; width:52px; height:52px; margin-bottom:1.25rem; border-radius:var(--raio); background:var(--areia); color:var(--azul); }
.cartao--destaque .cartao__icone{ background:var(--laranja); color:#fff; }
.cartao__icone svg{ width:28px; height:28px; }
.cartao h3{ margin-bottom:.65rem; }
.cartao p{ color:var(--texto-suave); font-size:.97em; }

.etiqueta{
  position:absolute; top:1.25rem; right:1.25rem;
  background:var(--laranja); color:#fff; font-size:.68rem; font-weight:700;
  letter-spacing:.1em; text-transform:uppercase; padding:.25rem .6rem; border-radius:2px;
}

.lista-marcas{ list-style:none; margin:1.25rem 0 0; padding:0; font-size:.93em; }
.lista-marcas li{ position:relative; padding-left:1.4rem; margin-bottom:.55rem; color:var(--texto-suave); }
.lista-marcas li::before{
  content:""; position:absolute; left:0; top:.62em; width:7px; height:7px;
  background:var(--laranja); border-radius:1px; transform:rotate(45deg);
}

/* ---------- 8. Alvenaria (secção em destaque) ---------- */
.alvenaria{ display:grid; grid-template-columns:1fr 1fr; gap:clamp(2rem,2rem + 3vw,5rem); align-items:start; }
.alvenaria p{ color:var(--texto-claro); }
.alvenaria__pontos{ list-style:none; margin:0; padding:0; display:grid; gap:1px; background:var(--azul-linha); border:1px solid var(--azul-linha); border-radius:var(--raio-g); overflow:hidden; }
.alvenaria__pontos li{ background:var(--azul); padding:1.5rem 1.6rem; transition:background var(--transicao); }
.alvenaria__pontos li:hover{ background:var(--azul-claro); }
.alvenaria__pontos strong{ display:block; font-family:var(--titulo); font-size:1.12rem; margin-bottom:.35rem; color:#fff; }
.alvenaria__pontos span{ font-size:.94em; color:var(--texto-claro); }

/* ---------- 9. Linha do tempo ---------- */
.linha-tempo{ list-style:none; margin:0; padding:0; display:grid; gap:0; counter-reset:fase; position:relative; }
.linha-tempo li{ display:grid; grid-template-columns:auto 1fr; gap:clamp(1.25rem,3vw,2.5rem); padding:1.9rem 0; border-top:1px solid var(--filete); }
.linha-tempo li:last-child{ border-bottom:1px solid var(--filete); }
.linha-tempo__num{
  font-family:var(--titulo); font-size:clamp(2rem,1.4rem + 2vw,3.1rem); font-weight:700;
  color:var(--areia); line-height:1; transition:color var(--transicao);
}
.linha-tempo li:hover .linha-tempo__num{ color:var(--laranja); }
.linha-tempo h3{ margin-bottom:.35rem; }
.linha-tempo p{ color:var(--texto-suave); margin-bottom:.6rem; max-width:62ch; }
.linha-tempo__peso{
  display:inline-block; font-size:.78rem; font-weight:600; letter-spacing:.08em; text-transform:uppercase;
  color:var(--laranja-fundo); background:rgba(232,115,28,.10); padding:.25rem .7rem;
}

/* ---------- 10. Obras ---------- */
.obra{ margin:0; overflow:hidden; background:var(--branco); border:1px solid var(--filete); transition:border-color var(--transicao); }
.obra:hover{ border-color:var(--filete-forte); }
.obra__foto{
  aspect-ratio:4/3; background:linear-gradient(150deg,var(--azul-claro),var(--azul-fundo));
  position:relative; overflow:hidden;
}
.obra__foto::after{
  content:"GC"; position:absolute; inset:0; display:grid; place-items:center;
  font-family:var(--titulo); font-size:3.5rem; font-weight:700; color:rgba(255,255,255,.10);
}
.obra__foto::before{
  content:""; position:absolute; inset:0; opacity:.16;
  background-image:linear-gradient(rgba(255,255,255,.5) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.5) 1px,transparent 1px);
  background-size:34px 34px;
}
.obra figcaption{ padding:1.25rem 1.4rem 1.5rem; display:flex; flex-direction:column; gap:.2rem; }
.obra__tipo{ font-size:.72rem; font-weight:700; letter-spacing:.12em; text-transform:uppercase; color:var(--laranja-fundo); }
.obra figcaption strong{ font-family:var(--titulo); font-size:1.2rem; }
.obra__local{ font-size:.9rem; color:var(--texto-suave); }

/* ---------- 11. Zona ---------- */
.zona{ display:grid; grid-template-columns:1fr 1fr; gap:clamp(2rem,2rem + 3vw,4.5rem); align-items:center; }
.zona p{ color:var(--texto-suave); max-width:50ch; margin-bottom:0; }
.zona__lista{ list-style:none; margin:0; padding:0; display:grid; grid-template-columns:repeat(auto-fit,minmax(140px,1fr)); gap:.75rem; }
.zona__lista li{
  background:var(--branco); border:1px solid var(--filete);
  padding:1rem 1.1rem; font-weight:500; transition:border-color var(--transicao);
}
.zona__lista li:hover{ border-color:var(--laranja); }
.zona__lista li:first-child{ background:var(--azul); color:#fff; border-color:var(--azul); grid-column:1/-1; display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:.5rem; }
.zona__lista li:first-child span{ font-size:.78rem; letter-spacing:.1em; text-transform:uppercase; color:var(--laranja-alt); }

/* ---------- 12. Acordeão ---------- */
.acordeao{ border-top:1px solid rgba(31,42,68,.12); }
.acordeao details{ border-bottom:1px solid rgba(31,42,68,.12); }
.acordeao summary{
  list-style:none; cursor:pointer; padding:1.4rem 3rem 1.4rem 0; position:relative;
  font-family:var(--titulo); font-size:clamp(1.05rem,1rem + .35vw,1.25rem); font-weight:600;
  transition:color var(--transicao);
}
.acordeao summary::-webkit-details-marker{ display:none; }
.acordeao summary:hover{ color:var(--laranja-fundo); }
.acordeao summary::after{
  content:""; position:absolute; right:.4rem; top:50%; width:13px; height:13px;
  border-right:2px solid var(--laranja); border-bottom:2px solid var(--laranja);
  transform:translateY(-70%) rotate(45deg); transition:transform var(--transicao);
}
.acordeao details[open] summary::after{ transform:translateY(-20%) rotate(-135deg); }
.acordeao__corpo{ padding:0 2rem 1.6rem 0; color:var(--texto-suave); animation:abre 260ms ease; }
.acordeao__corpo p:last-child{ margin-bottom:0; }
@keyframes abre{ from{ opacity:0; transform:translateY(-6px) } to{ opacity:1; transform:none } }

/* ---------- 13. Orçamento e formulário ---------- */
.orcamento{ display:grid; grid-template-columns:1fr 1.1fr; gap:clamp(2.5rem,2rem + 4vw,5rem); align-items:start; }
.orcamento p{ color:var(--texto-claro); }

.contactos{ list-style:none; margin:2.5rem 0 0; padding:0; display:grid; gap:1.6rem; }
.contactos li{ display:grid; gap:.15rem; }
.contactos__rot{ font-size:.72rem; letter-spacing:.14em; text-transform:uppercase; color:rgba(255,255,255,.5); }
.contactos a{ color:#fff; font-size:1.12rem; font-weight:500; text-decoration:none; border-bottom:1px solid rgba(232,115,28,.6); width:fit-content; transition:border-color var(--transicao); }
.contactos a:hover{ border-color:var(--laranja); }
.contactos small{ font-size:.8rem; color:rgba(255,255,255,.45); }
.contactos address{ font-style:normal; color:var(--texto-claro); line-height:1.5; }

.formulario{
  background:rgba(255,255,255,.045); border:1px solid var(--azul-linha);
  border-radius:var(--raio-g); padding:clamp(1.5rem,1.2rem + 1.6vw,2.5rem);
  display:grid; gap:1.15rem;
}
.campo{ display:grid; gap:.4rem; }
.campo-duplo{ display:grid; grid-template-columns:1fr 1fr; gap:1.15rem; }
.campo label{ font-size:.85rem; font-weight:600; letter-spacing:.03em; color:var(--texto-claro); }
.campo label span{ color:var(--laranja-alt); }
.campo input,.campo select,.campo textarea{
  width:100%; padding:.8rem .95rem; background:rgba(255,255,255,.06);
  border:1px solid var(--azul-linha); border-radius:var(--raio); color:#fff;
  transition:border-color var(--transicao), background var(--transicao), box-shadow var(--transicao);
}
.campo textarea{ resize:vertical; min-height:96px; }
.campo input::placeholder,.campo textarea::placeholder{ color:rgba(255,255,255,.35); }
.campo input:hover,.campo select:hover,.campo textarea:hover{ border-color:rgba(255,255,255,.35); }
.campo input:focus,.campo select:focus,.campo textarea:focus{
  outline:none; border-color:var(--laranja); background:rgba(255,255,255,.09);
  box-shadow:0 0 0 3px rgba(232,115,28,.20);
}
.campo select{ appearance:none; cursor:pointer;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='9' viewBox='0 0 14 9'%3E%3Cpath d='M1 1l6 6 6-6' fill='none' stroke='%23E8731C' stroke-width='2'/%3E%3C/svg%3E");
  background-repeat:no-repeat; background-position:right 1rem center; padding-right:2.6rem; }
.campo select option{ background:var(--azul-fundo); color:#fff; }

.campo.invalido input,.campo.invalido select{ border-color:#FF8A6B; box-shadow:0 0 0 3px rgba(255,138,107,.18); }
.erro{ color:#FFB0A0; font-size:.82rem; min-height:1em; }

.consentimento{ display:flex; gap:.7rem; align-items:flex-start; font-size:.88rem; color:var(--texto-claro); cursor:pointer; }
.consentimento input{ margin-top:.25rem; width:18px; height:18px; flex:0 0 18px; accent-color:var(--laranja); cursor:pointer; }
.consentimento a{ color:var(--laranja-alt); }

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

.formulario__acoes{ display:grid; gap:.75rem; margin-top:.4rem; }
.formulario__nota{ margin:0; min-height:1.4em; font-size:.88rem; color:var(--laranja-alt); }
.formulario__nota.sucesso{ color:#8FE3B8; }

/* ---------- 14. Rodapé ---------- */
.rodape{ background:var(--azul-fundo); color:var(--texto-claro); padding-top:clamp(3rem,2.5rem + 3vw,5rem); }
.rodape__interior{ display:grid; grid-template-columns:1.6fr 1fr 1fr 1.2fr; gap:2.5rem; padding-bottom:3rem; }
.marca__monograma--claro{ margin-bottom:1rem; }
.rodape__marca p{ margin:0 0 .5rem; color:#fff; }
.rodape__legal{ font-size:.85rem; color:rgba(255,255,255,.55) !important; line-height:1.7; }
.rodape__coluna{ display:flex; flex-direction:column; gap:.6rem; }
.rodape__coluna h2{ font-family:var(--corpo); font-size:.75rem; font-weight:700; letter-spacing:.14em; text-transform:uppercase; color:var(--laranja-alt); margin:0 0 .4rem; }
.rodape__coluna a{ color:rgba(255,255,255,.72); text-decoration:none; font-size:.94rem; width:fit-content; transition:color var(--transicao); }
.rodape__coluna a:hover{ color:#fff; }
.rodape__base{
  display:flex; flex-wrap:wrap; justify-content:space-between; gap:.5rem 2rem;
  padding-block:1.5rem; border-top:1px solid rgba(255,255,255,.10);
  font-size:.83rem; color:rgba(255,255,255,.45);
}
.rodape__base p{ margin:0; }

/* ---------- 15. WhatsApp flutuante ---------- */
.whatsapp-flutuante{
  position:fixed; right:clamp(1rem,3vw,1.75rem); bottom:clamp(1rem,3vw,1.75rem); z-index:90;
  width:56px; height:56px; display:grid; place-items:center; border-radius:50%;
  background:#25D366; color:#fff; box-shadow:0 2px 10px rgba(20,28,47,.22);
  transition:transform var(--transicao);
}
.whatsapp-flutuante svg{ width:28px; height:28px; }
.whatsapp-flutuante:hover{ transform:scale(1.06); }

/* ---------- 15a. Valores por m² ---------- */
.gamas{ align-items:stretch; }
.gama{
  position:relative; display:flex; flex-direction:column;
  background:var(--branco); border:1px solid var(--filete);
  transition:border-color var(--transicao);
}
.gama:hover{ border-color:var(--filete-forte); }
.gama--destaque{ border-color:rgba(232,115,28,.45); }

/* faixa de topo escura, como no cartaz */
.gama__topo{ background:var(--azul); color:#fff; padding:1.1rem 1.5rem 1.25rem; }
.gama--destaque .gama__topo{ background:var(--laranja); }
.gama__tipo{
  margin:0 0 .2rem; font-size:.68rem; font-weight:600; letter-spacing:.16em;
  text-transform:uppercase; color:rgba(255,255,255,.72);
}
.gama__topo h3{ margin:0; color:#fff; font-size:1.15rem; line-height:1.2; }
.gama--destaque .gama__tipo{ color:rgba(255,255,255,.85); }

.gama__preco{
  margin:0; padding:1.75rem 1.5rem 1.5rem;
  display:flex; align-items:baseline; gap:.3rem;
  border-bottom:1px solid var(--filete);
}
.gama__num{
  font-family:var(--titulo); font-weight:600; letter-spacing:-.025em;
  font-size:clamp(2.4rem,1.9rem + 2.2vw,3.4rem); line-height:1;
  font-variant-numeric:tabular-nums; color:var(--azul);
}
.gama--destaque .gama__num{ color:var(--laranja-fundo); }
.gama__un{ font-size:1rem; font-weight:600; color:var(--texto-suave); }

.gama__lema{ margin:1.5rem 1.5rem .5rem; font-weight:600; font-size:1rem; }
.gama__texto{ margin:0 1.5rem 1.5rem; font-size:.93rem; color:var(--texto-suave); }

.gama__ideal{
  margin:auto 1.5rem 1.5rem; padding:1rem 1.15rem;
  background:var(--areia-clara); border-left:2px solid var(--laranja);
}
.gama__ideal-rot{
  margin:0 0 .3rem; font-size:.68rem; font-weight:700; letter-spacing:.14em;
  text-transform:uppercase; color:var(--laranja-fundo);
}
.gama__ideal p:last-child{ margin:0; font-size:.9rem; color:var(--texto-suave); }

/* rodapé da secção */
.valores__pe{
  margin-top:clamp(2rem,2rem + 2vw,3rem); padding-top:2rem;
  border-top:1px solid var(--filete);
  display:grid; grid-template-columns:auto minmax(0,1fr); gap:clamp(1.5rem,4vw,3.5rem); align-items:start;
}
.valores__lema{
  margin:0; font-family:var(--titulo); font-weight:600;
  font-size:clamp(1.25rem,1.1rem + .8vw,1.7rem); line-height:1.2; letter-spacing:-.015em;
}
.valores__lema em{ display:block; font-style:italic; color:var(--laranja); }
.valores__nota{ margin:0 0 1rem; font-size:.92rem; color:var(--texto-suave); max-width:62ch; }
.valores__seguros{
  margin:0; padding-left:1rem; border-left:2px solid var(--laranja);
  font-size:.92rem; color:var(--texto-suave); max-width:62ch;
}
.valores__seguros strong{ color:var(--texto); }

@media (max-width:820px){
  .valores__pe{ grid-template-columns:1fr; }
}

/* ---------- 15b. Estimador de orçamento ---------- */
.estimador{
  display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);
  gap:clamp(2rem,2rem + 3vw,4rem); align-items:start;
}
.estimador__form{
  background:var(--branco); border:1px solid var(--filete);
  padding:clamp(1.5rem,1.2rem + 1.6vw,2.25rem); display:grid; gap:1.15rem;
}

/* o formulário vive em fundo claro: os campos herdados são do formulário escuro */
.estimador .campo label{ color:var(--texto); }
.estimador .campo label small{ font-weight:400; color:var(--texto-suave); }
.estimador .campo input,.estimador .campo select,.estimador .campo textarea{
  background:var(--areia-clara); border-color:rgba(31,42,68,.18); color:var(--texto);
}
.estimador .campo input::placeholder,.estimador .campo textarea::placeholder{ color:rgba(26,31,43,.38); }
.estimador .campo input:hover,.estimador .campo select:hover,.estimador .campo textarea:hover{ border-color:rgba(31,42,68,.34); }
.estimador .campo input:focus,.estimador .campo select:focus,.estimador .campo textarea:focus{
  background:var(--branco); border-color:var(--laranja); box-shadow:0 0 0 3px rgba(232,115,28,.18);
}
.estimador .campo select option{ background:var(--branco); color:var(--texto); }
.estimador .consentimento{ color:var(--texto-suave); }
.estimador .consentimento a{ color:var(--laranja-fundo); }

/* zona de largar o PDF */
.largar{
  border:1px dashed rgba(31,42,68,.30); background:var(--areia-clara);
  padding:2rem 1.5rem; text-align:center; transition:border-color var(--transicao), background var(--transicao);
}
.largar--activa{ border-color:var(--laranja); background:rgba(232,115,28,.06); }
.largar__icone{ width:30px; height:30px; margin:0 auto .75rem; color:var(--laranja-fundo); }
.largar__titulo{ margin:0 0 .3rem; font-weight:600; }
.largar__nota{ margin:0; font-size:.86rem; color:var(--texto-suave); }
.largar__botao{
  background:none; border:0; padding:0; cursor:pointer; font:inherit; font-size:inherit;
  color:var(--laranja-fundo); font-weight:600; text-decoration:underline; text-underline-offset:3px;
}
.largar__escolhido{
  margin:.9rem 0 0; padding-top:.9rem; border-top:1px solid var(--filete);
  font-size:.88rem; font-weight:600; color:var(--azul); word-break:break-all;
}

.campo--gama[hidden]{ display:none; }
.campo__ajuda{ font-size:.82rem; color:var(--texto-suave); }
.campo__ajuda a{ color:var(--laranja-fundo); }

.estimador__aparte{
  margin:0; padding-left:1rem; border-left:2px solid var(--laranja);
  font-size:.9rem; color:var(--texto-suave);
}
.estimador__estado{ margin:0; min-height:1.4em; font-size:.88rem; color:var(--texto-suave); }
.estimador__estado.mau{ color:#B3341B; font-weight:500; }

/* coluna de apoio — cede o lugar ao resultado quando ele chega */
.estimador__lado h3{ margin:0 0 .9rem; font-size:1.05rem; }
.estimador__lado h3 + *{ margin-bottom:2rem; }
.estimador__lado > *:last-child{ margin-bottom:0; }
.passos{ list-style:none; margin:0; padding:0; border-top:1px solid var(--filete); }
.passos li{
  display:grid; grid-template-columns:auto minmax(0,1fr); gap:1.1rem;
  padding:1.1rem 0; border-bottom:1px solid var(--filete);
}
.passos__num{ font-variant-numeric:tabular-nums; font-weight:600; font-size:.8rem; letter-spacing:.1em; color:var(--laranja-fundo); padding-top:.15rem; }
.passos strong{ display:block; margin-bottom:.2rem; }
.passos p{ margin:0; font-size:.9rem; color:var(--texto-suave); }
.lista-marcas--fora li::before{ background:var(--texto-suave); }

/* resultado */
.estimador__saida:not(.tem-resultado){ display:none; }
.resultado{ background:var(--azul); color:var(--texto-claro); padding:clamp(1.5rem,1.2rem + 1.6vw,2.25rem); }
/* a declaração de não-vinculação tem de se ver, não de se esconder */
.consentimento--aviso{
  padding:.9rem 1.1rem; background:rgba(232,115,28,.07);
  border-left:2px solid var(--laranja); align-items:flex-start;
}
.consentimento--aviso span{ font-size:.86rem; line-height:1.55; }
.consentimento--aviso strong{ color:var(--texto); }

.resultado__selo{
  display:inline-block; margin:0 0 1rem; padding:.3rem .7rem;
  background:rgba(255,255,255,.10); border-left:2px solid var(--laranja-alt);
  font-size:.72rem; font-weight:600; letter-spacing:.1em; text-transform:uppercase;
  color:var(--laranja-alt);
}
.resultado__parcela{ color:rgba(255,255,255,.55) !important; font-size:.85rem; }
.resultado__legal strong{ color:rgba(255,255,255,.85); }

.resultado__rotulo{
  margin:0 0 .75rem; font-size:.72rem; font-weight:600; letter-spacing:.14em;
  text-transform:uppercase; color:var(--laranja-alt);
}
.resultado__valor{
  margin:0 0 .4rem; font-family:var(--titulo); font-weight:600; color:#fff;
  font-size:clamp(1.7rem,1.2rem + 2vw,2.6rem); line-height:1.1; letter-spacing:-.02em;
  font-variant-numeric:tabular-nums;
}
.resultado__valor span{ font-family:var(--corpo); font-size:.5em; font-weight:400; color:var(--texto-claro); padding:0 .25em; }
.resultado__nota{ margin:0 0 1.75rem; font-size:.85rem; color:rgba(255,255,255,.55); }

.resultado__grelha{ margin:0 0 1.75rem; border-top:1px solid var(--azul-linha); }
.resultado__linha{
  display:flex; justify-content:space-between; gap:1rem; flex-wrap:wrap;
  padding:.85rem 0; border-bottom:1px solid var(--azul-linha);
}
.resultado__linha dt{ font-size:.9rem; color:var(--texto-claro); }
.resultado__linha dt small{ display:block; font-size:.78rem; color:rgba(255,255,255,.45); }
.resultado__linha dd{ margin:0; font-weight:600; color:#fff; font-variant-numeric:tabular-nums; white-space:nowrap; }

.resultado__titulo{ margin:2rem 0 .9rem; font-size:1.05rem; color:#fff; }
.resultado__resumo{ color:var(--texto-claro); font-size:.95rem; }

.resultado__fases{ list-style:none; margin:0; padding:0; border-top:1px solid var(--azul-linha); }
.resultado__fases li{
  display:grid; grid-template-columns:auto auto 1fr; gap:1rem; align-items:baseline;
  padding:.7rem 0; border-bottom:1px solid var(--azul-linha); font-size:.92rem;
}
.resultado__fase{ font-variant-numeric:tabular-nums; color:rgba(255,255,255,.55); font-size:.8rem; letter-spacing:.1em; text-transform:uppercase; }
.resultado__peso{ font-weight:600; color:var(--laranja-alt); font-variant-numeric:tabular-nums; }
.resultado__parcela{ text-align:right; font-variant-numeric:tabular-nums; color:#fff; }

.resultado__tabela{ width:100%; border-collapse:collapse; font-size:.9rem; }
.resultado__tabela th{
  text-align:left; padding:.6rem .7rem .6rem 0; border-bottom:1px solid var(--azul-linha);
  font-size:.72rem; letter-spacing:.12em; text-transform:uppercase; color:rgba(255,255,255,.55); font-weight:600;
}
.resultado__tabela td{ padding:.7rem .7rem .7rem 0; border-bottom:1px solid var(--azul-linha); vertical-align:top; }
.resultado__tabela td.num{ text-align:right; font-variant-numeric:tabular-nums; color:var(--laranja-alt); font-weight:600; white-space:nowrap; }
.resultado__tabela strong{ color:#fff; }

.resultado__lacunas{ list-style:none; margin:0; padding:0; display:grid; gap:.9rem; font-size:.92rem; }
.resultado__lacunas strong{ color:#fff; }
.grav{
  display:inline-block; margin-right:.5rem; padding:.15rem .5rem;
  font-size:.68rem; font-weight:700; letter-spacing:.1em; text-transform:uppercase;
}
.grav--crítica,.grav--critica{ background:rgba(255,138,107,.16); color:#FFB0A0; }
.grav--relevante{ background:rgba(232,115,28,.16); color:var(--laranja-alt); }
.grav--complementar{ background:rgba(255,255,255,.08); color:rgba(255,255,255,.6); }

.resultado__aviso{
  margin:1.5rem 0 0; padding:.9rem 1.1rem;
  background:rgba(255,138,107,.10); border-left:2px solid #FF8A6B;
  font-size:.88rem; color:#FFC7BB;
}
.resultado__aviso--alvara{
  background:rgba(232,115,28,.12); border-left-color:var(--laranja-alt); color:#FFD9B8;
}
.resultado__legal{
  margin:2rem 0 1.5rem; padding-top:1.25rem; border-top:1px solid var(--azul-linha);
  font-size:.82rem; color:rgba(255,255,255,.55);
}

/* ---------- 15c. Consentimento RGPD ---------- */
.consento{
  position:fixed; inset:auto 0 0 0; z-index:150;
  padding:clamp(.75rem,2vw,1.25rem);
  transform:translateY(110%); transition:transform 380ms cubic-bezier(.22,.61,.36,1);
}
.consento--visivel{ transform:none; }
.consento__caixa{
  max-width:var(--largura); margin-inline:auto;
  background:var(--azul-fundo); color:var(--texto-claro);
  border:1px solid var(--azul-linha);
  padding:clamp(1.1rem,1rem + 1vw,1.75rem);
  display:grid; gap:1.1rem;
}
.consento__texto h2{ margin:0 0 .5rem; font-size:1.15rem; color:#fff; }
.consento__texto p{ margin:0; font-size:.9rem; line-height:1.6; max-width:78ch; }
.consento__texto a{ color:var(--laranja-alt); }

.consento__opcoes{ display:grid; gap:.85rem; padding:1.1rem 0; border-block:1px solid var(--azul-linha); }
/* um display explícito vence o [hidden] por omissão — é preciso repô-lo */
.consento__opcoes[hidden]{ display:none; }
.consento__opcao{ display:grid; grid-template-columns:auto minmax(0,1fr); gap:.75rem; align-items:start; cursor:pointer; }
.consento__opcao input{ margin-top:.3rem; width:17px; height:17px; flex:0 0 17px; accent-color:var(--laranja); cursor:pointer; }
.consento__opcao input:disabled{ cursor:default; opacity:.55; }
.consento__opcao strong{ display:block; color:#fff; font-size:.92rem; font-weight:600; }
.consento__opcao strong em{ font-style:normal; font-weight:400; color:rgba(255,255,255,.5); }
.consento__opcao small{ display:block; margin-top:.2rem; font-size:.85rem; line-height:1.55; color:rgba(255,255,255,.62); }

/* rejeitar tem o mesmo peso visual que aceitar — sem truques de desenho */
.consento__accoes{ display:flex; flex-wrap:wrap; gap:.6rem; }
.consento__accoes .botao{ flex:1 1 auto; min-width:150px; }
.consento .botao--fantasma{ --cor-borda:rgba(255,255,255,.34); --cor-texto:#fff; }
.consento .botao--fantasma:hover{ --cor-fundo:rgba(255,255,255,.10); --cor-borda:#fff; }

@media (max-width:560px){
  .consento__accoes .botao{ flex:1 1 100%; }
}

/* ---------- 16. Animação de entrada ---------- */
.revelar{ opacity:0; transform:translateY(12px); transition:opacity 560ms ease, transform 560ms cubic-bezier(.22,.61,.36,1); }
.revelar.visivel{ opacity:1; transform:none; }

/* ---------- 17. Responsivo ---------- */
@media (max-width:960px){
  .alvenaria,.zona,.orcamento,.estimador{ grid-template-columns:1fr; }
  .rodape__interior{ grid-template-columns:1fr 1fr; }
}
@media (max-width:980px){
  .menu-botao{ display:block; }
  .cabecalho{ background:rgba(31,42,68,.94); backdrop-filter:blur(12px); -webkit-backdrop-filter:blur(12px); }
  .navegacao{
    position:fixed; inset:72px 0 auto; flex-direction:column; align-items:stretch; gap:0;
    background:var(--azul-fundo); padding:1rem var(--gutter) 2rem;
    border-top:1px solid rgba(255,255,255,.1);
    max-height:0; overflow:hidden; opacity:0; visibility:hidden;
    transition:max-height 320ms ease, opacity 220ms ease, visibility 220ms;
  }
  .navegacao.aberta{ max-height:75vh; overflow-y:auto; opacity:1; visibility:visible; }
  .navegacao a{ padding:.95rem 0; border-bottom:1px solid rgba(255,255,255,.08); font-size:1.05rem; }
  .navegacao a:not(.botao)::after{ display:none; }
  .navegacao .botao{ margin-top:1.25rem; justify-content:center; padding-block:.9rem; border-bottom:none; }
}
@media (max-width:820px){
  .hero{ min-height:auto; padding-top:7rem; }
  .hero__seta{ display:none; }
}
@media (max-width:560px){
  .campo-duplo{ grid-template-columns:1fr; }
  .rodape__interior{ grid-template-columns:1fr; gap:2rem; }
  .hero__acoes .botao{ width:100%; }
  .linha-tempo li{ grid-template-columns:1fr; gap:.5rem; }
}

/* ---------- 18. Preferências do utilizador ---------- */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{ animation-duration:.01ms !important; animation-iteration-count:1 !important; transition-duration:.01ms !important; }
  html{ scroll-behavior:auto; }
  .revelar{ opacity:1; transform:none; }
}

@media print{
  .cabecalho,.whatsapp-flutuante,.hero__seta,.formulario__acoes{ display:none !important; }
  body{ color:#000; background:#fff; }
  .seccao--escura,.hero{ background:#fff !important; color:#000 !important; }
  .revelar{ opacity:1 !important; transform:none !important; }
}
