/* =====================================================================
   FILIPE SANTOS — CORRETOR DE IMÓVEIS
   Estilos do site. Cores e espaçamentos centralizados em :root
   ===================================================================== */

:root{
  /* ---- cores ---- */
  --bg:          #08090A;
  --bg-soft:     #0C0E10;
  --bg-card:     rgba(255,255,255,.038);
  --bg-card-2:   rgba(255,255,255,.015);
  --line:        rgba(255,255,255,.085);
  --line-strong: rgba(255,255,255,.16);

  --text:        #F2F2F0;
  --muted:       rgba(242,242,240,.70);
  --muted-2:     rgba(242,242,240,.55);

  --accent:      #D7C9B4;          /* toque quente, usado com parcimônia */
  --wa:          #2FD46F;          /* verde de ação (WhatsApp) */
  --wa-2:        #1CB55B;

  /* ---- tipografia ---- */
  --font-display: "Poppins", system-ui, -apple-system, "Segoe UI", sans-serif;
  --font-text:    "DM Sans", system-ui, -apple-system, "Segoe UI", sans-serif;
  --ls-tight:     -.06em;

  /* ---- layout ---- */
  --maxw:   1140px;
  --pad:    clamp(20px, 5vw, 40px);
  --r-sm:   14px;
  --r:      20px;
  --r-lg:   28px;

  /* ---- movimento ---- */
  --ease: cubic-bezier(.22,.61,.36,1);
  --ease-out: cubic-bezier(.16,1,.3,1);

  /* ---- imagem da hero (o arquivo em si é setado via JS, ver main.js) ---- */
  /* enquadramento da foto da hero: ex. "center 30%", "70% center" */
  --hero-pos: 72% 26%;
}

/* ---------------------------------------------------------------- base */
*,*::before,*::after{ box-sizing:border-box; }

html{ scroll-behavior:smooth; -webkit-text-size-adjust:100%; }

body{
  margin:0;
  background:var(--bg);
  color:var(--text);
  font-family:var(--font-text);
  font-size:16px;
  line-height:1.65;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}

img{ max-width:100%; display:block; }
a{ color:inherit; text-decoration:none; }
ul{ margin:0; padding:0; list-style:none; }
h1,h2,h3{ font-family:var(--font-display); font-weight:500; margin:0; }
p{ margin:0; }

