/* ── Root & Base ── */
*, *::before, *::after { box-sizing: border-box; }

:root {
  --gold: #D4A843;
  --gold-light: #F0C060;
  --dark: #0B0B0B;
  --dark-2: #111111;
  --dark-3: #1A1A1A;
  --dark-4: #222222;
}

html { scroll-behavior: smooth; }

body {
  background: var(--dark);
  color: #fff;
  overflow-x: hidden;
}

::selection { background: var(--gold); color: #000; }

::-webkit-scrollbar { width: 6px; }
::-webkit-scrollbar-track { background: var(--dark-2); }
::-webkit-scrollbar-thumb { background: var(--gold); border-radius: 3px; }

/* ── Custom Cursor ── */
.cursor-dot {
  position: fixed; top: 0; left: 0; z-index: 9999;
  width: 8px; height: 8px;
  background: var(--gold);
  border-radius: 50%;
  pointer-events: none;
  transform: translate(-50%, -50%);
  transition: transform .1s;
}
.cursor-outline {
  position: fixed; top: 0; left: 0; z-index: 9998;
  width: 36px; height: 36px;
  border: 1.5px solid rgba(212,168,67,.4);
  border-radius: 50%;
  pointer-events: none;
  transform: translate(-50%, -50%);
  transition: all .12s ease-out;
}
@media (hover: none) { .cursor-dot, .cursor-outline { display: none; } }

/* ── Navbar ── */
#navbar { background: transparent; }
#navbar.scrolled {
  background: rgba(11,11,11,.92);
  backdrop-filter: blur(20px);
  border-bottom: 1px solid rgba(255,255,255,.06);
  box-shadow: 0 4px 40px rgba(0,0,0,.4);
}

