/* =====================================================
   PRIME WEB — PORTFÓLIO PREMIUM
   Experiência editorial. Cada projeto é um estudo de caso.
   Self-contained — não depende de header.css / hero.css / services.css.
   ===================================================== */

.portfolio{
  position: relative;
  background: linear-gradient(180deg, var(--c-black) 0%, var(--c-graphite) 50%, var(--c-black) 100%);
  padding: clamp(80px, 13vw, 140px) 0 clamp(72px, 10vw, 120px);
  overflow: hidden;
}

/* eixo editorial central, ecoando o divisor do Catálogo sem repeti-lo */
.portfolio::before{
  content: "";
  position: absolute;
  top: 6%; left: 50%;
  width: 1px;
  height: 88%;
  background: linear-gradient(180deg, transparent, var(--c-border) 12%, var(--c-border) 88%, transparent);
  opacity: 0.4;
  pointer-events: none;
}

/* =====================================================
   CABEÇALHO DA SEÇÃO
   ===================================================== */
.portfolio__intro{
  position: relative;
  z-index: 2;
  width: 100%;
  max-width: 1440px;
  margin: 0 auto clamp(56px, 8vw, 108px);
  padding: 0 var(--container-pad);
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 20px;
}

.portfolio__eyebrow{
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font-family: var(--f-body);
  font-size: var(--fs-eyebrow);
  letter-spacing: 0.09em;
  text-transform: uppercase;
  color: var(--c-ice-dim);
  padding: 8px 16px 8px 12px;
  border-radius: 999px;
  border: 1px solid var(--c-border-strong);
  background: rgba(244,244,242,0.03);
  backdrop-filter: blur(8px);
}

.portfolio__eyebrow-dot{
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--c-gold);
  box-shadow: 0 0 10px 2px var(--c-gold-dim);
  flex-shrink: 0;
}

.portfolio__title{
  font-size: clamp(1.9rem, 5.6vw, 3.4rem);
  line-height: 1.08;
  font-weight: 500;
  letter-spacing: -0.02em;
  color: var(--c-ice);
  max-width: 20ch;
}

.portfolio__subtitle{
  max-width: 480px;
  font-size: 1rem;
  line-height: 1.6;
  font-weight: 300;
  color: var(--c-ice-dim);
}

/* =====================================================
   LISTA DE ESTUDOS DE CASO
   ===================================================== */
.portfolio__list{
  position: relative;
  z-index: 2;
  width: 100%;
  max-width: 1440px;
  margin: 0 auto;
  padding: 0 var(--container-pad);
  display: flex;
  flex-direction: column;
  gap: clamp(72px, 10vw, 136px);
}

.portfolio-case{
  display: flex;
  flex-direction: column;
  gap: 36px;
}

/* ---------- moldura / palco do mockup ----------
   O frame nunca corta a imagem: ele se comporta como uma
   "vitrine" com fundo elegante que acomoda qualquer proporção
   (mockups verticais de celular incluídos). A imagem nunca é
   forçada a preencher a moldura — ela é exibida por inteiro,
   centralizada, com respiro (padding) ao redor. */
.portfolio-case__frame{
  position: relative;
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: clamp(5px, 1.2vw, 12px);
  border-radius: var(--radius-l);
  border: 1px solid var(--c-border-strong);
  background:
    radial-gradient(3px 3px at 78% 24%, rgba(139,92,246,0.55), transparent 60%),
    radial-gradient(2px 2px at 88% 62%, rgba(96,165,250,0.5), transparent 60%),
    radial-gradient(2.5px 2.5px at 18% 78%, rgba(139,92,246,0.4), transparent 60%),
    radial-gradient(2px 2px at 30% 20%, rgba(96,165,250,0.35), transparent 60%),
    repeating-linear-gradient(90deg, rgba(244,244,242,0.035) 0px, rgba(244,244,242,0.035) 1px, transparent 1px, transparent 64px),
    repeating-linear-gradient(0deg, rgba(244,244,242,0.035) 0px, rgba(244,244,242,0.035) 1px, transparent 1px, transparent 64px),
    radial-gradient(ellipse 62% 54% at 50% 42%, rgba(139,92,246,0.16), transparent 70%),
    radial-gradient(ellipse 50% 40% at 82% 88%, rgba(96,165,250,0.08), transparent 72%),
    var(--c-graphite-2);
  overflow: hidden;
  opacity: 0;
  transform: scale(0.96) translateY(22px);
  transition: opacity 900ms var(--ease-out), transform 900ms var(--ease-out),
              border-color 420ms var(--ease-out), box-shadow 420ms var(--ease-out);
  will-change: transform;
}

