.portfolio{padding-block:var(--section-y);border-top:1px solid var(--hairline)}
.portfolio__head{margin-bottom:clamp(2.5rem,6vh,4rem)}
.portfolio__lead{margin-top:1.4rem;color:var(--text-dim);font-size:var(--fs-lead);max-width:42ch}
/* ---- leque de casas ---- */
.fan{
  position:relative;
  height:clamp(560px,62vh,660px);
  /* sem max-width/padding proprios — os cards das pontas sangram alem da largura do container;
     o body{overflow-x:hidden} (base.css) corta o excesso na borda real da janela, entao a
     mascara de gradiente abaixo (mesmo truque do .marquee) faz esse corte sumir num fade suave
     em vez de uma linha reta — os cards das pontas se dissolvem no fundo, nao ficam fatiados */
  overflow-y:visible;
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);
  mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);
  cursor:grab;
  touch-action:pan-y;
  user-select:none;
}
.fan.is-dragging{cursor:grabbing}
.fan-card{
  appearance:none;border:0;padding:0;background:none;cursor:pointer;
  position:absolute;
  top:50%;left:50%;
  width:clamp(300px,26vw,380px);
  opacity:0;
  transform:translate(-50%,-50%) scale(.72);
  transition:transform .8s cubic-bezier(.34,1.56,.64,1), opacity .6s var(--ease-out), filter .5s var(--ease-out);
}
.fan.is-in .fan-card{
  opacity:1;
  transform:
    translate(-50%,-50%)
    translateX(var(--tx,0px))
    rotate(var(--rot,0deg))
    translateY(var(--ty,0px));
}
.fan.is-dragging .fan-card{transition:opacity .3s ease, filter .3s ease}
.fan-card[data-center="true"]{ filter:none; }
.fan-card:not([data-center="true"]){ filter:saturate(.85) brightness(.82); }
.fan-card__stack{
  position:relative;
  aspect-ratio:3/4; /* bate exato com as fotos novas (1080x1440 retrato) — sem crop */
  border-radius:var(--radius);
  border:1px solid var(--hairline);
  overflow:hidden;
  background:var(--bg-elev);
  box-shadow:0 24px 48px -24px rgba(0,0,0,.55);
  transform:scale(var(--scale,1));
  transition:border-color .45s var(--ease-out), transform .6s var(--ease-out);
  pointer-events:none;
}
.fan-card[data-center="true"] .fan-card__stack{
  border-color:var(--hairline-amber);
}
.fan-card__stack img{
  position:absolute;inset:0;
  width:100%;height:100%;
  object-fit:cover;
  opacity:0;
  -webkit-user-drag:none;
}
.fan-card__stack img:first-child{opacity:1}
.fan-card__meta{
  display:flex;flex-direction:column;gap:.15rem;
  margin-top:1rem;text-align:center;
  transition:opacity .35s var(--ease-out);
}
.fan-card[data-center="true"] .fan-card__meta{opacity:1}
.fan-card:not([data-center="true"]) .fan-card__meta{opacity:0;pointer-events:none}
.fan-card__place{font-size:var(--fs-pillar);font-weight:500;transition:color .35s var(--ease-out)}
.fan-card__addr{font-family:var(--font-mono);font-size:.78rem;color:var(--text-mute);letter-spacing:.03em}
.fan-card__cta{
  display:inline-flex;align-items:center;gap:.4em;
  margin-top:.6rem;
  font-family:var(--font-mono);font-size:.78rem;letter-spacing:.03em;
  color:var(--amber);
  transition:gap .3s var(--ease-out);
}
.fan-card__cta:hover{gap:.65em;color:var(--amber-bright)}
.fan.is-in .fan-card:hover:not([data-center="true"]){
  transform:
    translate(-50%,-50%)
    translateX(var(--tx,0px))
    rotate(var(--rot,0deg))
    translateY(calc(var(--ty,0px) - 14px));
}
.fan-card:hover:not([data-center="true"]) .fan-card__stack{border-color:var(--hairline-amber)}
.landbank{margin-top:clamp(3.5rem,8vh,6rem);padding-top:1.6rem;border-top:1px solid var(--hairline)}
.landbank__label{
  font-family:var(--font-mono);font-size:var(--fs-micro);
  letter-spacing:var(--tracking-micro);text-transform:uppercase;color:var(--text-mute);
  margin-bottom:1.2rem;
}
.landbank__list{display:flex;flex-wrap:wrap;gap:.7rem 2rem}
.landbank__list li{color:var(--text-dim)}
.portfolio__bridge{margin-top:clamp(2.5rem,6vh,4rem);color:var(--text-dim);font-size:var(--fs-lead)}