.nav-link {
  color: #9ca3af;
  font-size: .875rem;
  font-weight: 500;
  transition: color .2s;
  position: relative;
}
.nav-link::after {
  content: '';
  position: absolute; bottom: -4px; left: 0; right: 0;
  height: 1.5px; background: var(--gold);
  transform: scaleX(0); transition: transform .2s;
}
.nav-link:hover { color: #fff; }
.nav-link:hover::after { transform: scaleX(1); }

/* ── Hamburger ── */
.hamburger-line {
  display: block; width: 24px; height: 2px;
  background: #fff; border-radius: 2px;
  transition: all .25s;
}
#menu-toggle.open .hamburger-line:nth-child(1) { transform: rotate(45deg) translate(5px, 5px); }
#menu-toggle.open .hamburger-line:nth-child(2) { opacity: 0; }
#menu-toggle.open .hamburger-line:nth-child(3) { transform: rotate(-45deg) translate(5px, -5px); }

/* ── Mobile Menu ── */
.mobile-menu {
  max-height: 0; overflow: hidden;
  background: rgba(11,11,11,.97);
  backdrop-filter: blur(20px);
  transition: max-height .4s ease;
  border-bottom: 1px solid rgba(255,255,255,.06);
}
.mobile-menu.open { max-height: 500px; }
.mobile-nav-link { color: #9ca3af; font-size: 1.125rem; font-weight: 500; transition: color .2s; }
.mobile-nav-link:hover { color: #fff; }

/* ── Buttons ── */
.btn-primary {
  display: inline-flex; align-items: center; gap: .5rem;
  background: var(--gold);
  color: #000; font-weight: 700; font-size: .875rem;
  padding: .625rem 1.5rem; border-radius: .75rem;
  transition: all .2s; white-space: nowrap;
}
.btn-primary:hover { background: var(--gold-light); transform: translateY(-1px); box-shadow: 0 8px 24px rgba(212,168,67,.35); }
.btn-primary:active { transform: translateY(0); }

.btn-ghost {
  display: inline-flex; align-items: center; gap: .5rem;
  border: 1.5px solid rgba(255,255,255,.12);
  color: #fff; font-weight: 600; font-size: .875rem;
  padding: .625rem 1.5rem; border-radius: .75rem;
  transition: all .2s; white-space: nowrap;
}
.btn-ghost:hover { border-color: rgba(255,255,255,.3); background: rgba(255,255,255,.05); transform: translateY(-1px); }

/* ══════════════════════════════════════════
   VÍDEO DE FUNDO GLOBAL
══════════════════════════════════════════ */
#site-video-bg {
  position: fixed;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center center;
  z-index: -2;
  pointer-events: none;
}

/* Overlay escuro sobre o vídeo — levemente reduzido para o vídeo aparecer nas seções */
#site-video-overlay {
  position: fixed;
  inset: 0;
  z-index: -1;
  background: rgba(4, 4, 4, 0.60);
  pointer-events: none;
}

/* Todas as seções totalmente transparentes → vídeo aparece em todo o site */
#sobre,
#portfolio,
#parceiros,
#contato,
footer { background: transparent !important; }

.bg-dark-2 { background: transparent !important; }

/* Borda sutil entre seções para separação visual */
#sobre     { border-top: 1px solid rgba(255,255,255,.04); }
#portfolio { border-top: 1px solid rgba(255,255,255,.04); }
#contato   { border-top: 1px solid rgba(255,255,255,.04); }
footer     { border-top: 1px solid rgba(255,255,255,.06) !important; }

/* ── Hero fallback ── */
.hero-bg {
  position: absolute; inset: 0; z-index: 0;
  background: radial-gradient(ellipse 80% 60% at 70% 50%, rgba(212,168,67,.05) 0%, transparent 60%);
}

.hero-card-glow {
  position: absolute; inset: -40px;
  background: radial-gradient(ellipse at center, rgba(212,168,67,.12) 0%, transparent 70%);
  pointer-events: none;
}

/* ── Text gradient ── */
.text-gradient {
  background: linear-gradient(135deg, var(--gold) 0%, var(--gold-light) 50%, #F8A010 100%);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
}

/* ── Seções: conter section-glow para não vazar além do viewport ── */
#servicos  { overflow: hidden; }
#portfolio { position: relative; overflow: hidden; }

/* ── Section helpers ── */
.label-tag {
  display: inline-block;
  padding: .25rem 1rem; border-radius: 999px;
  border: 1px solid rgba(212,168,67,.3);
  background: rgba(212,168,67,.06);
  color: var(--gold); font-size: .75rem; font-weight: 600;
  letter-spacing: .08em; text-transform: uppercase;
}

.section-title {
  font-family: 'Poppins', sans-serif;
  font-size: clamp(2rem, 4vw, 3rem);
  font-weight: 700; line-height: 1.15;
}

.section-sub {
  color: #6b7280; font-size: 1.125rem;
  max-width: 600px; margin: 1rem auto 0;
  line-height: 1.7;
  text-align: center;
}
/* Portfólio: subtítulo mais largo no desktop */
#portfolio .section-sub {
  max-width: 900px;
}
/* Label-tag dentro da coluna de texto: sempre centralizado */
.pf-col-text .label-tag {
  align-self: center;
}
/* Label-tag centralizado acima das duas colunas */
.pf-row-header {
  grid-column: 1 / -1;
  text-align: center;
  padding-bottom: 1rem;
  order: 0;
}

.section-glow {
  position: absolute; width: 400px; height: 400px;
  border-radius: 50%; pointer-events: none; z-index: 0;
  filter: blur(120px);
  background: rgba(212,168,67,.06);
}
.section-glow.left { top: 50%; left: -100px; transform: translateY(-50%); }
.section-glow.right { top: 50%; right: -100px; transform: translateY(-50%); }

/* ── Service Cards ── */
.service-card {
  background: rgba(15, 15, 15, 0.42);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  border: 1px solid rgba(255,255,255,.08);
  border-radius: 1.25rem; padding: 2rem;
  transition: all .3s; position: relative; overflow: hidden;
  display: flex; flex-direction: column; align-items: center; text-align: center;
}
.service-card::before {
  content: ''; position: absolute; inset: 0;
  background: linear-gradient(135deg, rgba(212,168,67,.04) 0%, transparent 60%);
  opacity: 0; transition: opacity .3s;
}
.service-card:hover { border-color: rgba(212,168,67,.2); transform: translateY(-4px); box-shadow: 0 20px 60px rgba(0,0,0,.4); }
.service-card:hover::before { opacity: 1; }
.service-card--highlight { border-color: rgba(212,168,67,.25); background: linear-gradient(135deg, rgba(212,168,67,.08) 0%, rgba(15,15,15,.42) 60%); }

.service-icon {
  width: 52px; height: 52px; border-radius: .875rem;
  display: flex; align-items: center; justify-content: center; margin-bottom: 1.25rem;
}
.service-icon svg { width: 26px; height: 26px; }

.service-title { font-family: 'Poppins', sans-serif; font-size: 1.125rem; font-weight: 700; margin-bottom: .5rem; }
.service-desc { color: #6b7280; font-size: .875rem; line-height: 1.65; margin-bottom: 1rem; }
.service-list { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: .4rem; align-items: center; }
.service-list li {
  color: #9ca3af; font-size: .8125rem;
  padding-left: 1.25rem; position: relative;
}
.service-list li::before { content: '→'; position: absolute; left: 0; color: var(--gold); font-size: .75rem; }

/* ── About ── */
.about-card-main {
  background: rgba(15, 15, 15, 0.42);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  border: 1px solid rgba(255,255,255,.08);
  border-radius: 1.5rem; padding: 1.5rem;
}
.about-feature { display: flex; align-items: flex-start; gap: .5rem; color: #d1d5db; font-size: .875rem; }

/* ── Process ── */
.process-step {
  background: rgba(15, 15, 15, 0.42);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  border: 1px solid rgba(255,255,255,.08);
  border-radius: 1.25rem; padding: 2rem;
  transition: border-color .3s;
}
.process-step:hover { border-color: rgba(212,168,67,.2); }
.process-number {
  font-family: 'Poppins', sans-serif;
  font-size: 3rem; font-weight: 900;
  background: linear-gradient(135deg, rgba(212,168,67,.3), rgba(212,168,67,.08));
  -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text;
  line-height: 1;
}

/* ── Portfolio ── */
.portfolio-card { border-radius: 1rem; overflow: hidden; }
.portfolio-img {
  width: 100%; aspect-ratio: 16/10;
  display: flex; align-items: center; justify-content: center;
  position: relative; overflow: hidden;
  border: 1px solid rgba(255,255,255,.06); border-radius: 1rem;
  transition: transform .4s;
}
/* Imagem real dentro do card */
.portfolio-real-img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center top;
  transition: transform .5s ease;
  z-index: 0;
}
.portfolio-item:hover .portfolio-real-img { transform: scale(1.06); }

/* Card clicável */
.portfolio-clickable { cursor: zoom-in; }

/* Hint "clique para ampliar" */
.portfolio-zoom-hint {
  display: inline-flex; align-items: center; gap: .35rem;
  font-size: .7rem; font-weight: 600; letter-spacing: .06em;
  text-transform: uppercase; color: rgba(212,168,67,.85);
  margin-top: .5rem;
}

/* ── Lightbox ── */
#lightbox {
  position: fixed; inset: 0; z-index: 9990;
  flex-direction: column;
  animation: lb-in .25s ease both;
}
@keyframes lb-in {
  from { opacity: 0; }
  to   { opacity: 1; }
}

.lb-overlay {
  position: absolute; inset: 0;
  background: rgba(0,0,0,.93);
  backdrop-filter: blur(14px);
}

/* Toolbar topo */
.lb-toolbar {
  position: relative; z-index: 2;
  display: flex; align-items: center; justify-content: space-between;
  padding: .875rem 1.25rem;
  background: rgba(255,255,255,.04);
  border-bottom: 1px solid rgba(255,255,255,.07);
  gap: 1rem;
}
.lb-caption-wrap { flex: 1; min-width: 0; }
.lb-actions { display: flex; gap: .5rem; flex-shrink: 0; }

.lb-btn {
  width: 40px; height: 40px; border-radius: .625rem;
  border: 1px solid rgba(255,255,255,.12);
  background: rgba(255,255,255,.06);
  color: #fff; cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  transition: background .2s, transform .2s;
}
.lb-btn:hover { background: rgba(255,255,255,.14); }
.lb-btn--close:hover { background: rgba(220,50,50,.3); transform: rotate(90deg); }

/* Nav arrows — posicionadas no #lightbox para ficarem SEMPRE visíveis */
.lb-nav {
  position: absolute; top: 50%; transform: translateY(-50%);
  width: 48px; height: 48px; border-radius: 50%;
  border: 1px solid rgba(255,255,255,.3);
  background: rgba(0,0,0,.6);
  color: #fff; cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  transition: background .2s, transform .2s;
  z-index: 9995;
}
.lb-nav:hover { background: rgba(212,168,67,.5); border-color: rgba(212,168,67,.7); }
.lb-nav:disabled { opacity: .2; cursor: default; pointer-events: none; }
.lb-nav--prev { left: .75rem; }
.lb-nav--next { right: .75rem; }
.lb-nav--prev:hover { transform: translateY(-50%) translateX(-2px); }
.lb-nav--next:hover { transform: translateY(-50%) translateX(2px); }

/* Stage central */
.lb-stage {
  position: relative; z-index: 1;
  flex: 1;
  min-height: 0;
  padding: .5rem 0;
}

.lb-img-wrap {
  position: absolute;
  inset: 0;
  display: flex; align-items: center; justify-content: center;
  transition: transform .25s ease;
}
.lb-img-wrap.zoomed { cursor: zoom-out; }

.lb-img {
  display: block;
  width: 100%; height: 100%;
  object-fit: contain;
  border-radius: .875rem;
  box-shadow: 0 24px 80px rgba(0,0,0,.8);
  border: 1px solid rgba(255,255,255,.07);
  transition: transform .3s ease;
  user-select: none;
}
.lb-img.zoomed {
  width: auto; height: auto;
  transform: scale(1.8);
}
.lb-video {
  display: block;
  width: 100%; height: 100%;
  object-fit: contain;
  border-radius: .875rem;
  box-shadow: 0 24px 80px rgba(0,0,0,.8);
  border: 1px solid rgba(255,255,255,.07);
  background: #000;
}

/* Counter */
.lb-counter {
  position: relative; z-index: 2;
  text-align: center; padding: .5rem;
  font-size: .75rem; color: rgba(255,255,255,.4);
  letter-spacing: .08em;
}

/* Filmstrip de thumbnails */
.lb-filmstrip {
  position: relative; z-index: 2;
  flex-shrink: 0;
  display: flex; align-items: center; justify-content: flex-start;
  gap: .625rem;
  padding: .625rem 1.5rem 1.125rem;
  overflow-x: auto; overflow-y: hidden;
  background: rgba(0,0,0,.25);
  border-top: 1px solid rgba(255,255,255,.05);
  scrollbar-width: thin;
  scrollbar-color: rgba(212,168,67,.35) transparent;
}
.lb-filmstrip:empty { display: none; }
.lb-filmstrip::-webkit-scrollbar { height: 4px; }
.lb-filmstrip::-webkit-scrollbar-track { background: transparent; }
.lb-filmstrip::-webkit-scrollbar-thumb { background: rgba(212,168,67,.35); border-radius: 4px; }

.lb-thumb {
  flex-shrink: 0;
  width: 88px; height: 64px;
  border-radius: .6rem;
  overflow: hidden;
  border: 2px solid rgba(255,255,255,.1);
  cursor: pointer;
  opacity: .5;
  transition: opacity .2s, border-color .2s, transform .2s;
}
.lb-thumb img {
  width: 100%; height: 100%;
  object-fit: cover; display: block;
  pointer-events: none;
}
.lb-thumb:hover { opacity: .85; transform: scale(1.07); }
.lb-thumb.lb-thumb-active {
  border-color: var(--gold);
  opacity: 1;
  transform: scale(1.08);
  box-shadow: 0 0 0 2px rgba(212,168,67,.3);
}
.portfolio-item:hover .portfolio-img { transform: scale(1.02); }
.portfolio-overlay {
  position: absolute; inset: 0;
  background: linear-gradient(to top, rgba(0,0,0,.85) 0%, transparent 50%);
  display: flex; flex-direction: column; justify-content: flex-end;
  padding: 1.25rem; opacity: 0; transition: opacity .3s;
}
.portfolio-item:hover .portfolio-overlay { opacity: 1; }
.portfolio-tag {
  display: inline-block; padding: .2rem .75rem; border-radius: 999px;
  background: rgba(212,168,67,.2); border: 1px solid rgba(212,168,67,.4);
  color: var(--gold); font-size: .7rem; font-weight: 600;
  text-transform: uppercase; letter-spacing: .06em; margin-bottom: .5rem;
  width: fit-content;
}

/* ══════════════════════════════════════════
   PORTFOLIO — LAYOUT LADO A LADO (GRID)
══════════════════════════════════════════ */

/* Cada item ocupa linha inteira e usa grid de 2 colunas iguais */
.pf-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 2rem;
  align-items: center;
  padding: 4rem 0;
  border-bottom: 1px solid rgba(255,255,255,.06);
}
.pf-row:last-child { border-bottom: none; }

