/* ============================================================
   MAP Engenharia Estrutural — map.eng.br
   Estilo: claro e minimalista · acento amarelo construção
   ============================================================ */
:root {
  --preto: #111111;
  --grafite: #2b2b2b;
  --cinza: #6b6b6b;
  --cinza-claro: #f4f4f2;
  --borda: #e3e3e0;
  --amarelo: #ffc400;
  --amarelo-escuro: #e6b000;
  --branco: #ffffff;
  --max: 1180px;
  --fonte: "Archivo", -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;
}

* { margin: 0; padding: 0; box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  font-family: var(--fonte);
  color: var(--preto);
  background: var(--branco);
  line-height: 1.65;
  font-size: 17px;
  -webkit-font-smoothing: antialiased;
}
img { max-width: 100%; display: block; }
a { color: inherit; }

.container { max-width: var(--max); margin: 0 auto; padding: 0 24px; }
section { padding: 80px 0; }

/* ---------- tipografia ---------- */
h1, h2, h3 { font-weight: 800; line-height: 1.15; letter-spacing: -0.02em; }
h1 { font-size: clamp(2.2rem, 5vw, 3.6rem); }
h2 { font-size: clamp(1.6rem, 3.5vw, 2.4rem); margin-bottom: 24px; }
h3 { font-size: 1.25rem; margin-bottom: 10px; }
.kicker {
  display: inline-block; font-size: 0.8rem; font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.14em; color: var(--preto);
  border-bottom: 3px solid var(--amarelo); padding-bottom: 4px; margin-bottom: 18px;
}
.lead { font-size: 1.15rem; color: var(--grafite); max-width: 760px; }
p + p { margin-top: 14px; }

/* ---------- botões ---------- */
.btn {
  display: inline-block; padding: 14px 28px; font-weight: 700; font-size: 1rem;
  text-decoration: none; border: 2px solid var(--preto); cursor: pointer;
  transition: all 0.18s ease; font-family: var(--fonte);
}
.btn-primario { background: var(--amarelo); border-color: var(--amarelo); color: var(--preto); }
.btn-primario:hover { background: var(--amarelo-escuro); border-color: var(--amarelo-escuro); }
.btn-secundario { background: transparent; color: var(--preto); }
.btn-secundario:hover { background: var(--preto); color: var(--branco); }
.btn-claro { background: transparent; color: var(--branco); border-color: var(--branco); }
.btn-claro:hover { background: var(--branco); color: var(--preto); }

/* ---------- header ---------- */
header {
  position: sticky; top: 0; z-index: 100; background: rgba(255,255,255,0.96);
  backdrop-filter: blur(8px); border-bottom: 1px solid var(--borda);
}
.header-inner { display: flex; align-items: center; justify-content: space-between; padding: 14px 24px; max-width: var(--max); margin: 0 auto; }
.logo img { height: 54px; width: auto; }
nav.principal { display: flex; align-items: center; gap: 28px; }
nav.principal a { text-decoration: none; font-weight: 600; font-size: 0.95rem; color: var(--grafite); padding: 4px 0; border-bottom: 2px solid transparent; }
nav.principal a:hover, nav.principal a.ativo { color: var(--preto); border-bottom-color: var(--amarelo); }
nav.principal .btn { padding: 10px 20px; font-size: 0.9rem; }
.menu-toggle { display: none; background: none; border: none; cursor: pointer; padding: 8px; }
.menu-toggle span { display: block; width: 26px; height: 3px; background: var(--preto); margin: 5px 0; transition: 0.2s; }

/* ---------- hero ---------- */
.hero { padding: 90px 0 0; }
.hero-grid { display: grid; grid-template-columns: 1.1fr 1fr; gap: 56px; align-items: center; }
.hero h1 span { background: linear-gradient(transparent 65%, var(--amarelo) 65%); }
.hero .lead { margin: 22px 0 32px; }
.hero-ctas { display: flex; gap: 16px; flex-wrap: wrap; }
.hero-img { position: relative; }
.hero-img img { width: 100%; height: 480px; object-fit: cover; }
.hero-img::after {
  content: ""; position: absolute; bottom: -16px; left: -16px;
  width: 120px; height: 120px; background: var(--amarelo); z-index: -1;
}
.hero-selo { margin-top: 18px; padding-bottom: 64px; font-size: .9rem; color: var(--cinza); }