::selection{ background:var(--accent); color:#0b0b0b; }

:focus-visible{
  outline:2px solid var(--accent);
  outline-offset:3px;
  border-radius:6px;
}

.container{
  width:100%;
  max-width:var(--maxw);
  margin-inline:auto;
  padding-inline:var(--pad);
}

/* ---------------------------------------------------------- tipografia */
.h2{
  font-size:clamp(1.9rem, 4.4vw, 3.1rem);
  line-height:1.04;
  letter-spacing:var(--ls-tight);
  font-weight:500;
}

.eyebrow{
  font-family:var(--font-text);
  font-size:.72rem;
  letter-spacing:.18em;
  text-transform:uppercase;
  color:var(--muted-2);
  margin-bottom:18px;
}

.section__sub{
  color:var(--muted);
  font-size:1.02rem;
  max-width:52ch;
  margin-top:20px;
}

/* -------------------------------------------------------------- botões */
.btn{
  --y:0px;
  position:relative;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:10px;
  font-family:var(--font-display);
  font-weight:500;
  font-size:.95rem;
  letter-spacing:-.02em;
  padding:16px 26px;
  border-radius:100px;
  border:1px solid transparent;
  cursor:pointer;
  white-space:nowrap;
  transform:translateY(var(--y));
  transition:transform .4s var(--ease-out), box-shadow .4s var(--ease-out),
             background-color .3s var(--ease), border-color .3s var(--ease),
             color .3s var(--ease);
}

.btn__arrow{
  display:inline-block;
  transition:transform .4s var(--ease-out);
  font-family:var(--font-text);
}
.btn:hover .btn__arrow{ transform:translateX(4px); }

.btn--primary{
  background:linear-gradient(180deg, var(--wa), var(--wa-2));
  color:#042213;
  box-shadow:0 10px 30px -12px rgba(47,212,111,.65),
             inset 0 1px 0 rgba(255,255,255,.35);
}
.btn--primary:hover{
  --y:-2px;
  box-shadow:0 20px 44px -14px rgba(47,212,111,.75),
             inset 0 1px 0 rgba(255,255,255,.45);
}
.btn--primary:active{ --y:0px; }

.btn--ghost{
  background:rgba(255,255,255,.03);
  border-color:var(--line);
  color:var(--text);
  backdrop-filter:blur(6px);
}
.btn--ghost:hover{
  --y:-2px;
  background:rgba(255,255,255,.07);
  border-color:var(--line-strong);
}

.btn--sm{ padding:11px 18px; font-size:.84rem; }
.btn--lg{ padding:19px 34px; font-size:1.02rem; }

.ico{ width:18px; height:18px; flex:none; }
.ico--wa{ fill:currentColor; }
.ico--line{ fill:none; stroke:currentColor; stroke-width:1.5; stroke-linecap:round; stroke-linejoin:round; }

.link-inline{
  display:inline-flex;
  align-items:center;
  gap:8px;
  margin-top:26px;
  font-family:var(--font-display);
  font-size:.92rem;
  letter-spacing:-.02em;
  color:var(--text);
  border-bottom:1px solid var(--line-strong);
  padding-bottom:4px;
  transition:color .3s var(--ease), border-color .3s var(--ease);
}
.link-inline:hover{ color:var(--wa); border-color:var(--wa); }
.link-inline:hover .btn__arrow{ transform:translateX(4px); }

/* -------------------------------------------------------------- topbar */
.topbar{
  position:fixed;
  inset:0 0 auto 0;
  z-index:60;
  padding:14px 0;
  transform:translateY(-110%);
  opacity:0;
  transition:transform .55s var(--ease-out), opacity .4s var(--ease),
             background-color .4s var(--ease), backdrop-filter .4s var(--ease);
}
.topbar.is-visible{
  transform:none;
  opacity:1;
  background:rgba(8,9,10,.72);
  backdrop-filter:blur(16px) saturate(140%);
  border-bottom:1px solid var(--line);
}
.topbar__inner{
  width:100%; max-width:var(--maxw);
  margin-inline:auto; padding-inline:var(--pad);
  display:flex; align-items:center; justify-content:space-between; gap:16px;
}
.brand{ display:flex; align-items:center; gap:12px; }
.brand__logo{
  height:30px;
  width:auto;
  display:block;
}

/* ---------------------------------------------------------------- hero */
.hero{
  position:relative;
  min-height:100svh;
  display:flex;
  align-items:flex-end;
  padding:140px 0 clamp(48px, 9vh, 96px);
  overflow:hidden;
  isolation:isolate;
}

/* camada da imagem — substituída pela foto definitiva em assets/img/hero.jpg */
.hero__bg{
  position:absolute; inset:-6% -2% -2% -2%;
  z-index:-3;
  background-color:#0A0B0D;
  background-image:
    radial-gradient(120% 80% at 72% 18%, rgba(215,201,180,.16), transparent 55%),
    radial-gradient(90% 70% at 20% 85%, rgba(40,70,90,.30), transparent 60%),
    radial-gradient(60% 50% at 50% 0%, rgba(255,255,255,.07), transparent 70%),
    linear-gradient(180deg, #101316 0%, #08090A 100%);
  background-size:cover;
  background-position:var(--hero-pos);
  opacity:0;
  animation:heroBgIn 1.6s var(--ease-out) forwards;
  will-change:transform;
}
/* --py é atualizado pelo scroll (parallax discreto) */
@keyframes heroBgIn{
  from{ opacity:0; transform:scale(1.10) translate3d(0, var(--py, 0px), 0); }
  to  { opacity:1; transform:scale(1.03) translate3d(0, var(--py, 0px), 0); }
}

/* véu para garantir legibilidade sobre a foto */
.hero__veil{
  position:absolute; inset:0; z-index:-2;
  background:
    linear-gradient(180deg, rgba(8,9,10,.32) 0%, rgba(8,9,10,.06) 26%, rgba(8,9,10,.18) 50%, rgba(8,9,10,.80) 78%, var(--bg) 100%),
    linear-gradient(90deg, rgba(8,9,10,.80) 0%, rgba(8,9,10,.20) 55%, rgba(8,9,10,.38) 100%);
  opacity:0;
  animation:fadeIn 1.2s var(--ease) .25s forwards;
}
@keyframes fadeIn{ to{ opacity:1; } }

.hero__grain{
  position:absolute; inset:0; z-index:-1;
  pointer-events:none;
  opacity:.16;
  mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}

.hero__inner{ position:relative; }

.hero__label{
  display:inline-flex; align-items:center; gap:10px;
  font-size:.72rem; letter-spacing:.18em; text-transform:uppercase;
  color:rgba(242,242,240,.72);
  padding:9px 16px;
  border:1px solid var(--line);
  border-radius:100px;
  background:rgba(255,255,255,.04);
  backdrop-filter:blur(8px);
  margin-bottom:clamp(22px,3.4vw,34px);
}
.dot{
  width:6px; height:6px; border-radius:50%;
  background:var(--wa);
  box-shadow:0 0 0 0 rgba(47,212,111,.6);
  animation:pulse 2.6s infinite;
}
@keyframes pulse{
  0%  { box-shadow:0 0 0 0 rgba(47,212,111,.55); }
  70% { box-shadow:0 0 0 9px rgba(47,212,111,0); }
  100%{ box-shadow:0 0 0 0 rgba(47,212,111,0); }
}

.hero__title{
  font-size:clamp(2.7rem, 7.6vw, 5.6rem);
  line-height:1.0;
  letter-spacing:var(--ls-tight);
  font-weight:400;
  max-width:16ch;
}
.hero__title em{
  font-style:normal;
  font-weight:500;
  color:var(--accent);
}

.hero__text{
  margin-top:clamp(20px,2.6vw,28px);
  max-width:50ch;
  color:rgba(242,242,240,.72);
  font-size:clamp(.98rem, 1.4vw, 1.12rem);
}

.hero__cta{
  display:flex; flex-wrap:wrap; gap:12px;
  margin-top:clamp(30px,3.6vw,42px);
}

.hero__facts{
  display:flex; flex-wrap:wrap; gap:10px 26px;
  margin-top:clamp(32px,4vw,48px);
  padding-top:24px;
  border-top:1px solid var(--line);
  max-width:640px;
}
.hero__facts li{
  font-size:.82rem;
  color:var(--muted);
  letter-spacing:.01em;
  display:flex; align-items:center; gap:8px;
}
.hero__facts li::before{
  content:""; width:4px; height:4px; border-radius:50%;
  background:var(--accent); opacity:.75;
}

.hero__scroll{
  position:absolute;
  left:50%; bottom:26px;
  transform:translateX(-50%);
  z-index:2;
}
.hero__scroll-line{
  display:block; width:1px; height:46px;
  background:var(--line-strong);
  position:relative; overflow:hidden;
}
.hero__scroll-line i{
  position:absolute; inset:0 auto auto 0;
  width:1px; height:16px;
  background:var(--accent);
  animation:scrollCue 2.2s var(--ease) infinite;
}
@keyframes scrollCue{
  0%  { transform:translateY(-18px); opacity:0; }
  35% { opacity:1; }
  100%{ transform:translateY(46px); opacity:0; }
}

/* ------------------------------------------------------------ seções */
.section{ padding:clamp(84px, 12vw, 152px) 0; position:relative; }

.section--sobre{
  background:linear-gradient(180deg, var(--bg) 0%, var(--bg-soft) 100%);
}

.section__head{ margin-bottom:clamp(40px,5vw,64px); max-width:640px; }

.grid-2{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:clamp(28px,5vw,72px);
  align-items:center;
}

/* -------------------------------------------------------------- cards */
.card{
  position:relative;
  border-radius:var(--r-lg);
  border:1px solid var(--line);
  background:linear-gradient(180deg, var(--bg-card), var(--bg-card-2));
  padding:clamp(26px,3.2vw,38px);
  overflow:hidden;
  transition:border-color .45s var(--ease), transform .5s var(--ease-out),
             background-color .45s var(--ease);
}
.card::after{
  content:"";
  position:absolute; inset:0;
  border-radius:inherit;
  background:radial-gradient(120% 90% at 50% -20%, rgba(255,255,255,.09), transparent 60%);
  opacity:0; transition:opacity .5s var(--ease);
  pointer-events:none;
}
.card:hover::after{ opacity:1; }

/* card de perfil */
.card--profile{ padding:clamp(28px,3.4vw,40px); }
.profile__head{ display:flex; align-items:center; gap:16px; margin-bottom:24px; }
.profile__avatar{
  width:62px; height:62px; flex:none;
  border-radius:18px;
  display:grid; place-items:center;
  border:1px solid var(--line-strong);
  background:linear-gradient(160deg, rgba(215,201,180,.22), rgba(255,255,255,.02));
  background-size:cover; background-position:center;
  overflow:hidden;
}
.profile__avatar-mark{
  width:46%;
  height:46%;
  object-fit:contain;
  opacity:.92;
}
.profile__avatar.has-photo .profile__avatar-mark{ display:none; }
.profile__name{
  font-size:1.28rem; letter-spacing:-.045em; font-weight:500;
}
.profile__role{ font-size:.84rem; color:var(--muted-2); letter-spacing:.02em; }
.profile__bio{ color:var(--muted); font-size:1rem; }

/* --------------------------------------------------------- links úteis */
.links{
  display:grid;
  grid-template-columns:repeat(2, minmax(0,1fr));
  gap:14px;
}

.linkcard{
  position:relative;
  display:flex; align-items:center; gap:18px;
  padding:22px 24px;
  border-radius:var(--r);
  border:1px solid var(--line);
  background:linear-gradient(180deg, var(--bg-card), var(--bg-card-2));
  overflow:hidden;
  transition:transform .5s var(--ease-out), border-color .4s var(--ease),
             background-color .4s var(--ease), box-shadow .5s var(--ease-out);
}
.linkcard::before{
  content:"";
  position:absolute; inset:0;
  background:linear-gradient(100deg, transparent 20%, rgba(255,255,255,.07) 50%, transparent 80%);
  transform:translateX(-100%);
  transition:transform .9s var(--ease-out);
  pointer-events:none;
}
.linkcard:hover{
  transform:translateY(-3px);
  border-color:var(--line-strong);
  background-color:rgba(255,255,255,.05);
}
.linkcard:hover::before{ transform:translateX(100%); }

.linkcard__ico{
  width:44px; height:44px; flex:none;
  border-radius:13px;
  display:grid; place-items:center;
  border:1px solid var(--line);
  background:rgba(255,255,255,.04);
  transition:border-color .4s var(--ease), background-color .4s var(--ease),
             transform .5s var(--ease-out);
}
.linkcard__ico svg{ width:19px; height:19px; }
.linkcard:hover .linkcard__ico{ transform:scale(1.06); border-color:var(--line-strong); }

.linkcard__body{ min-width:0; flex:1; display:block; }
.linkcard__title{
  display:block;
  font-family:var(--font-display);
  font-size:1rem; font-weight:500; letter-spacing:-.035em;
  line-height:1.3;
}
.linkcard__text{
  display:block;
  font-size:.84rem; color:var(--muted-2); margin-top:3px;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.linkcard__arrow{
  display:grid; place-items:center;
  flex:none; color:var(--muted-2);
  transition:transform .45s var(--ease-out), color .4s var(--ease);
}
.linkcard:hover .linkcard__arrow{ transform:translateX(4px); color:var(--text); }

/* se sobrar um card sozinho na última linha, ele ocupa a largura toda */
.linkcard:last-child:nth-child(even){ grid-column:1 / -1; }

/* card em destaque (WhatsApp) */
.linkcard--featured{
  grid-column:1 / -1;
  padding:26px 28px;
  border-color:rgba(47,212,111,.34);
  background:
    linear-gradient(180deg, rgba(47,212,111,.11), rgba(47,212,111,.03)),
    linear-gradient(180deg, var(--bg-card), var(--bg-card-2));
  box-shadow:0 18px 50px -30px rgba(47,212,111,.55);
}
.linkcard--featured:hover{
  border-color:rgba(47,212,111,.6);
  box-shadow:0 26px 60px -28px rgba(47,212,111,.7);
}
.linkcard--featured .linkcard__ico{
  background:linear-gradient(180deg, var(--wa), var(--wa-2));
  border-color:transparent;
  color:#042213;
  box-shadow:0 8px 22px -10px rgba(47,212,111,.8);
}
.linkcard--featured .linkcard__title{ font-size:1.12rem; }
.linkcard--featured .linkcard__text{ color:var(--muted); }

/* ----------------------------------------------------------- serviços */
.serv{
  display:grid;
  grid-template-columns:repeat(4, minmax(0,1fr));
  gap:14px;
}
.card--serv{ padding:30px 26px 34px; }
.serv__num{
  display:block;
  font-family:var(--font-display);
  font-size:.74rem; letter-spacing:.14em;
  color:var(--accent); opacity:.7;
  margin-bottom:36px;
}
.serv__title{
  font-size:1.18rem; font-weight:500; letter-spacing:-.045em;
  margin-bottom:12px;
}
.serv__text{ font-size:.92rem; color:var(--muted); }

/* ---------------------------------------------------------- confiança */
.section--trust{ padding-top:0; }
.trust{
  display:grid;
  grid-template-columns:repeat(4, minmax(0,1fr));
  gap:14px;
  border-top:1px solid var(--line);
  padding-top:clamp(34px,4vw,48px);
}
.trust__item{
  display:flex;
  flex-direction:column;
  gap:16px;
  padding:22px 20px;
  border-radius:var(--r);
  border:1px solid var(--line);
  background:linear-gradient(180deg, var(--bg-card), var(--bg-card-2));
  transition:transform .5s var(--ease-out), border-color .4s var(--ease),
             background-color .4s var(--ease);
}
.trust__item:hover{
  transform:translateY(-3px);
  border-color:var(--line-strong);
  background-color:rgba(255,255,255,.05);
}
.trust__ico{
  width:42px; height:42px; flex:none;
  display:grid; place-items:center;
  border-radius:12px;
  border:1px solid var(--line);
  background:rgba(255,255,255,.04);
  color:var(--accent);
  transition:border-color .4s var(--ease), transform .5s var(--ease-out);
}
.trust__ico svg{ width:19px; height:19px; }
.trust__item:hover .trust__ico{ transform:scale(1.06); border-color:var(--line-strong); }
.trust__body{ display:flex; flex-direction:column; gap:4px; }
.trust__k{
  font-family:var(--font-display);
  font-size:1.02rem; letter-spacing:-.04em; font-weight:500;
}
.trust__v{ font-size:.84rem; color:var(--muted-2); }

/* --------------------------------------------------------- cta final */
.section--cta{ padding-bottom:clamp(64px,8vw,110px); }
.cta{
  position:relative;
  border-radius:clamp(24px,3vw,36px);
  border:1px solid var(--line);
  background:linear-gradient(180deg, rgba(255,255,255,.05), rgba(255,255,255,.012));
  padding:clamp(44px,7vw,92px) clamp(26px,5vw,64px);
  text-align:center;
  overflow:hidden;
}
.cta__glow{
  position:absolute;
  width:520px; height:520px;
  left:50%; top:-60%;
  transform:translateX(-50%);
  background:radial-gradient(circle, rgba(47,212,111,.16), transparent 62%);
  pointer-events:none;
}
.cta .eyebrow{ margin-bottom:20px; }
.cta__title{
  font-size:clamp(2rem, 5.2vw, 3.6rem);
  line-height:1.03;
  letter-spacing:var(--ls-tight);
  font-weight:400;
}
.cta__text{
  margin:22px auto 34px;
  max-width:46ch;
  color:var(--muted);
}
.cta__note{ margin-top:20px; font-size:.8rem; color:var(--muted-2); }

/* ------------------------------------------------------------ rodapé */
.footer{
  border-top:1px solid var(--line);
  padding:44px 0 calc(40px + env(safe-area-inset-bottom));
  background:var(--bg-soft);
}
.footer__inner{
  display:flex; flex-wrap:wrap; gap:20px;
  align-items:center; justify-content:space-between;
}
.footer__brand{ display:flex; flex-direction:column; align-items:flex-start; gap:10px; }
.footer__logo{ height:26px; width:auto; opacity:.92; }
.footer__meta{ font-size:.82rem; color:var(--muted-2); }
.footer__links{ display:flex; gap:22px; }
.footer__links a{
  font-size:.86rem; color:var(--muted);
  transition:color .3s var(--ease);
}
.footer__links a:hover{ color:var(--text); }
.footer__bottom{
  margin-top:32px; padding-top:22px;
  border-top:1px solid var(--line);
  font-size:.76rem; color:var(--muted-2);
}

/* ------------------------------------------------------- cta flutuante */
.floatcta{
  position:fixed;
  left:50%; bottom:calc(16px + env(safe-area-inset-bottom));
  transform:translate(-50%, 130%);
  z-index:70;
  display:none;
  align-items:center; gap:10px;
  padding:15px 26px;
  border-radius:100px;
  font-family:var(--font-display);
  font-weight:500; font-size:.95rem; letter-spacing:-.02em;
  background:linear-gradient(180deg, var(--wa), var(--wa-2));
  color:#042213;
  box-shadow:0 16px 40px -14px rgba(47,212,111,.8);
  transition:transform .55s var(--ease-out), opacity .4s var(--ease);
  opacity:0;
}
.floatcta.is-visible{ transform:translate(-50%,0); opacity:1; }

/* ========================================================= animações */
.anim{
  opacity:0;
  transform:translateY(22px);
  animation:animIn .95s var(--ease-out) forwards;
  animation-delay:var(--d, 0s);
}
@keyframes animIn{
  to{ opacity:1; transform:none; }
}

.reveal{
  opacity:0;
  transform:translateY(26px) scale(.995);
  transition:opacity .85s var(--ease-out), transform .95s var(--ease-out);
  transition-delay:var(--d, 0s);
  will-change:opacity, transform;
}
.reveal.is-in{ opacity:1; transform:none; }

/* ======================================================== responsivo */
@media (max-width: 940px){
  .grid-2{ grid-template-columns:1fr; align-items:start; }
  .serv{ grid-template-columns:repeat(2, minmax(0,1fr)); }
  .trust{ grid-template-columns:repeat(2, minmax(0,1fr)); gap:24px 14px; }
}

@media (max-width: 720px){
  /* a foto vertical do mobile (heroImagemMobile) já cobre a tela inteira,
     de topo a base, então o texto entra exatamente onde o degradê da
     própria imagem começa a escurecer, em vez de ficar preso na base.

     hero__bg/veil/grain ficam presos a 100svh (a primeira tela), em vez
     de esticar junto com a altura real da seção: como o texto empurra a
     seção para além de uma tela, se o fundo esticasse junto ele recalcularia
     o "cover" para essa altura maior e o degradê da foto deixaria de bater
     com a posição do texto. Abaixo de 100svh, quem aparece é o --bg sólido,
     que já é quase idêntico ao rodapé (preto) da própria foto. */
  .hero{
    align-items:flex-start;
    padding:0 0 40px;
  }
  .hero__bg,
  .hero__veil,
  .hero__grain{
    inset:auto;
    top:0; left:0; right:0; bottom:auto;
    height:100svh;
  }
  .hero__bg{ background-position:center; }
  .hero__veil{
    background:linear-gradient(180deg,
      rgba(8,9,10,.12) 0%,
      rgba(8,9,10,.14) 46%,
      rgba(8,9,10,.5) 61%,
      rgba(8,9,10,.94) 100%);
  }
  .hero__inner{ margin-top:58svh; }
  .hero__title{ max-width:14ch; }
  .hero__cta{ flex-direction:column; align-items:stretch; }
  .hero__cta .btn{ width:100%; padding-block:18px; }
  .hero__label{
    font-size:.63rem; letter-spacing:.14em; padding:8px 14px; gap:8px;
  }
  .hero__facts{ gap:8px 18px; }
  .hero__scroll{ display:none; }

  .links{ grid-template-columns:1fr; }
  .linkcard{ padding:18px 20px; gap:14px; }
  .linkcard--featured{ padding:20px; }
  .linkcard--featured .linkcard__title{ font-size:1.02rem; }
  .linkcard__ico{ width:40px; height:40px; border-radius:12px; }

  .cta .btn--lg{ width:100%; padding:18px 16px; font-size:.95rem; }
  .cta__glow{ width:360px; height:360px; top:-30%; }

  .floatcta{ display:inline-flex; }
  .footer{ padding-bottom:calc(96px + env(safe-area-inset-bottom)); }
  .footer__inner{ flex-direction:column; align-items:flex-start; }
  .topbar .btn--ghost{ display:none; }
}

@media (max-width: 460px){
  .serv{ grid-template-columns:1fr; }
  .card--serv{ padding:24px 22px 28px; }
  .serv__num{ margin-bottom:22px; }
}

/* ------------------------------------------- preferência por menos movimento */
@media (prefers-reduced-motion: reduce){
  html{ scroll-behavior:auto; }
  *,*::before,*::after{
    animation-duration:.01ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.01ms !important;
  }
  .anim, .reveal{ opacity:1 !important; transform:none !important; }
}