/* Versão invertida: troca a posição visual de texto e moldura */
.pf-row-reverse .pf-col-text  { order: 2; }
.pf-row-reverse .pf-col-media { order: 1; }

/* Coluna de texto */
.pf-col-text {
  display: flex;
  flex-direction: column;
  gap: 1.25rem;
  align-items: center;
  text-align: center;
}

.pf-title {
  font-family: 'Poppins', sans-serif;
  font-size: clamp(1.5rem, 2.4vw, 2.1rem);
  font-weight: 700;
  line-height: 1.2;
  color: #fff;
}

.pf-desc {
  color: #9ca3af;
  font-size: .9625rem;
  line-height: 1.8;
}

.pf-list {
  list-style: none; padding: 0; margin: 0;
  display: flex; flex-direction: column; gap: .55rem;
}
.pf-list li {
  color: #d1d5db; font-size: .875rem;
  padding-left: 1.5rem; position: relative;
}
.pf-list li::before {
  content: '→'; position: absolute; left: 0;
  color: var(--gold); font-size: .75rem; top: .1rem;
}

/* Coluna da moldura */
.pf-col-media {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
}

/* A moldura em si */
.pf-moldura {
  position: relative;
  width: 100%;
  aspect-ratio: 16 / 10;
  border-radius: 1.5rem;
  overflow: hidden;
  border: 1px solid rgba(212,168,67,.22);
  box-shadow:
    0 0 0 5px rgba(212,168,67,.05),
    0 24px 64px rgba(0,0,0,.65),
    inset 0 1px 0 rgba(255,255,255,.06);
  background: #080808;
}

