main > section:last-child,
main > div:last-child {
  padding-bottom: 0;
}

/* ==========================================================================
   Header e rodapé
   ========================================================================== */

/* --- Header --------------------------------------------------------------- */

.site-header {
  position: relative;
  z-index: var(--z-header);
}

/* Header sólido: a linha respira o mesmo tanto para o conteúdo da página. */
.site-header:not(.site-header--overlay) { padding-bottom: var(--space-8); }

/* Na home o header flutua sobre o banner, em branco. */
.site-header--overlay {
  position: absolute;
  inset: 0 0 auto;
  color: var(--c-white);
}

/* O respiro vem do próprio inner, igual em cima e embaixo: assim logo e menu
   ficam centrados verticalmente na faixa que a linha delimita. */
.site-header__inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-8);
  padding-block: var(--space-8);
  position: relative;
  /* border-bottom: 1px solid var(--c-rule); */
}

@media (min-width: 901px) {
  .site-header__inner {
    padding-block: 0;
  }
}

.site-header__inner:after {
  content: "";
  position: absolute;
  bottom: 0;
  transform: translateX(-50%);
  left: 50%;
  height: 1px;
  width: calc(100% - var(--gutter) * 2);
  background-color: var(--c-rule);
}

/* .site-header--overlay .site-header__inner {
  border-bottom-color: rgba(255, 255, 255, .35);
} */
.site-header--overlay .site-header__inner:after {
  background-color: rgba(255, 255, 255, .35);
}

.brand img { width: clamp(140px, 11vw, 191px); height: auto; }

/* --- Navegação ------------------------------------------------------------ */

.site-nav .menu {
  display: flex;
  align-items: center;
  gap: clamp(var(--space-6), 2.6vw, 2.8125rem);
}

.site-nav a {
  position: relative;
  display: inline-block;
  padding-block: var(--space-2);
  font-size: var(--fs-nav);
  font-weight: var(--fw-medium);
  white-space: nowrap;
  transition: color var(--dur) var(--ease);
}

@media (min-width: 901px) {
  .site-nav a {
    padding-block: var(--space-10);
  }
  .site-nav .sub-menu a {
    padding-block: var(--space-2);
  }
}

/* Sublinhado do item ativo, como no design. */
.site-nav a::after {
  content: "";
  position: absolute;
  inset: auto 0 0;
  margin: 0 0 1px 0;
  height: 3px;
  background: currentColor;
  transform: scaleX(0);
  transform-origin: left;
  transition: transform var(--dur) var(--ease);
}
/* O ancestral conta como ativo: dentro de um pilar, quem marca a seção é
   "Our Portfolio" no topo — o filho ativo fica escondido no submenu. */
.site-nav a:hover::after,
.site-nav .current-menu-item > a::after,
.site-nav .current-menu-ancestor > a::after { transform: scaleX(1); }

.site-header--overlay .site-nav > .menu > .current-menu-item > a{
  font-weight: var(--fw-bold);
}
/* Sobre a foto o item ativo continua branco, e quem o marca é o sublinhado
   acima. O azul da marca aqui não é legível: contra o véu do banner ele fica
   entre 1,4:1 e 2,5:1 conforme a foto — reprovava antes mesmo de o véu ser
   reforçado. Um azul mais claro também não resolve (3,6:1 no pior caso), e o
   sublinhado tem a vantagem de não depender de cor nenhuma (WCAG 1.4.1). */
@media (min-width: 901px) {
  .site-header--overlay .site-nav > .menu > .current-menu-item > a,
  .site-header--overlay .site-nav > .menu > .current-menu-ancestor > a,
  .site-header--overlay .site-nav > .menu > li:hover > a { 
    color: var(--c-blue); 
  }
}

.site-header:not(.site-header--overlay) .site-nav a { color: var(--c-blue); }

/* Submenu (Our Portfolio) */
.site-nav .menu-item-has-children { position: relative; }

.site-nav .sub-menu {
  position: absolute;
  top: 100%;
  left: 0;
  min-width: 240px;
  padding: var(--space-4);
  background: var(--c-white);
  border-radius: 12px;
  box-shadow: 0 12px 32px rgba(0, 0, 0, .12);
  opacity: 0;
  visibility: hidden;
  transform: translateY(-6px);
  transition: opacity var(--dur) var(--ease), transform var(--dur) var(--ease), visibility var(--dur);
}

.site-nav .menu-item-has-children:hover > .sub-menu,
.site-nav .menu-item-has-children:focus-within > .sub-menu {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
}

.site-nav .sub-menu a { color: var(--c-blue); font-size: var(--fs-body); }

/* --- Botão do menu mobile ------------------------------------------------- */

.nav-toggle {
  display: none;
  flex-direction: column;
  gap: 6px;
  padding: var(--space-2);
  transition: transform var(--dur) var(--ease);
}

.nav-toggle[aria-expanded="true"] {
  transform: translateY(4px) !important;
}

