:root {
  --cv-navy: #0d1b2a;
  --cv-blue: #1a71b2;
  --cv-blue-light: #4fa3d8;
  --cv-blue-pale: #eaf4fb;
  --cv-ink: #1a1a1a;
  --cv-muted: #666666;

  /* Alias pro global.css, que já usa var(--navy) em .block-header-title
     mas nunca definia essa variável em lugar nenhum. */
  --navy: var(--cv-navy);
}

body {
  padding-top: 0;
}

/* ============ ROLAGEM ATÉ AS SEÇÕES ============ */

/*
   Os links do menu (#eventos, #sobre, #patrocinadores) davam um salto seco: a
   página trocava de lugar de um quadro para o outro e a pessoa perdia a
   referência de onde estava. Aqui ela desliza.

   Vale só na home, que é a única página com âncora — esta folha não é
   carregada nas outras.
*/
html {
  scroll-behavior: smooth;
}

/* Movimento na tela inteira incomoda de verdade quem tem sensibilidade
   vestibular, e o sistema operacional já sabe disso. Quem pediu menos
   movimento continua com o salto direto. */
@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }
}

/*
   O menu é sticky: sem esta margem, a rolagem para com o título da seção
   escondido atrás dele.

   A altura vem do próprio menu, medida pelo home-v2.js — as duas barras mudam
   de tamanho conforme a largura da tela, e um número fixo aqui erraria em
   algum lugar. O valor no `var()` é só o que vale enquanto o script não rodou.
*/
.container[id] {
  scroll-margin-top: calc(var(--cv-nav-altura, 100px) + 18px);
}

/* ============ NAV (duas camadas) ============ */

.cv-nav {
  position: sticky;
  top: 0;
  z-index: 1000;
  font-family: 'Montserrat', 'Segoe UI', Roboto, Helvetica, sans-serif;
}

.cv-nav__utility {
  background: var(--cv-navy);
  color: #fff;
}

.cv-nav__utility-inner {
  max-width: 1200px;
  margin: 0 auto;
  padding: 0 20px;
  min-height: 36px;
  display: flex;
  align-items: center;
  font-size: 13px;
}

