/* ---------- serviços ----------
   Efeito: gem "Hover Peek List" da BYQ. Uma lista numerada das frentes, cada linha um link para a
   página da frente; ao passar o cursor numa linha, uma moldura com imagem aparece e segue o cursor
   com atraso, inclina conforme a velocidade e troca de imagem com fusão. As outras linhas apagam
   um pouco. A moldura não recebe clique: quem recebe é a linha que está embaixo dela.
   O CSS faz as transições; o JS (services.js) só informa a posição (--px, --py), a inclinação
   (--tilt) e qual imagem está ativa. Tempos, curva e distâncias são os do gem (tokens.css). */
.services__inner {
  position: relative; /* referência para a posição da moldura */
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: var(--space-5);
  min-height: 100vh;
  min-height: 100svh;
  /* a lista vai de uma margem do conteúdo à outra, as mesmas linhas verticais do hero */
  padding: calc(var(--header-altura) + var(--space-6)) calc(var(--margem-conteudo) - var(--card-inset)) var(--space-8);
}

.services__title {
  margin-bottom: var(--space-4);
  font-family: var(--fonte-titulo);
  font-size: var(--fs-titulo-g);
  font-weight: var(--peso-titulo);
  line-height: var(--lh-titulo);
  letter-spacing: var(--tracking-titulo);
  text-wrap: balance;
}

/* ---------- lista ---------- */
.services__list { border-top: 1px solid var(--cena-borda); }

.service {
  border-bottom: 1px solid var(--cena-borda);
  transition: color var(--servico-dur-cor) var(--espia-ease);
}
/* a linha inteira é o link para a página da frente */
.service__link {
  display: grid;
  grid-template-columns: var(--servico-num-coluna) minmax(0, 1.1fr) minmax(0, 1fr) auto;
  align-items: baseline;
  gap: var(--space-4);
  padding: clamp(var(--space-4), 2.2vw, var(--space-6)) 0;
}
.service__link:focus-visible { outline-offset: -3px; } /* por dentro: a cena corta o que passa da borda */
/* lista sem número: os trabalhos de uma frente, nas páginas de serviço */
.services__list--plain .service__link { grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr) auto; }

.service__num {
  font-family: var(--fonte-numero);
  font-size: var(--fs-rodape);
  font-weight: var(--peso-corpo-medio);
  opacity: var(--servico-num-opacidade);
  transition: opacity var(--servico-dur-cor) var(--espia-ease);
}

.service__name {
  position: relative;
  width: fit-content;
  font-family: var(--fonte-titulo);
  font-size: var(--fs-titulo-p);
  font-weight: var(--peso-titulo);
  line-height: 1.05;
  letter-spacing: var(--tracking-titulo);
  transition: transform var(--servico-dur-nome) var(--espia-ease);
}
/* sublinhado que cresce da esquerda para a direita */
.service__name::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: -0.12em;
  height: 2px;
  background: currentColor;
  transform: scaleX(0);
  transform-origin: left center;
  transition: transform var(--servico-dur-sublinhado) var(--espia-ease);
}

.service__text {
  font-size: var(--fs-corpo-g);
  line-height: 1.35;
  opacity: var(--servico-texto-opacidade);
  text-wrap: pretty;
  transition: opacity var(--servico-dur-cor) var(--espia-ease);
}

/* seta do link, discreta como o número até a linha ganhar destaque */
.service__go {
  align-self: center;
  font-size: var(--fs-corpo-g);
  opacity: var(--servico-num-opacidade);
  transition: opacity var(--servico-dur-cor) var(--espia-ease),
              transform var(--servico-dur-nome) var(--espia-ease);
}

/* destaque da linha: com o cursor em cima ou com o foco do teclado */
.service__link:focus-visible .service__num,
.service__link:focus-visible .service__text,
.service__link:focus-visible .service__go { opacity: 1; }
.service__link:focus-visible .service__name { transform: translateX(var(--servico-nome-desvio)); }
.service__link:focus-visible .service__name::after { transform: scaleX(1); }
.service__link:focus-visible .service__go { transform: translateX(var(--servico-seta-desvio)); }
.services:has(.service__link:focus-visible) .service:not(:focus-within) {
  color: color-mix(in srgb, var(--cena-texto) var(--servico-apagado), transparent);
}

@media (hover: hover) {
  .service:hover .service__num,
  .service:hover .service__text,
  .service:hover .service__go { opacity: 1; }
  .service:hover .service__name { transform: translateX(var(--servico-nome-desvio)); }
  .service:hover .service__name::after { transform: scaleX(1); }
  .service:hover .service__go { transform: translateX(var(--servico-seta-desvio)); }
  /* com uma frente em foco, as outras apagam */
  .services.is-peeking .service:not(:hover) {
    color: color-mix(in srgb, var(--cena-texto) var(--servico-apagado), transparent);
  }
}

/* ---------- moldura que segue o cursor ---------- */
.peek {
  position: absolute;
  top: 0;
  left: 0;
  z-index: 1;
  width: var(--espia-largura);
  aspect-ratio: var(--espia-proporcao);
  border-radius: var(--espia-raio);
  overflow: hidden;
  pointer-events: none;
  background: var(--tema-placeholder);
  /* linha fina por dentro, como nas imagens dos cases. A sombra do gem saiu: aqui não há efeitos */
  outline: 1px solid var(--cena-borda);
  outline-offset: -1px;
  transform: translate3d(calc(var(--px, 0px) - 50%), calc(var(--py, 0px) - 50%), 0)
             rotate(var(--tilt, 0deg)) scale(var(--peek-scale, var(--espia-escala-inicial)));
  opacity: 0;
  transition: opacity var(--espia-dur-opacidade) var(--espia-ease),
              transform var(--espia-dur-transform) var(--espia-ease);
  will-change: transform, opacity;
}
.peek.is-peeking {
  opacity: 1;
  --peek-scale: 1;
}
.peek__img {
  position: absolute;
  inset: 0;
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  opacity: 0;
  transform: scale(var(--espia-img-escala));
  transition: opacity var(--espia-img-dur-opacidade) var(--espia-ease),
              transform var(--espia-img-dur-escala) var(--espia-ease);
}
.peek__img.is-active {
  opacity: 1;
  transform: scale(1);
}

/* ---------- tablet: descrição embaixo do nome ---------- */
@media (max-width: 960px) {
  .service__link {
    grid-template-columns: var(--servico-num-coluna) minmax(0, 1fr) auto;
    row-gap: var(--space-2);
  }
  .service__text { grid-column: 2; max-width: 34rem; }
  .service__go { grid-column: 3; grid-row: 1 / span 2; }
  .services__list--plain .service__link { grid-template-columns: minmax(0, 1fr) auto; }
  .services__list--plain .service__text { grid-column: 1; }
  .services__list--plain .service__go { grid-column: 2; }
}

/* ---------- celular: sem moldura, como no gem ---------- */
@media (max-width: 34rem) {
  .service { --servico-num-coluna: 2.5rem; }
  .service__text { font-size: var(--fs-corpo-m); }
  .peek { display: none; }
}

/* ---------- movimento reduzido: tudo troca na hora e a moldura não inclina ---------- */
@media (prefers-reduced-motion: reduce) {
  .peek,
  .peek__img,
  .service,
  .service__name,
  .service__name::after,
  .service__num,
  .service__text,
  .service__go { transition-duration: 0.001ms; }
  .peek {
    transform: translate3d(calc(var(--px, 0px) - 50%), calc(var(--py, 0px) - 50%), 0) scale(1);
  }
}