.nav-toggle[aria-expanded="true"]:after {
  opacity: 0;
  transform: translateY(4px);
}
.nav-toggle[aria-expanded="true"] .nav-toggle__bar {
  width: 29px;
}

.nav-toggle:after {
  content: '';
  display: block;
  margin: 0 0 0 auto;
  width: 20px;
  height: 3px;
  border-radius: 50px;
  background: currentColor;
  transition: transform var(--dur) var(--ease), opacity var(--dur) var(--ease);
}

.nav-toggle__bar {
  display: block;
  margin: 0 0 0 auto;
  width: 20px;
  height: 3px;
  border-radius: 50px;
  background: currentColor;
  transition: transform var(--dur) var(--ease), opacity var(--dur) var(--ease), width var(--dur) var(--ease);
}
.nav-toggle__bar:first-child {
  width: 29px;
}

.nav-toggle[aria-expanded="true"] .nav-toggle__bar:first-child { transform: translateY(4px) rotate(45deg); }
.nav-toggle[aria-expanded="true"] .nav-toggle__bar:last-child  { transform: translateY(-4px) rotate(-45deg); }

@media (max-width: 900px) {
  .nav-toggle { display: flex; }

  .site-nav {
    position: absolute;
    inset: 100% var(--gutter) auto;
    padding: var(--space-6);
    background: var(--c-white);
    border-radius: 12px;
    box-shadow: 0 12px 32px rgba(0, 0, 0, .14);
    opacity: 0;
    visibility: hidden;
    transform: translateY(-8px);
    transition: opacity var(--dur) var(--ease), transform var(--dur) var(--ease), visibility var(--dur);
  }

  .site-nav.is-open { opacity: 1; visibility: visible; transform: translateY(0); }

  /* A regra do submenu não pode reexibir descendentes quando o contêiner
     principal está fechado. inert, no JS, também os remove da tabulação. */
  .site-nav:not(.is-open),
  .site-nav:not(.is-open) .sub-menu { visibility: hidden; }

  .site-nav .menu { flex-direction: column; align-items: flex-start; gap: var(--space-4); }
  .site-nav a { color: var(--c-blue); white-space: normal; }
  .site-nav .sub-menu {
    position: static;
    opacity: 1;
    visibility: visible;
    transform: none;
    padding: var(--space-2) 0 0 var(--space-4);
    box-shadow: none;
  }
}

/* --- Marca d'água --------------------------------------------------------- */

/* O símbolo da marca ao fundo de uma seção, quase transparente. A posição e o
   tamanho ficam com cada seção; o que é comum vive aqui — inclusive o gancho
   que a animação usa para dar a deriva lenta no scroll.

   A seção que a recebe precisa de `position: relative` e `overflow: hidden`:
   o símbolo entra inteiro e é a borda da seção que o corta, então o sangramento
   se refaz sozinho em qualquer largura. */
.watermark {
  position: absolute;
  opacity: .03;
  pointer-events: none;
}

/* --- Rodapé --------------------------------------------------------------- */

.site-footer {
  padding-block: var(--space-24);
  color: var(--c-ink);
}

.site-footer__top {
  display: flex;
  align-items: center;
  gap: var(--space-8);
  flex-wrap: wrap;
  padding-bottom: var(--space-12);
  border-bottom: 1px solid var(--c-rule);
}

.site-footer__top .brand img { width: clamp(190px, 23vw, 400px); }

/* O ícone aparece espelhado na vertical no design. */
.site-footer__mark {
  width: 82px;
  height: auto;
  transform: scaleY(-1);
}

.site-footer__nav { margin-left: auto; }

.site-footer__nav .menu,
.site-footer__legal .menu {
  display: flex;
  flex-wrap: wrap;
  gap: clamp(var(--space-6), 3vw, 3.75rem);
}

.site-footer__nav a {
  color: var(--c-blue);
  font-size: var(--fs-nav);
  font-weight: var(--fw-medium);
}

.site-footer__bottom {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: var(--space-6);
  padding-top: var(--space-12);
}

.site-footer__copy,
.site-footer__legal a {
  color: var(--c-ink);
  font-size: var(--fs-nav);
  font-weight: var(--fw-medium);
}

.site-footer__legal a:hover,
.site-footer__nav a:hover { text-decoration: underline; }

@media (max-width: 900px) {
  .site-footer { padding-block: var(--space-12); }
  .site-footer__top { border-bottom: 0; padding-bottom: 0; flex-wrap: wrap; gap: var(--space-4); justify-content: center; }
  .site-footer__nav { margin-left: 0; flex-basis: 100%; }
  .site-footer__nav .menu { align-items: center; justify-content: center; }
  .site-footer__mark { width: 55px; }

  .site-footer__bottom { flex-direction: column-reverse; justify-content: center; text-align: center; }
  .site-footer__legal .menu { justify-content: center; }
}

@media (max-width: 600px) {
  .site-footer__nav .menu { flex-direction: column; }
}