.cv-nav__utility-tagline {
  font-weight: 600;
  letter-spacing: .02em;
  opacity: .8;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.cv-nav__main {
  background: var(--cv-blue-pale);
  box-shadow: 0 2px 12px rgba(13, 27, 42, .08);
}

.cv-nav__main-inner {
  max-width: 1200px;
  margin: 0 auto;
  padding: 0 20px;
  min-height: 64px;
  display: flex;
  align-items: center;
  justify-content: space-between;
}

.cv-nav__brand {
  font-size: 20px;
  font-weight: 800;
  color: var(--cv-navy);
  text-decoration: none;
  letter-spacing: -.01em;
}

.cv-nav__links {
  display: flex;
  align-items: center;
  gap: 32px;
}

.cv-nav__links a {
  color: var(--cv-ink);
  text-decoration: none;
  font-weight: 600;
  font-size: 15px;
}

.cv-nav__links a:hover {
  color: var(--cv-blue);
}

.cv-nav__links-cta {
  background: var(--cv-blue);
  color: #fff !important;
  padding: 10px 20px;
  border-radius: 999px;
}

.cv-nav__links-cta:hover {
  background: var(--cv-navy);
  color: #fff !important;
}

.cv-nav__auth {
  display: flex;
  align-items: center;
  gap: 16px;
  padding-left: 16px;
  border-left: 1px solid rgba(13, 27, 42, .15);
}

.cv-nav__auth-user {
  color: var(--cv-navy);
  font-weight: 600;
  font-size: 14px;
}

/* O "Sair" é um <button> dentro de um <form>; os outros itens do menu são
   links. `display: flex` tira o form do fluxo de texto — como bloco, ele criava
   uma caixa de linha cujo "strut" usa a fonte herdada do body (16px/24px),
   maior que a dos links. */
.cv-nav__logout-form {
  display: flex;
  align-items: center;
}

.cv-nav__logout-form button {
  background: none;
  border: none;
  color: var(--cv-ink);
  opacity: .75;
  cursor: pointer;
  font-size: 15px;
  font-weight: 600;
  padding: 0;
  font-family: inherit;
  /* `forms.css` estiliza TODO `button[type="submit"]` da página — é o botão
     verde dos formulários de login e inscrição — e de lá vinham `width: 100%`
     e `margin-top: 10px`. A margem empurrava o "Sair" 10px para baixo dentro
     do form, deixando-o visivelmente desalinhado dos links ao lado. */
  margin: 0;
  width: auto;
}

.cv-nav__logout-form button:hover {
  opacity: 1;
  color: var(--cv-blue);
}

.cv-nav__toggle {
  display: none;
  flex-direction: column;
  gap: 5px;
  background: none;
  border: none;
  cursor: pointer;
  padding: 8px;
}

.cv-nav__conta {
  display: none;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  margin-left: auto;
  color: var(--cv-navy);
  border-radius: 50%;
}

.cv-nav__conta:hover { background: rgba(13, 27, 42, .06); }

.cv-nav__toggle span {
  width: 24px;
  height: 2px;
  background: var(--cv-navy);
  display: block;
}

@media (max-width: 860px) {
  .cv-nav__utility-tagline {
    font-size: 11px;
    max-width: 55vw;
  }

  .cv-nav__toggle {
    display: flex;
  }

  .cv-nav__conta {
    display: inline-flex;
  }

  .cv-nav__links {
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    background: var(--cv-blue-pale);
    flex-direction: column;
    align-items: flex-start;
    gap: 0;
    max-height: 0;
    overflow: hidden;
    box-shadow: 0 12px 20px rgba(13, 27, 42, .1);
    transition: max-height .3s ease;
  }

  .cv-nav__links.is-open {
    max-height: 420px;
    overflow-y: auto;
  }

  .cv-nav__links a {
    width: 100%;
    padding: 14px 20px;
    border-top: 1px solid rgba(13, 27, 42, .1);
  }

  .cv-nav__links-cta {
    border-radius: 0;
    text-align: center;
  }

  .cv-nav__auth {
    flex-direction: column;
    align-items: stretch;
    gap: 0;
    width: 100%;
    padding-left: 0;
    border-left: none;
  }

  .cv-nav__auth .cv-nav__logout-form button,
  .cv-nav__auth-user {
    width: 100%;
    padding: 14px 20px;
    text-align: left;
    border-top: 1px solid rgba(13, 27, 42, .1);
    display: block;
  }
}

@media (max-width: 480px) {
  .cv-nav__utility-tagline {
    display: none;
  }
}

/* ============ BANNER rotativo ============ */

.cv-banner {
  position: relative;
  height: min(72vh, 620px);
  min-height: 420px;
  overflow: hidden;
  background: var(--cv-navy);
}

.cv-banner__track {
  position: relative;
  width: 100%;
  height: 100%;
}

.cv-banner__slide {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  background: linear-gradient(135deg, var(--cv-navy) 0%, var(--cv-blue) 100%);
  background-size: cover;
  /* "center 25%" e não "center": as fotos têm pessoas, e centralizar cortava a
     cabeça de quem aparecia mais acima no enquadramento. Puxar o recorte para
     cima mantém rosto e ombros visíveis. */
  background-position: center 25%;
  opacity: 0;
  visibility: hidden;
  transition: opacity .8s ease;
}

.cv-banner__slide.is-active {
  opacity: 1;
  visibility: visible;
}

.cv-banner__content {
  max-width: 1200px;
  margin: 0 auto;
  padding: 0 20px;
  width: 100%;
  color: #fff;
  text-align: center;
}

.cv-banner__eyebrow {
  display: inline-block;
  text-transform: uppercase;
  letter-spacing: .15em;
  font-size: 13px;
  font-weight: 700;
  color: var(--cv-blue-light);
  margin-bottom: 16px;
}

.cv-banner__title {
  font-size: clamp(32px, 5vw, 56px);
  font-weight: 800;
  line-height: 1.1;
  margin: 0 0 18px;
  color: #fff;
  text-shadow: 0 1px 2px rgba(0, 0, 0, .5);
}

.cv-banner__text {
  font-size: clamp(15px, 1.6vw, 19px);
  max-width: 620px;
  margin: 0 auto 30px;
  opacity: .92;
}

.cv-banner__cta {
  display: inline-block;
  background: var(--cv-blue-light);
  color: var(--cv-navy);
  font-weight: 800;
  text-transform: uppercase;
  font-size: 14px;
  letter-spacing: .03em;
  text-decoration: none;
  padding: 16px 34px;
  border-radius: 999px;
  transition: transform .2s ease, background .2s ease;
}

.cv-banner__cta:hover {
  background: #fff;
  transform: translateY(-2px);
}

.cv-banner__arrow {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  background: rgba(255, 255, 255, .15);
  color: #fff;
  border: none;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  cursor: pointer;
  font-size: 16px;
  z-index: 2;
  transition: background .2s ease;
}

.cv-banner__arrow:hover {
  background: rgba(255, 255, 255, .3);
}

.cv-banner__arrow--prev {
  left: 20px;
}

.cv-banner__arrow--next {
  right: 20px;
}

.cv-banner__dots {
  position: absolute;
  bottom: 24px;
  left: 0;
  right: 0;
  display: flex;
  justify-content: center;
  gap: 10px;
  z-index: 2;
}

.cv-banner__dot {
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: rgba(255, 255, 255, .4);
  border: none;
  cursor: pointer;
  padding: 0;
  transition: background .2s ease, transform .2s ease;
}

.cv-banner__dot.is-active {
  background: #fff;
  transform: scale(1.2);
}

@media (max-width: 640px) {
  .cv-banner__arrow {
    display: none;
  }
}

/* ============ PATROCINADORES ============ */

/*
   Fileira de logos, não grade fixa: a quantidade muda conforme os contratos, e
   uma grade de quatro colunas deixaria a última linha torta com cinco ou seis.
   Cada logo entra numa caixa do mesmo tamanho, `contain`, então marcas altas e
   marcas deitadas ficam com o mesmo peso visual.
*/
.patrocinadores {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 28px 40px;
  padding: 12px 0 8px;
}

.patrocinador {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 150px;
  height: 76px;
  text-decoration: none;
}

.patrocinador img {
  max-width: 100%;
  max-height: 100%;
  object-fit: contain;
  /* Dessaturado em repouso e colorido no hover: assim a fileira não briga com
     a arte dos eventos logo acima, e a marca ganha destaque quando a pessoa
     realmente para nela. */
  filter: grayscale(100%);
  opacity: .72;
  transition: filter .2s ease, opacity .2s ease, transform .2s ease;
}

a.patrocinador:hover img,
a.patrocinador:focus-visible img {
  filter: grayscale(0);
  opacity: 1;
  transform: scale(1.04);
}

/* Patrocinador sem logo enviado: o nome ocupa o lugar em vez de deixar um
   buraco na fileira. */
.patrocinador__nome {
  color: var(--cv-navy);
  font-size: .95rem;
  font-weight: 700;
  text-align: center;
  line-height: 1.25;
  text-wrap: balance;
}

@media (prefers-reduced-motion: reduce) {
  .patrocinador img { transition: none; }
  a.patrocinador:hover img,
  a.patrocinador:focus-visible img { transform: none; }
}

@media (max-width: 640px) {
  .patrocinadores { gap: 20px 26px; }
  .patrocinador { width: 116px; height: 60px; }
}

/* ============ RESPIRO ENTRE AS SEÇÕES DA HOME ============
   Pedido do dono (2026-09-19): tudo estava grudado. Dobra os dois
   espaços — entre um bloco e o outro (60px → 120px, o .container do
   event-cards.css) e entre o título e o bloco dele (3rem → 6rem, o
   .block-header-title do global.css).

   Fica aqui e não nesses arquivos porque só a home tem essas seções, e
   com [id] / o seletor filho para vencer as regras de origem, que carregam
   depois deste arquivo. As margens do container e do título colapsam
   entre si, então o espaço entre blocos é o maior dos dois: 120px. */
.container[id],
.fotos-secao {
  margin-top: 120px;
  margin-bottom: 120px;
}

.container[id] > .block-header-title,
.fotos-secao > .block-header-title {
  margin-top: 6rem;
  margin-bottom: 6rem;
}

/* ============ GALERIA DE FOTOS (feed) ============
   A única faixa da home a 100% da largura — por isso não é .container.
   Quadrados encostados, como um feed: 6 colunas no desktop (12 fotos em duas
   linhas), 3 no tablet, 2 no celular mostrando só as 6 primeiras. A home
   manda 12; quem esconde o resto no celular é o nth-child. */
.fotos-secao {
  width: 100%;
}

.fotos {
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  /* Encostadas, sem vão: pedido do dono (2026-09-20). */
  gap: 0;
  width: 100%;
}

.foto {
  position: relative;
  display: block;
  margin: 0;
  aspect-ratio: 1 / 1;
  overflow: hidden;
  background: #0d1b2a;
}

/* O recorte, sempre preenchendo o quadrado pelo centro — as fotos chegam de
   proporções variadas, e é isso que deixa a grade regular. */
.foto__quadrada {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform .4s ease;
}

/* Hover: a foto cresce um pouco dentro do próprio quadrado (o overflow
   esconde o que sobra), e volta ao sair, com a mesma transição. Era uma troca
   em fade pela foto inteira, mas `contain` a deixava menor — parecia encolher. */
.foto:hover .foto__quadrada,
.foto:focus-visible .foto__quadrada {
  transform: scale(1.05);
}

@media (max-width: 1024px) {
  .fotos { grid-template-columns: repeat(3, 1fr); }
}

@media (max-width: 640px) {
  .fotos { grid-template-columns: repeat(2, 1fr); }
  .foto:nth-child(n + 7) { display: none; }
}

@media (prefers-reduced-motion: reduce) {
  .foto__quadrada { transition: none; }
  .foto:hover .foto__quadrada { transform: none; }
}
