:root {
  --navy: #071b2d;
  --navy-2: #0d2c48;
  --blue: #1f68a5;
  --sky: #78b9e5;
  --ice: #edf5fa;
  --paper: #f8fafc;
  --white: #ffffff;
  --ink: #122234;
  --muted: #647384;
  --line: rgba(18, 34, 52, .12);
  --shadow: 0 24px 70px rgba(7, 27, 45, .13);
  --radius: 24px;
  --container: min(1180px, calc(100% - 40px));
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; color: var(--ink); background: var(--paper); line-height: 1.6; }
a { color: inherit; text-decoration: none; }
button, a { -webkit-tap-highlight-color: transparent; }
img, video { max-width: 100%; }
.container { width: var(--container); margin-inline: auto; }
.section { padding: 112px 0; }
.skip-link { position: fixed; top: -80px; left: 16px; z-index: 9999; background: white; padding: 10px 14px; border-radius: 8px; }
.skip-link:focus { top: 16px; }

.site-header { position: fixed; inset: 0 0 auto 0; z-index: 1000; transition: .35s ease; }
.site-header.scrolled { background: rgba(248,250,252,.88); backdrop-filter: blur(18px); box-shadow: 0 1px 0 rgba(18,34,52,.08); }
.header-inner { height: 86px; display: flex; align-items: center; justify-content: space-between; }
.brand { display: inline-flex; align-items: center; gap: 12px; color: white; }
.scrolled .brand { color: var(--navy); }
.brand-mark { width: 42px; height: 42px; border: 1px solid currentColor; border-radius: 14px; display: grid; place-items: center; font-weight: 700; font-size: 20px; }
.brand-text { display: grid; line-height: 1; letter-spacing: .08em; }
.brand-text strong { font-size: 18px; }
.brand-text small { font-size: 9px; margin-top: 5px; letter-spacing: .22em; }
.main-nav { display: flex; align-items: center; gap: 30px; color: rgba(255,255,255,.86); font-size: 14px; }
.scrolled .main-nav { color: var(--ink); }
.main-nav a { transition: .25s; }
.main-nav a:hover { opacity: .72; }
.nav-cta { border: 1px solid rgba(255,255,255,.35); border-radius: 999px; padding: 11px 18px; }
.scrolled .nav-cta { border-color: var(--line); background: white; }
.menu-toggle { display: none; background: transparent; border: 0; padding: 8px; }
.menu-toggle span { width: 26px; height: 2px; display: block; margin: 5px 0; background: white; transition: .3s; }
.scrolled .menu-toggle span { background: var(--navy); }