/* Linha dourada sutil no topo da moldura */
.pf-moldura::before {
  content: '';
  position: absolute; top: 0; left: 10%; right: 10%; height: 1px;
  background: linear-gradient(to right, transparent, rgba(212,168,67,.45), transparent);
  z-index: 3; pointer-events: none;
}

/* Imagem / vídeo dentro da moldura */
.pf-media-img {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  object-fit: cover; object-position: center top;
  display: block;
}

/* Overlay de zoom (imagens clicáveis) */
.pf-zoom-hint {
  position: absolute; inset: 0; z-index: 4;
  background: rgba(0,0,0,.48);
  backdrop-filter: blur(3px);
  display: flex; flex-direction: column;
  align-items: center; justify-content: center;
  gap: .5rem;
  color: #fff; font-size: .7rem; font-weight: 700;
  letter-spacing: .1em; text-transform: uppercase;
  opacity: 0; transition: opacity .3s;
}
.portfolio-clickable:hover .pf-zoom-hint { opacity: 1; }
.pf-zoom-hint svg { color: var(--gold); }

/* Placeholder sem imagem real */
.pf-placeholder-inner {
  position: absolute; inset: 0;
  display: flex; flex-direction: column;
  align-items: center; justify-content: center;
  gap: .75rem;
}
.pf-placeholder-label {
  font-size: .7rem; font-weight: 700; letter-spacing: .12em;
  text-transform: uppercase; color: rgba(212,168,67,.4);
}

/* Mobile: empilha em coluna */
@media (max-width: 900px) {
  .pf-row {
    grid-template-columns: 1fr !important;
    gap: 1.5rem !important;
    padding: 2.5rem 0 !important;
  }
  .pf-row-reverse .pf-col-text,
  .pf-row-reverse .pf-col-media { order: unset; }

  /* Vídeo no mobile: phone centralizado, ocupa a maior parte da coluna */
  .pf-row-video { align-items: center; }
  .pf-row-video .pf-col-media { align-items: center; justify-content: center; padding-top: 0; }
  .pf-row-video .mockup-frame-phone { width: 95% !important; max-width: 440px !important; height: auto !important; margin: 0 auto; }
}

/* ── Design Gallery (crossfade) ── */

/* Âncoras ocultas — presentes no DOM mas invisíveis */
.pf-lb-anchors {
  position: absolute;
  width: 1px; height: 1px;
  overflow: hidden; opacity: 0;
  pointer-events: none;
}

/* Galeria de design — sem moldura, só a imagem */
.pf-gallery-box {
  position: relative;
  width: 100%;
  max-width: 65%;
  margin: 0 auto;
  aspect-ratio: 3153 / 3573;
  overflow: hidden;
  background: transparent;
  cursor: zoom-in;
}

/* Sizer não é mais necessário (aspect-ratio fixo), mas mantido oculto */
.pf-fade-sizer { display: none; }

/* Imagens de crossfade — zoom 1.7x corta o fundo escuro do mockup */
.pf-fade-img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center center;
  transform: scale(1.7);
  transform-origin: center center;
  opacity: 0;
  transition: opacity .9s ease;
  pointer-events: none;
  user-select: none;
  display: block;
}
.pf-fade-img.pf-fade-active { opacity: 1; }

/* Overlay de hint visível no hover */
.pf-gallery-hint {
  position: absolute; inset: 0; z-index: 5;
  display: flex; flex-direction: column;
  align-items: center; justify-content: center; gap: .5rem;
  background: rgba(0,0,0,.38);
  backdrop-filter: blur(2px);
  color: #fff; font-size: .7rem; font-weight: 700;
  letter-spacing: .1em; text-transform: uppercase;
  opacity: 0; transition: opacity .3s;
  pointer-events: none;
}
.pf-gallery-box:hover .pf-gallery-hint { opacity: 1; }
.pf-gallery-hint svg { color: var(--gold); }