.portfolio-case.is-inview .portfolio-case__frame{
  opacity: 1;
  transform: scale(1) translateY(0);
}

.portfolio-case__frame:hover{
  border-color: var(--c-gold-dim);
  box-shadow: 0 24px 60px -24px rgba(139,92,246,0.35);
}

.portfolio-case__frame::before{
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(circle at 22% 16%, rgba(139,92,246,0.10), transparent 58%);
  pointer-events: none;
  z-index: 4;
}

.portfolio-case__frame::after{
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(200deg, rgba(255,255,255,0.05), transparent 42%);
  pointer-events: none;
  z-index: 4;
}

.portfolio-case__canvas{
  position: relative;
  display: block;
  width: 100%;
  height: auto;
  max-height: 82vh;
  object-fit: contain;
  border-radius: 18px;
  filter: drop-shadow(0 30px 54px rgba(0,0,0,0.45));
  will-change: transform;
}

/* numeral editorial — marca d'água do estudo de caso */
.portfolio-case__number{
  position: absolute;
  bottom: 26px;
  right: 32px;
  z-index: 5;
  font-family: var(--f-display);
  font-size: clamp(1.7rem, 3.6vw, 2.6rem);
  font-weight: 600;
  letter-spacing: -0.02em;
  color: rgba(244,244,242,0.055);
  -webkit-text-stroke: 1px rgba(244,244,242,0.09);
  pointer-events: none;
  line-height: 1;
}

/* ---------- conteúdo textual ---------- */
.portfolio-case__content{
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 14px;
}

.portfolio-case__meta{
  display: flex;
  align-items: center;
  gap: 12px;
  font-family: var(--f-body);
  font-size: 0.78rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--c-ice-dim);
}

.portfolio-case__meta-sep{
  width: 3px;
  height: 3px;
  border-radius: 50%;
  background: var(--c-gold-dim);
  flex-shrink: 0;
}

.portfolio-case__category{ color: var(--c-ice-dim); }
.portfolio-case__year{ color: var(--c-gold-soft); }

.portfolio-case__title{
  font-size: clamp(1.7rem, 4.6vw, 2.6rem);
  font-weight: 500;
  letter-spacing: -0.02em;
  color: var(--c-ice);
}

.portfolio-case__desc{
  max-width: 52ch;
  font-size: 0.98rem;
  line-height: 1.65;
  font-weight: 300;
  color: var(--c-ice-dim);
}

.portfolio-case__goal{
  max-width: 52ch;
  font-size: 0.92rem;
  line-height: 1.6;
  font-weight: 300;
  color: var(--c-ice-dim);
  padding-left: 16px;
  border-left: 1px solid var(--c-gold-dim);
}

.portfolio-case__goal strong{
  color: var(--c-ice);
  font-weight: 500;
  font-family: var(--f-display);
  letter-spacing: -0.01em;
}

.portfolio-case__stack{
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 2px;
}

.portfolio-case__stack li{
  font-family: var(--f-body);
  font-size: 0.7rem;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: var(--c-ice-dim);
  padding: 6px 13px;
  border-radius: 999px;
  border: 1px solid var(--c-border);
  background: rgba(244,244,242,0.025);
}

.portfolio-case__cta{
  margin-top: 14px;
}

/* =====================================================
   REVELAÇÃO DE TEXTO — herda .reveal-up global (animations.css)
   Fallback local caso animations.css não tenha carregado ainda
   ===================================================== */
.portfolio-case .reveal-up{
  opacity: 0;
  transform: translateY(22px);
  transition: opacity 800ms var(--ease-out), transform 800ms var(--ease-out);
}
.portfolio-case .reveal-up.is-visible{
  opacity: 1;
  transform: translateY(0);
}

/* =====================================================
   RESPONSIVIDADE — mobile first (self-contained)
   ===================================================== */
@media (min-width: 900px){
  .portfolio-case{
    flex-direction: row;
    align-items: stretch;
    gap: clamp(48px, 6vw, 96px);
    min-height: 74vh;
  }

  .portfolio-case__frame{
    flex: 1 1 58%;
    max-width: none;
    margin: 0;
    align-self: center;
  }

  .portfolio-case__content{
    flex: 1 1 40%;
    gap: 16px;
    align-self: center;
  }

  .portfolio-case:nth-of-type(even){
    flex-direction: row-reverse;
  }
}

@media (min-width: 1280px){
  .portfolio__intro{ margin-bottom: 120px; }
  .portfolio-case{ min-height: 68vh; }
}

/* =====================================================
   TILT PREMIUM (hover) — aplicado via JS a .portfolio-case__frame
   ===================================================== */
.portfolio-case__frame{
  transform-style: preserve-3d;
}