/* hero interno (páginas) */
.page-hero { padding: 70px 0 50px; border-bottom: 1px solid var(--borda); }
.page-hero .lead { margin-top: 18px; }
.breadcrumbs { font-size: 0.85rem; color: var(--cinza); margin-bottom: 22px; }
.breadcrumbs a { color: var(--cinza); text-decoration: none; }
.breadcrumbs a:hover { color: var(--preto); }

/* ---------- faixa de números ---------- */
.numeros { background: var(--preto); color: var(--branco); padding: 70px 0; }
.numeros h2 { color: var(--branco); }
.numeros-grid { display: grid; grid-template-columns: repeat(5, 1fr); gap: 32px; margin-top: 40px; }
.numero strong { display: block; font-size: clamp(1.5rem, 2.6vw, 2.1rem); font-weight: 800; color: var(--amarelo); letter-spacing: -0.02em; }
.numero span { font-size: 0.9rem; color: #cccccc; line-height: 1.4; display: block; margin-top: 6px; }

/* ---------- cards de serviço ---------- */
.cards { display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; margin-top: 16px; }
.card {
  border: 1px solid var(--borda); padding: 34px 30px; background: var(--branco);
  text-decoration: none; display: flex; flex-direction: column; gap: 12px;
  border-top: 4px solid var(--preto); transition: all 0.18s ease;
}
.card:hover { border-top-color: var(--amarelo); transform: translateY(-4px); box-shadow: 0 12px 32px rgba(0,0,0,0.08); }
.card .num { font-size: 0.85rem; font-weight: 700; color: var(--cinza); }
.card p { color: var(--grafite); font-size: 0.97rem; flex: 1; }
.card .link { font-weight: 700; font-size: 0.95rem; }
.card .link::after { content: " →"; color: var(--amarelo-escuro); }

/* ---------- grid de projetos ---------- */
.projetos-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; margin-top: 16px; }
.projeto-card { position: relative; overflow: hidden; text-decoration: none; background: var(--preto); }
.projeto-card img { width: 100%; height: 300px; object-fit: cover; transition: transform 0.35s ease, opacity 0.3s; }
.projeto-card:hover img { transform: scale(1.04); opacity: 0.75; }
.projeto-card figcaption {
  position: absolute; left: 0; right: 0; bottom: 0; padding: 40px 20px 18px;
  background: linear-gradient(transparent, rgba(0,0,0,0.82)); color: var(--branco);
}
.projeto-card figcaption strong { display: block; font-size: 1.05rem; }
.projeto-card figcaption span { font-size: 0.85rem; color: #d8d8d8; }
.projeto-card .area { position: absolute; top: 14px; right: 14px; background: var(--amarelo); color: var(--preto); font-weight: 700; font-size: 0.8rem; padding: 4px 10px; }
.creditos { font-size: 0.8rem; color: #c9c9c9; display: block; margin-top: 2px; }

/* filtros */
.filtros { display: flex; gap: 10px; flex-wrap: wrap; margin: 28px 0 8px; }
.filtros button {
  font-family: var(--fonte); font-weight: 600; font-size: 0.9rem; cursor: pointer;
  padding: 9px 18px; border: 1px solid var(--borda); background: var(--branco); transition: 0.15s;
}
.filtros button:hover { border-color: var(--preto); }
.filtros button.ativo { background: var(--preto); color: var(--branco); border-color: var(--preto); }

/* ---------- públicos ---------- */
.publicos { background: var(--cinza-claro); }
.publicos .cards .card { border-top-color: var(--amarelo); }

/* ---------- processo ---------- */
.processo-lista { counter-reset: passo; display: grid; grid-template-columns: repeat(5, 1fr); gap: 24px; margin-top: 36px; }
.passo { position: relative; padding-top: 64px; }
.passo::before {
  counter-increment: passo; content: counter(passo, decimal-leading-zero);
  position: absolute; top: 0; left: 0; font-size: 2.4rem; font-weight: 800;
  color: var(--branco); -webkit-text-stroke: 1.5px var(--preto); letter-spacing: -0.03em;
}
.passo::after { content: ""; position: absolute; top: 16px; left: 70px; right: 0; height: 2px; background: var(--borda); }
.passo:last-child::after { display: none; }
.passo h3 { font-size: 1.05rem; }
.passo p { font-size: 0.92rem; color: var(--grafite); }

/* ---------- listas com check ---------- */
.lista-check { list-style: none; margin-top: 16px; }
.lista-check li { padding: 10px 0 10px 34px; position: relative; border-bottom: 1px solid var(--borda); }
.lista-check li::before { content: "✓"; position: absolute; left: 0; top: 10px; font-weight: 800; color: var(--amarelo-escuro); }

/* ---------- vantagens / diferenciais ---------- */
.diferenciais { display: grid; grid-template-columns: repeat(2, 1fr); gap: 22px 40px; margin-top: 32px; }
.diferencial { border-left: 4px solid var(--amarelo); padding-left: 18px; }
.diferencial strong { display: block; font-size: 1.05rem; margin-bottom: 4px; }
.diferencial p { font-size: 0.95rem; color: var(--grafite); }

/* ---------- FAQ ---------- */
.faq details { border-bottom: 1px solid var(--borda); }
.faq summary {
  font-weight: 700; font-size: 1.05rem; padding: 20px 36px 20px 0; cursor: pointer;
  list-style: none; position: relative;
}
.faq summary::-webkit-details-marker { display: none; }
.faq summary::after { content: "+"; position: absolute; right: 4px; top: 16px; font-size: 1.5rem; font-weight: 400; color: var(--amarelo-escuro); transition: transform 0.2s; }
.faq details[open] summary::after { transform: rotate(45deg); }
.faq details p { padding: 0 0 20px; color: var(--grafite); max-width: 800px; }

/* ---------- timeline (sobre) ---------- */
.timeline { margin-top: 36px; border-left: 3px solid var(--amarelo); padding-left: 32px; display: grid; gap: 32px; }
.timeline-item { position: relative; }
.timeline-item::before { content: ""; position: absolute; left: -41px; top: 8px; width: 13px; height: 13px; background: var(--preto); border: 3px solid var(--amarelo); border-radius: 50%; }
.timeline-item strong { display: block; font-size: 1.1rem; }
.timeline-item p { color: var(--grafite); font-size: 0.97rem; }

/* ---------- unidades ---------- */
.unidades { display: grid; grid-template-columns: 1fr 1fr; gap: 28px; margin-top: 16px; }
.unidade { border: 1px solid var(--borda); padding: 30px; }
.unidade h3 { display: flex; align-items: center; gap: 10px; }
.unidade h3::before { content: ""; width: 12px; height: 12px; background: var(--amarelo); display: inline-block; }
.unidade p { color: var(--grafite); font-size: 0.97rem; }
.unidade iframe { width: 100%; height: 220px; border: 0; margin-top: 16px; filter: grayscale(1); }

/* ---------- formulários ---------- */
.faixa-form { background: var(--cinza-claro); }
.form-grid { display: grid; grid-template-columns: 1fr 1.2fr; gap: 56px; align-items: start; }
form .campo { margin-bottom: 18px; }
form label { display: block; font-weight: 600; font-size: 0.9rem; margin-bottom: 6px; }
form input, form select, form textarea {
  width: 100%; padding: 13px 14px; border: 1px solid #cfcfcb; background: var(--branco);
  font-family: var(--fonte); font-size: 1rem; color: var(--preto);
}
form input:focus, form select:focus, form textarea:focus { outline: 2px solid var(--amarelo); border-color: var(--amarelo); }
form textarea { min-height: 120px; resize: vertical; }
.form-linha { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.form-nota { font-size: 0.82rem; color: var(--cinza); margin-top: 10px; }

/* feedback de envio */
.form-ok {
  background: var(--branco); border: 2px solid var(--amarelo); padding: 36px 32px; text-align: center;
}
.form-ok strong { display: block; font-size: 1.3rem; margin-bottom: 8px; }
.form-ok p { color: var(--grafite); }
.form-erro {
  background: #fff3f0; border: 1px solid #e8a79a; color: #8a2a14;
  padding: 14px 16px; font-size: 0.92rem; margin-top: 14px;
}
.form-erro a { font-weight: 700; }

/* ---------- CTA final ---------- */
.cta-final { background: var(--preto); color: var(--branco); text-align: center; padding: 90px 0; }
.cta-final h2 { color: var(--branco); }
.cta-final p { color: #cccccc; max-width: 640px; margin: 0 auto 32px; }

/* ---------- footer ---------- */
footer { background: var(--preto); color: #d5d5d5; padding: 70px 0 30px; font-size: 0.93rem; border-top: 6px solid var(--amarelo); }
.footer-grid { display: grid; grid-template-columns: 1.3fr 1fr 1fr 1fr; gap: 44px; }
footer img.logo-f { height: 90px; width: auto; margin-bottom: 18px; }
footer h4 { color: var(--branco); font-size: 0.85rem; text-transform: uppercase; letter-spacing: 0.12em; margin-bottom: 16px; }
footer a { color: #d5d5d5; text-decoration: none; }
footer a:hover { color: var(--amarelo); }
footer ul { list-style: none; display: grid; gap: 9px; }
.footer-base { border-top: 1px solid #333; margin-top: 50px; padding-top: 24px; display: flex; justify-content: space-between; gap: 12px; flex-wrap: wrap; font-size: 0.8rem; color: #999; }

/* ---------- WhatsApp flutuante ---------- */
.whats-float {
  position: fixed; right: 22px; bottom: 22px; z-index: 99; width: 58px; height: 58px;
  background: #25d366; border-radius: 50%; display: flex; align-items: center; justify-content: center;
  box-shadow: 0 6px 20px rgba(0,0,0,0.25); transition: transform 0.15s;
}
.whats-float:hover { transform: scale(1.08); }
.whats-float svg { width: 30px; height: 30px; fill: #fff; }

/* ---------- tabela simples (créditos projeto) ---------- */
.ficha { margin-top: 10px; font-size: 0.9rem; color: var(--grafite); }
.ficha span { display: inline-block; margin-right: 18px; }
.ficha strong { color: var(--preto); }

/* ---------- responsivo ---------- */
@media (max-width: 960px) {
  section { padding: 56px 0; }
  .hero-grid, .form-grid { grid-template-columns: 1fr; gap: 36px; }
  .hero-img img { height: 340px; }
  .numeros-grid { grid-template-columns: repeat(2, 1fr); }
  .cards, .projetos-grid { grid-template-columns: 1fr 1fr; }
  .processo-lista { grid-template-columns: 1fr; gap: 30px; }
  .passo::after { display: none; }
  .footer-grid { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 680px) {
  nav.principal {
    display: none; position: absolute; top: 100%; left: 0; right: 0;
    background: var(--branco); flex-direction: column; align-items: flex-start;
    padding: 20px 24px; gap: 18px; border-bottom: 1px solid var(--borda);
  }
  nav.principal.aberto { display: flex; }
  .menu-toggle { display: block; }
  .cards, .projetos-grid, .numeros-grid, .unidades, .diferenciais, .form-linha { grid-template-columns: 1fr; }
  .footer-grid { grid-template-columns: 1fr; }
  .hero { padding-top: 56px; }
}