/* Linha de vídeo: phone do mesmo tamanho visual que a galeria de design */
.pf-row-video {
  align-items: center;
}
.pf-row-video .pf-col-media {
  display: flex;
  align-items: center;
  justify-content: center;
  padding-top: 0;
}
/* max-width: 65% espelha exatamente o .pf-gallery-box */
.pf-row-video .mockup-frame-phone {
  width: 100%;
  max-width: 65%;
  height: auto;
  margin: 0 auto;
}

/* ── Phone Carousel ── */
.phone-carousel {
  position: relative;
  overflow: hidden;
}
.phone-carousel-track {
  display: flex;
  width: 100%;
  height: 100%;
  transition: transform .45s cubic-bezier(.4,0,.2,1);
  will-change: transform;
}
.phone-slide {
  flex: 0 0 100%;
  width: 100%;
  height: 100%;
  position: relative;
  overflow: hidden;
  background: #000;
}
.phone-slide video {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

/* ── Container do vídeo — portrait 1280×2276, moldura dourada justa ── */
.pf-video-box {
  position: relative;
  /* altura preenche a coluna; largura calculada pelo aspect-ratio do vídeo */
  height: 100%;
  width: auto;
  aspect-ratio: 1280 / 2276;
  overflow: hidden;
  border-radius: 1rem;
  border: 1px solid rgba(212,168,67,.35);
  box-shadow: 0 16px 48px rgba(0,0,0,.55);
  background: transparent; /* sem fundo preto */
}
.pf-video-box::before {
  content: '';
  position: absolute; top: 0; left: 10%; right: 10%; height: 1px;
  background: linear-gradient(to right, transparent, rgba(212,168,67,.5), transparent);
  z-index: 3; pointer-events: none;
}

/* ── Vídeo preenche o frame exato sem borda preta ── */
.pf-video-contain {
  object-fit: cover !important;
  object-position: center center !important;
  background: transparent;
}

/* ── Portfolio Video Player ── */
.pf-play-overlay {
  position: absolute; inset: 0; z-index: 3;
  display: flex; align-items: center; justify-content: center;
  background: rgba(0,0,0,.38);
  transition: background .3s;
}
.pf-play-overlay:hover { background: rgba(0,0,0,.52); }

.pf-play-btn {
  width: 52px; height: 52px; border-radius: 50%;
  background: rgba(212,168,67,.52);
  border: none; cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  color: #000;
  box-shadow: 0 4px 24px rgba(0,0,0,.55), 0 0 0 8px rgba(212,168,67,.15);
  transition: transform .2s, background .2s, box-shadow .2s;
  position: relative; z-index: 4;
}
.pf-play-btn:hover {
  transform: scale(1.12);
  background: rgba(212,168,67,.78);
  box-shadow: 0 4px 24px rgba(0,0,0,.5), 0 0 0 10px rgba(212,168,67,.13);
}
.pf-play-btn svg { width: 22px; height: 22px; margin-left: 3px; }

.pf-pause-btn {
  position: absolute; bottom: .75rem; right: .75rem; z-index: 5;
  width: 36px; height: 36px; border-radius: .5rem;
  background: rgba(0,0,0,.55); border: 1px solid rgba(255,255,255,.15);
  cursor: pointer; color: #fff;
  display: flex; align-items: center; justify-content: center;
  transition: background .2s;
}
.pf-pause-btn:hover { background: rgba(212,168,67,.7); color: #000; }
.pf-pause-btn svg { width: 16px; height: 16px; }

/* ══════════════════════════════════════════
   PNG Mockup Frames (phone + laptop)
   Técnica: PNG fica atrás (z-index:0),
   conteúdo fica na frente (z-index:2)
   ══════════════════════════════════════════ */

.mockup-frame {
  position: relative;
  margin: 0 auto;
}

/* ── SMARTPHONE ── */
/*
  Análise de pixels do PNG 438×642 (canvas getImageData):
  • Fundo fora do celular  → alpha ≈ 0   (totalmente transparente)
  • Bezel prata lateral    → RGB(214,213,218) alpha=255 — começa em x=93 e x=346
  • Área da tela           → alpha ≈ 1   (quase transparente)
  • Camera                 → alpha=208   (visível)

  Estratégia: vídeo preenche a região do corpo do celular (left/right = 21%),
  PNG fica POR CIMA (z-index alto) — bezel prata opaco cobre as bordas laterais,
  tela transparente expõe o vídeo. Sem blend-mode, sem filtro — só a
  transparência natural do PNG.
*/
.mockup-frame-phone {
  width: 100%;
  /* 251px → altura ≈ 368px (de Produção Audiovisual até fundo do btn) */
  max-width: 251px;
  /* Proporção real do PNG */
  aspect-ratio: 438 / 642;
  /* overflow:hidden evita que o vídeo vaze fora do frame */
  overflow: hidden;
  border-radius: 44px;
  box-shadow:
    0 32px 80px rgba(0,0,0,.85),
    0 0 60px rgba(212,168,67,.06);
}

/* Vídeo alinhado à área TRANSPARENTE do PNG (medida pixel a pixel):
   canvas getImageData 438×642 revelou:
   • topo do corpo (x=100): y=80  → top  = 80/642  = 12.5% → 12%
   • base do corpo (x=100): y=526 → bottom= (642-526)/642 = 18%
   • bezel lateral: x=93-108     → left/right = 21%
   overflow:hidden + border-radius no frame corta qualquer sangramento */
.mockup-frame-phone .mockup-screen-area {
  position: absolute;
  left: 21%; right: 21%;
  top: 12%;  bottom: 18%;
  overflow: hidden;
  border-radius: 26px;
  background: #000;
  z-index: 2;
  /* Cancela propriedades fixas do pf-video-box */
  height: auto !important;
  width: auto !important;
  aspect-ratio: auto !important;
  border: none !important;
  box-shadow: none !important;
}

/* Vídeo edge-to-edge dentro do corpo — efeito borda infinita */
.mockup-frame-phone .pf-video {
  position: absolute;
  inset: 0;
  width: 100% !important;
  height: 100% !important;
  object-fit: cover !important;
  object-position: center center !important;
}

/* PNG POR CIMA do vídeo — bezel prata cobre as bordas,
   tela transparente expõe o vídeo por baixo naturalmente */
.mockup-frame-phone .mockup-behind {
  position: absolute;
  inset: 0;
  width: 100%; height: 100%;
  object-fit: contain;
  pointer-events: none;
  z-index: 10;
  /* Sem blend-mode, sem filtro — transparência nativa do PNG */
}

/* ── MACBOOK ── */
.mockup-frame-laptop {
  width: 100%;
  max-width: 520px;
  /* Proporção real do PNG: 5000×3333 = 3:2 */
  aspect-ratio: 3 / 2;
  box-shadow: 0 20px 60px rgba(0,0,0,.6);
}

/* PNG do MacBook: fica ATRÁS do conteúdo */
.mockup-overlay-png {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: contain;
  pointer-events: none;
}

.mockup-behind {
  z-index: 0;
}

/* Conteúdo da tela: fica NA FRENTE do PNG
   (proporções standard MacBook: ~7% laterais, ~4% topo, ~18% base) */
.mockup-frame-laptop .mockup-screen-area {
  position: absolute;
  top: 4%; left: 7%; right: 7%; bottom: 18%;
  overflow: hidden;
  border-radius: 4px;
  background: #0e0e14;
  z-index: 2;
}

/* ── Mini Site Preview inside MacBook screen ── */
.msc-browser-bar {
  display: flex;
  align-items: center;
  gap: 6px;
  background: #1a1a1a;
  padding: 5px 8px;
  border-bottom: 1px solid #222;
}
.msc-dots {
  display: flex; gap: 3px; flex-shrink: 0;
}
.msc-dots span {
  width: 6px; height: 6px; border-radius: 50%;
}
.msc-dots span:nth-child(1) { background: #ff5f57; }
.msc-dots span:nth-child(2) { background: #ffbd2e; }
.msc-dots span:nth-child(3) { background: #28c840; }
.msc-url-bar {
  flex: 1;
  background: #0d0d0d;
  border-radius: 4px;
  font-size: 7px;
  color: #888;
  padding: 2px 6px;
  text-align: center;
  font-family: monospace;
  letter-spacing: .02em;
}
.msc-site-body {
  background: linear-gradient(160deg, #12121e 0%, #1a1a2a 100%);
  padding: 8px;
  height: calc(100% - 28px);
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.msc-nav-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding-bottom: 5px;
  border-bottom: 1px solid rgba(255,255,255,.06);
}
.msc-nav-logo {
  font-size: 9px;
  font-weight: 900;
  color: #D4A843;
  letter-spacing: .1em;
}
.msc-nav-links {
  display: flex; gap: 5px;
}
.msc-nav-links span {
  width: 20px; height: 3px;
  background: rgba(255,255,255,.2);
  border-radius: 2px;
}
.msc-hero-row {
  display: flex;
  gap: 6px;
  flex: 1;
}
.msc-hero-text {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 4px;
  padding-top: 4px;
}
.msc-line {
  height: 4px;
  background: rgba(255,255,255,.4);
  border-radius: 2px;
}
.msc-line-lg { width: 90%; background: rgba(212,168,67,.9); }
.msc-line-md { width: 70%; }
.msc-line-sm { width: 55%; }
.msc-cta-btn {
  width: 42px; height: 10px;
  background: #D4A843;
  border-radius: 5px;
  margin-top: 4px;
}
.msc-hero-img {
  width: 38%;
  background: linear-gradient(135deg, rgba(212,168,67,.15), rgba(212,168,67,.04));
  border-radius: 6px;
  border: 1px solid rgba(212,168,67,.15);
}
.msc-cards-row {
  display: flex;
  gap: 5px;
}
.msc-card {
  flex: 1;
  height: 22px;
  background: rgba(255,255,255,.1);
  border: 1px solid rgba(255,255,255,.18);
  border-radius: 4px;
}
.msc-browser-bar { background: #1e1e2e; }
.msc-nav-links span { background: rgba(255,255,255,.4); }

/* ── Filter Buttons ── */
.filter-btn {
  padding: .5rem 1.25rem; border-radius: 999px;
  border: 1.5px solid rgba(255,255,255,.1);
  color: #9ca3af; font-size: .8125rem; font-weight: 500;
  transition: all .2s; background: transparent;
  cursor: pointer;
}
.filter-btn:hover { border-color: rgba(212,168,67,.4); color: #fff; }
.filter-btn.active { background: var(--gold); border-color: var(--gold); color: #000; font-weight: 700; }

/* ── Testimonials ── */
.testimonial-card {
  background: rgba(15, 15, 15, 0.42);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  border: 1px solid rgba(255,255,255,.08);
  border-radius: 1.25rem; padding: 2rem;
  transition: border-color .3s;
}
.testimonial-card:hover { border-color: rgba(212,168,67,.15); }

/* ── Partners Dual Marquee ── */

/* Moldura central */
.partners-frame {
  max-width: 900px;
  margin: 0 auto;
  border: 1px solid rgba(212,168,67,.18);
  border-radius: 1.5rem;
  background: rgba(255,255,255,.02);
  overflow: hidden;
  padding: 1.5rem 0 1.75rem;
  box-shadow:
    0 0 0 1px rgba(255,255,255,.03),
    0 8px 40px rgba(0,0,0,.35),
    0 0 60px rgba(212,168,67,.04);
  position: relative;
}

/* Glow sutil no topo da moldura */
.partners-frame::before {
  content: '';
  position: absolute; top: 0; left: 50%; transform: translateX(-50%);
  width: 60%; height: 1px;
  background: linear-gradient(to right, transparent, rgba(212,168,67,.4), transparent);
}

/* Label topo */
.partners-frame-label {
  display: flex; align-items: center; gap: .5rem;
  font-size: .7rem; font-weight: 600; letter-spacing: .1em;
  text-transform: uppercase; color: rgba(212,168,67,.6);
  padding: 0 1.5rem .75rem;
}

/* Separador interno entre as duas faixas */
.partners-inner-sep {
  width: calc(100% - 3rem);
  margin: .5rem 1.5rem;
  height: 1px;
  background: linear-gradient(to right, transparent, rgba(255,255,255,.06), transparent);
}

/* Faixa individual */
.partners-row {
  position: relative;
  overflow: hidden;
  padding: 10px 0;
}

/* Fade nas bordas — cor igual ao fundo da moldura */
.partners-fade-left,
.partners-fade-right {
  position: absolute; top: 0; bottom: 0; width: 80px; z-index: 2; pointer-events: none;
}
.partners-fade-left  { left:  0; background: linear-gradient(to right, rgba(18,18,20,1), transparent); }
.partners-fade-right { right: 0; background: linear-gradient(to left,  rgba(18,18,20,1), transparent); }

/* Track */
.partners-track {
  display: flex;
  align-items: center;
  width: max-content;
  will-change: transform;
}

/* Pause on hover */
.partners-frame:hover .partners-track { animation-play-state: paused; }

/* Animações */
.track-left  { animation: scroll-left  28s linear infinite; }
.track-right { animation: scroll-right 28s linear infinite; }

@keyframes scroll-left {
  from { transform: translateX(0); }
  to   { transform: translateX(-33.3334%); }
}
@keyframes scroll-right {
  from { transform: translateX(-33.3334%); }
  to   { transform: translateX(0); }
}

/* Imagens */
.partners-img {
  height: 110px;
  width: auto;
  max-width: none;
  display: block;
  flex-shrink: 0;
  object-fit: contain;
  opacity: 0.82;
  transition: opacity .35s;
  user-select: none;
  pointer-events: none;
}

.partners-frame:hover .partners-img { opacity: 1; }

/* ── Legacy logo items (kept for safety) ── */
.logo-item {
  display: flex; align-items: center; justify-content: center;
  min-width: 180px; height: 60px; padding: 0 2rem;
  color: #4b5563; font-weight: 700; font-size: .875rem;
  letter-spacing: .05em; text-transform: uppercase;
  border-right: 1px solid rgba(255,255,255,.05);
  transition: color .3s; white-space: nowrap;
}
.logo-item:hover { color: var(--gold); }

/* ── CTA Banner ── */
.cta-banner {
  background: rgba(15, 15, 15, 0.42);
  backdrop-filter: blur(16px);
  -webkit-backdrop-filter: blur(16px);
  border: 1px solid rgba(212,168,67,.18);
  border-radius: 2rem; padding: 4rem 2rem;
  position: relative; overflow: hidden;
}
.cta-glow {
  position: absolute; width: 500px; height: 300px;
  background: radial-gradient(ellipse at center, rgba(212,168,67,.1) 0%, transparent 70%);
  top: 50%; left: 50%; transform: translate(-50%, -50%);
  pointer-events: none;
}

/* ── Contact ── */
.contact-info-card {
  display: flex; align-items: center; gap: 1rem;
  background: rgba(15, 15, 15, 0.42);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  border: 1px solid rgba(255,255,255,.08);
  border-radius: 1rem; padding: 1.25rem 1.5rem;
  transition: border-color .2s;
  text-decoration: none; color: inherit;
}
.contact-info-card:hover { border-color: rgba(212,168,67,.2); }

.contact-icon {
  width: 44px; height: 44px; border-radius: .75rem;
  display: flex; align-items: center; justify-content: center; shrink: 0;
}
.contact-icon svg { width: 20px; height: 20px; }

.form-label { display: block; color: #9ca3af; font-size: .8125rem; font-weight: 500; margin-bottom: .5rem; }
.form-input {
  width: 100%; background: rgba(15,15,15,.5); border: 1.5px solid rgba(255,255,255,.08);
  border-radius: .75rem; color: #fff; font-size: .9375rem;
  padding: .875rem 1rem; outline: none; transition: border-color .2s;
  font-family: inherit;
}
.form-input:focus { border-color: rgba(212,168,67,.5); }
.form-input::placeholder { color: #4b5563; }
select.form-input option { background: var(--dark-3); }

/* ── Social Buttons ── */
.social-btn {
  width: 44px; height: 44px; border-radius: .75rem;
  border: 1.5px solid rgba(255,255,255,.08);
  display: flex; align-items: center; justify-content: center;
  color: #6b7280; transition: all .2s;
}
.social-btn:hover { border-color: rgba(212,168,67,.4); color: var(--gold); transform: translateY(-2px); }

.social-btn-sm {
  width: 36px; height: 36px; border-radius: .625rem;
  border: 1px solid rgba(255,255,255,.08);
  display: flex; align-items: center; justify-content: center;
  color: #6b7280; transition: all .2s;
}
.social-btn-sm:hover { border-color: rgba(212,168,67,.4); color: var(--gold); }

/* ── WhatsApp Float ── */
.whatsapp-float {
  position: fixed; bottom: 2rem; right: 2rem; z-index: 100;
  width: 58px; height: 58px; border-radius: 50%;
  background: #25D366;
  display: flex; align-items: center; justify-content: center;
  box-shadow: 0 4px 24px rgba(37,211,102,.4);
  transition: all .2s; color: #fff;
}
.whatsapp-float:hover { transform: scale(1.1); box-shadow: 0 8px 32px rgba(37,211,102,.5); }

/* ── Animations ── */
@keyframes fade-up {
  from { opacity: 0; transform: translateY(24px); }
  to { opacity: 1; transform: translateY(0); }
}
.animate-fade-up { animation: fade-up .6s ease both; }

@keyframes float {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-12px); }
}
.animate-float { animation: float 5s ease-in-out infinite; }

/* ── Particles canvas ── */
#particles-js canvas { position: absolute; inset: 0; }

/* ── Form success state ── */
.form-success {
  background: rgba(34,197,94,.1); border: 1px solid rgba(34,197,94,.3);
  border-radius: 1rem; padding: 2rem; text-align: center; color: #86efac;
}

/* ══════════════════════════════════════════
   RESPONSIVO — MOBILE
══════════════════════════════════════════ */

@media (max-width: 640px) {
  /* Navbar */
  #navbar .h-20 { height: 3.75rem; }
  #menu-toggle {
    background: rgba(212,168,67,.12);
    border: 1px solid rgba(212,168,67,.25);
    border-radius: .5rem;
    padding: .35rem .5rem;
  }

  /* Hero */
  #inicio { min-height: 100svh; }
  #inicio > div {
    padding-top: 5.5rem !important;
    padding-bottom: 2.5rem !important;
    grid-template-columns: 1fr !important;
    gap: 1.5rem !important;
  }
  #inicio h1 { font-size: 2.2rem !important; line-height: 1.15; }
  #inicio p  { font-size: .9375rem !important; }
  #inicio .inline-flex.rounded-full { font-size: .68rem; padding: .3rem .65rem; }
  #inicio .flex.flex-wrap.gap-3 a,
  #inicio .flex.flex-wrap.gap-4 a { width: 100%; justify-content: center; padding: .8rem 1rem !important; font-size: .9rem !important; }

  /* Hero image — menor no mobile */
  #inicio img.drop-shadow-2xl { max-width: 220px !important; }

  /* Seções */
  .py-28 { padding-top: 3.5rem !important; padding-bottom: 3.5rem !important; }
  .py-24 { padding-top: 3rem !important; padding-bottom: 3rem !important; }
  .py-20 { padding-top: 2.5rem !important; padding-bottom: 2.5rem !important; }
  .section-title { font-size: 1.75rem !important; }
  .section-sub   { font-size: .9rem !important; }
  .mb-20 { margin-bottom: 2.5rem !important; }

  /* Grids */
  .grid.lg\:grid-cols-2,
  .grid.md\:grid-cols-2 { grid-template-columns: 1fr !important; gap: 2rem !important; }
  .grid.md\:grid-cols-2.lg\:grid-cols-3 { grid-template-columns: 1fr !important; }
  .grid.md\:grid-cols-2.lg\:grid-cols-4 { grid-template-columns: 1fr 1fr !important; gap: 1rem !important; }
  .grid.md\:grid-cols-3 { grid-template-columns: 1fr !important; }
  #portfolio-grid { grid-template-columns: 1fr !important; }

  /* About */
  .about-card-main { padding: 1rem !important; }
  .about-card-main .col-span-2 { height: 9rem !important; }
  .gap-20 { gap: 2rem !important; }

  /* Portfolio pf-row */
  .pf-gallery-box { max-width: 88% !important; }
  .mockup-frame-phone { max-width: 440px !important; }
  .mockup-frame-laptop { max-width: 100% !important; }

  /* CTA */
  .cta-banner { padding: 2.5rem 1.25rem !important; border-radius: 1.25rem !important; }
  .cta-banner h2 { font-size: 1.75rem !important; }
  .cta-banner .flex.flex-wrap { flex-direction: column; }
  .cta-banner .flex.flex-wrap a { width: 100%; justify-content: center; }

  /* Contato */
  .contact-info-card { padding: 1rem !important; }
  .grid.lg\:grid-cols-2.gap-16 { gap: 2rem !important; }

  /* Parceiros */
  .partners-frame { border-radius: 1rem !important; }
  .partners-img   { height: 70px !important; }

  /* Utilitários */
  .whatsapp-float { width: 50px; height: 50px; bottom: 1.25rem; right: 1.25rem; }
  .whatsapp-float svg { width: 1.4rem; height: 1.4rem; }
  /* Lightbox mobile */
  .lb-nav          { width: 36px; height: 36px; }
  .lb-nav--prev    { left: .35rem; }
  .lb-nav--next    { right: .35rem; }
  .lb-toolbar      { padding: .5rem .75rem; }
  .lb-filmstrip    { padding: .5rem .75rem .875rem; gap: .4rem; }
  .lb-thumb        { width: 68px; height: 50px; }
  .lb-counter      { padding: .25rem; font-size: .7rem; }
  .form-input { font-size: .875rem; }
  .px-6 { padding-left: 1.25rem !important; padding-right: 1.25rem !important; }
}

@media (min-width: 641px) and (max-width: 768px) {
  #inicio h1 { font-size: 3rem !important; }
  #inicio > div { grid-template-columns: 1fr !important; gap: 2rem !important; }
  #inicio img.drop-shadow-2xl { max-width: 280px !important; }
  .grid.lg\:grid-cols-2 { grid-template-columns: 1fr !important; gap: 2.5rem !important; }
  .grid.md\:grid-cols-2.lg\:grid-cols-3 { grid-template-columns: 1fr 1fr !important; }
  .grid.md\:grid-cols-3 { grid-template-columns: 1fr 1fr !important; }
  .section-title { font-size: 2rem !important; }
  .gap-20 { gap: 2.5rem !important; }
}

html, body { max-width: 100%; overflow-x: hidden; }