.hero { min-height: 100svh; position: relative; display: grid; align-items: center; overflow: hidden; background: linear-gradient(120deg, var(--navy), var(--navy-2)); color: white; }
.hero-video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: .42; }
.hero-overlay { position: absolute; inset: 0; background: linear-gradient(90deg, rgba(5,21,36,.96) 0%, rgba(5,21,36,.76) 47%, rgba(5,21,36,.3) 100%), linear-gradient(0deg, rgba(5,21,36,.36), transparent 48%); }
.hero-orb { position: absolute; border-radius: 50%; filter: blur(8px); opacity: .25; }
.hero-orb-one { width: 420px; height: 420px; background: #52a9e6; right: -120px; top: 16%; }
.hero-orb-two { width: 260px; height: 260px; background: #4d88c7; left: 42%; bottom: -100px; }
.hero-content { position: relative; z-index: 2; padding-top: 80px; max-width: 860px; }
.eyebrow, .section-kicker { font-size: 12px; font-weight: 700; letter-spacing: .22em; margin: 0 0 22px; color: var(--blue); }
.hero .eyebrow { color: #a9d6f4; }
.hero h1 { margin: 0; font-size: clamp(3.1rem, 7vw, 6.8rem); line-height: .95; letter-spacing: -.055em; max-width: 1000px; }
.hero h1 span { color: #a9d6f4; }
.hero-copy { max-width: 690px; color: rgba(255,255,255,.76); font-size: clamp(1rem, 1.6vw, 1.22rem); margin: 30px 0 34px; }
.hero-actions { display: flex; flex-wrap: wrap; gap: 14px; }
.button { min-height: 52px; padding: 0 24px; border-radius: 999px; display: inline-flex; align-items: center; justify-content: center; font-weight: 650; font-size: 14px; transition: transform .25s, background .25s, color .25s; }
.button:hover { transform: translateY(-2px); }
.button-primary { background: white; color: var(--navy); }
.button-ghost { border: 1px solid rgba(255,255,255,.38); color: white; }
.scroll-hint { position: absolute; z-index: 2; bottom: 32px; left: 50%; transform: translateX(-50%); display: flex; flex-direction: column; align-items: center; gap: 10px; font-size: 11px; letter-spacing: .12em; color: rgba(255,255,255,.55); }
.scroll-hint i { width: 1px; height: 35px; background: linear-gradient(white, transparent); animation: pulse 1.8s infinite; }
@keyframes pulse { 0%,100% { opacity:.3; transform:scaleY(.7); } 50% { opacity:1; transform:scaleY(1); } }

.statement { background: white; }
.statement-grid { display: grid; grid-template-columns: .7fr 2fr; gap: 60px; align-items: start; }
.statement-content h2, .section-heading h2, .electoral-content h2, .contact-box h2 { margin: 0; font-size: clamp(2.2rem, 4vw, 4.7rem); line-height: 1.04; letter-spacing: -.045em; }
.statement-content p { max-width: 760px; margin: 30px 0 0; color: var(--muted); font-size: 1.16rem; }

.services { background: var(--paper); }
.section-heading { max-width: 760px; margin-bottom: 56px; }
.cards-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
.service-card { position: relative; min-height: 420px; padding: 34px; border-radius: var(--radius); border: 1px solid var(--line); background: rgba(255,255,255,.68); display: flex; flex-direction: column; transition: .35s ease; overflow: hidden; }
.service-card:hover { transform: translateY(-8px); box-shadow: var(--shadow); background: white; }
.service-card.featured { background: var(--navy); color: white; border-color: transparent; }
.service-card.featured p { color: rgba(255,255,255,.68); }
.card-number { position: absolute; right: 28px; top: 24px; font-size: 12px; opacity: .45; letter-spacing: .16em; }
.card-icon { width: 52px; height: 52px; border-radius: 16px; background: var(--ice); color: var(--blue); display: grid; place-items: center; margin-bottom: auto; }
.featured .card-icon { background: rgba(255,255,255,.1); color: #a9d6f4; }
.service-card h3 { font-size: 1.6rem; margin: 50px 0 14px; letter-spacing: -.025em; }
.service-card p { color: var(--muted); margin: 0; font-size: .98rem; }

.electoral { background: white; }
.electoral-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 88px; align-items: center; }
.electoral-visual { min-height: 610px; border-radius: 32px; background: linear-gradient(145deg, #0b243b, #153f62); position: relative; overflow: hidden; box-shadow: var(--shadow); }
.electoral-visual::before { content:""; position:absolute; inset:0; background: radial-gradient(circle at 70% 15%, rgba(120,185,229,.42), transparent 32%), linear-gradient(90deg, rgba(255,255,255,.05) 1px, transparent 1px), linear-gradient(rgba(255,255,255,.05) 1px, transparent 1px); background-size:auto, 40px 40px, 40px 40px; }
.visual-panel { position:absolute; background:rgba(255,255,255,.12); backdrop-filter:blur(12px); border:1px solid rgba(255,255,255,.15); border-radius:22px; }
.panel-one { width:64%; height:38%; top:18%; left:10%; }
.panel-two { width:48%; height:30%; right:8%; bottom:14%; }
.visual-line { position:absolute; height:2px; background:linear-gradient(90deg,#8fd0f4,transparent); transform-origin:left; }
.line-one { width:48%; top:37%; left:18%; transform:rotate(-12deg); }
.line-two { width:35%; bottom:27%; right:16%; transform:rotate(20deg); }
.visual-badge { position:absolute; left:34px; bottom:30px; color:white; font-size:11px; letter-spacing:.2em; }
.electoral-content > p:not(.section-kicker) { color: var(--muted); font-size: 1.08rem; margin: 26px 0; }
.clean-list { list-style: none; padding: 0; margin: 28px 0 34px; }
.clean-list li { padding: 14px 0 14px 30px; border-bottom: 1px solid var(--line); position: relative; }
.clean-list li::before { content:""; width:8px; height:8px; border-radius:50%; background:var(--blue); position:absolute; left:0; top:23px; }
.text-link { font-weight: 700; color: var(--blue); }
.text-link span { display:inline-block; transition:.25s; }
.text-link:hover span { transform:translateX(5px); }

.principles { padding-top: 0; background: white; }
.principles-grid { display:grid; grid-template-columns:repeat(3,1fr); border-top:1px solid var(--line); }
.principle { padding: 50px 34px 10px 0; }
.principle + .principle { border-left:1px solid var(--line); padding-left:34px; }
.principle strong { color: var(--blue); font-size:12px; letter-spacing:.16em; }
.principle h3 { font-size:1.35rem; margin:18px 0 8px; }
.principle p { color:var(--muted); margin:0; }

.contact { background: var(--paper); }
.contact-box { background: linear-gradient(120deg, var(--navy), #123c5e); color:white; border-radius:32px; padding:70px; display:flex; justify-content:space-between; align-items:end; gap:40px; position:relative; overflow:hidden; }
.contact-box::after { content:""; width:340px; height:340px; border-radius:50%; background:rgba(120,185,229,.15); position:absolute; right:-130px; top:-160px; }
.contact-box h2 { max-width:780px; }
.contact-box p:not(.section-kicker) { color:rgba(255,255,255,.68); margin:20px 0 0; }
.contact-phone { display:inline-flex; margin-top:20px; color:white; font-size:clamp(1.25rem, 2vw, 1.65rem); font-weight:750; letter-spacing:-.02em; position:relative; z-index:1; }
.contact-phone:hover { opacity:.78; }
.section-kicker.light { color:#a9d6f4; }
.button-light { background:white; color:var(--navy); flex:0 0 auto; position:relative; z-index:2; }

.site-footer { background:#061522; color:rgba(255,255,255,.68); padding:72px 0 26px; }
.footer-grid { display:grid; grid-template-columns:1.5fr .7fr 1fr; gap:70px; }
.brand-footer { color:white; margin-bottom:22px; }
.footer-grid p { max-width:430px; }
.footer-grid h3 { color:white; font-size:13px; letter-spacing:.14em; text-transform:uppercase; margin:0 0 22px; }
.footer-grid > div:not(:first-child) { display:flex; flex-direction:column; gap:10px; }
.footer-grid a:hover { color:white; }
.footer-bottom { border-top:1px solid rgba(255,255,255,.1); margin-top:52px; padding-top:24px; display:flex; justify-content:space-between; font-size:13px; }

.whatsapp-float { position:fixed; z-index:1200; right:22px; bottom:22px; height:58px; min-width:58px; border-radius:999px; background:#24c66a; color:white; display:flex; align-items:center; justify-content:center; gap:10px; padding:0 18px; box-shadow:0 18px 45px rgba(13,85,47,.28); font-weight:700; font-size:14px; transition:.25s; }
.whatsapp-float:hover { transform:translateY(-4px); box-shadow:0 22px 55px rgba(13,85,47,.34); }
.whatsapp-float svg { width:25px; height:25px; fill:currentColor; }

.reveal { opacity:0; transform:translateY(24px); transition:opacity .8s ease, transform .8s ease; }
.reveal.is-visible { opacity:1; transform:none; }

@media (max-width: 900px) {
  :root { --container:min(100% - 28px, 720px); }
  .section { padding:82px 0; }
  .menu-toggle { display:block; z-index:2; }
  .main-nav { position:fixed; inset:0; background:rgba(6,21,34,.98); color:white; flex-direction:column; justify-content:center; gap:26px; transform:translateX(100%); transition:.35s; font-size:1.2rem; }
  .main-nav.open { transform:none; }
  .nav-cta { border-color:rgba(255,255,255,.3)!important; background:transparent!important; }
  .menu-toggle.open span { background:white; }
  .menu-toggle.open span:nth-child(1) { transform:translateY(7px) rotate(45deg); }
  .menu-toggle.open span:nth-child(2) { opacity:0; }
  .menu-toggle.open span:nth-child(3) { transform:translateY(-7px) rotate(-45deg); }
  .statement-grid, .electoral-grid { grid-template-columns:1fr; gap:38px; }
  .cards-grid { grid-template-columns:1fr; }
  .service-card { min-height:330px; }
  .electoral-visual { min-height:460px; order:2; }
  .principles-grid { grid-template-columns:1fr; }
  .principle, .principle + .principle { padding:34px 0; border-left:0; border-bottom:1px solid var(--line); }
  .contact-box { padding:48px 30px; align-items:flex-start; flex-direction:column; }
  .footer-grid { grid-template-columns:1fr; gap:40px; }
}

@media (max-width: 560px) {
  .header-inner { height:74px; }
  .brand-mark { width:36px; height:36px; border-radius:11px; }
  .brand-text strong { font-size:16px; }
  .hero { min-height:780px; }
  .hero h1 { font-size:clamp(2.9rem, 15vw, 4.4rem); }
  .hero-copy { margin-top:24px; }
  .hero-actions { flex-direction:column; align-items:stretch; }
  .scroll-hint { display:none; }
  .statement-grid { gap:22px; }
  .section-heading { margin-bottom:34px; }
  .service-card { padding:28px; }
  .electoral-visual { min-height:390px; border-radius:24px; }
  .contact-box { border-radius:24px; }
  .footer-bottom { flex-direction:column; gap:8px; }
  .whatsapp-float { width:58px; padding:0; }
  .whatsapp-float span { display:none; }
}

@media (prefers-reduced-motion: reduce) {
  * { scroll-behavior:auto!important; animation:none!important; transition:none!important; }
  .reveal { opacity:1; transform:none; }
}

/* Identidade visual atualizada: símbolo original sobre fundo transparente. */
.brand-mark-image {
  width: 44px;
  height: 44px;
  flex: 0 0 44px;
  object-fit: contain;
  filter: drop-shadow(0 6px 13px rgba(0,0,0,.18));
}
.brand-text strong,
.brand-text small {
  color: currentColor;
}

/* Foto de Francisco Valim no lugar do quadro abstrato de especialização. */
.electoral-photo {
  display: flex;
  flex-direction: column;
  margin: 0;
  background:
    radial-gradient(circle at 74% 14%, rgba(123,175,224,.48), transparent 34%),
    linear-gradient(145deg, #0a1d3d, #153f62);
}
.electoral-photo::before {
  background:
    linear-gradient(90deg, rgba(255,255,255,.035) 1px, transparent 1px),
    linear-gradient(rgba(255,255,255,.035) 1px, transparent 1px);
  background-size: 42px 42px;
}
.electoral-photo-stage {
  position: relative;
  z-index: 1;
  flex: 1 1 auto;
  min-height: 430px;
  display: flex;
  align-items: flex-end;
  justify-content: center;
  overflow: hidden;
}
.electoral-photo-stage::after {
  content: "";
  position: absolute;
  inset: auto 0 0;
  height: 32%;
  background: linear-gradient(0deg, rgba(7,27,45,.22), transparent);
  pointer-events: none;
}
.electoral-photo img {
  position: relative;
  z-index: 1;
  width: 100%;
  height: 100%;
  object-fit: contain;
  object-position: center bottom;
  filter: drop-shadow(0 24px 38px rgba(0,0,0,.22));
}
.electoral-photo-caption {
  position: relative;
  z-index: 2;
  padding: 24px 28px 27px;
  color: white;
  background: rgba(6,21,34,.72);
  backdrop-filter: blur(14px);
  border-top: 1px solid rgba(255,255,255,.12);
}
.electoral-photo-label {
  margin: 0 0 7px;
  color: #a9d6f4;
  font-size: 11px;
  font-weight: 750;
  letter-spacing: .19em;
}
.electoral-photo-caption h3 {
  margin: 0;
  color: white;
  font-size: 1.55rem;
  letter-spacing: -.025em;
}
.electoral-photo-caption p:last-child {
  margin: 8px 0 0;
  color: rgba(255,255,255,.72);
  font-size: .96rem;
  line-height: 1.55;
}

@media (max-width: 560px) {
  .brand-mark-image {
    width: 38px;
    height: 38px;
    flex-basis: 38px;
  }
}
