﻿/* =============== TEMA =============== */
:root {
  --paper: #EDE9DB;
  --ink: #12161A;
  --ink-weak: #4A4F55;
  --muted: #C7C0AE;
  --tile: #fff;
  --accent: #FFBE3B;
  --cta: #9c7bff;
  --stack: clamp(22px, 4vw, 50px);
  --process-bg: #C9BBFF;
  /* roxo do processo (mais claro) */
  --thumbAR: 1/1.2;
  /* formato da cÃ¡psula (1.6/1 = mais cheia) */
}

/* =============== BASE =============== */
* {
  box-sizing: border-box
}

html,
body {
  margin: 0;
  background: var(--paper);
  color: var(--ink);
  font-family: Inter, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif
}

a {
  color: inherit;
  text-decoration: none
}

a:hover {
  text-decoration: underline
}

/* =============== HEADER =============== */
.header {
  background: #232830;
  color: #fff;
  padding: 14px clamp(12px, 3vw, 28px);
  position: sticky;
  top: 0;
  z-index: 10
}

.navwrap {
  border: 2px solid rgba(237, 233, 219, .7);
  border-radius: 12px;
  padding: 10px 12px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  position: relative
}

.navwrap::after {
  content: "";
  position: absolute;
  inset: 6px;
  border: 1.6px solid rgba(199, 192, 174, .75);
  border-radius: 8px;
  pointer-events: none
}

.brand {
  display: flex;
  gap: .6rem;
  align-items: center;
  color: #ECE8FF;
  text-decoration: none
}

.brand:hover {
  color: #FFDF57
}

.menu {
  display: flex;
  gap: 28px
}

.menu a {
  color: #fff;
  text-transform: uppercase;
  font-family: "League Spartan", Inter, sans-serif;
  font-weight: 900;
  letter-spacing: .14em;
  font-size: 12px
}

/* =============== WRAPPERS =============== */
.page {
  --wrap: min(1200px, 94vw);
  padding: clamp(18px, 4vw, 38px)
}

.frame {
  width: var(--wrap);
  margin: 0 auto;
  border-radius: 16px;
  position: relative;
  padding: clamp(22px, 3.2vw, 30px) !important
}

.frame::before {
  content: "";
  position: absolute;
  inset: 0;
  border: 2px solid rgba(18, 22, 26, .28);
  border-radius: 16px;
  pointer-events: none
}

.frame::after {
  content: "";
  position: absolute;
  inset: 8px;
  border: 1.6px solid var(--muted);
  border-radius: 12px;
  opacity: .9;
  pointer-events: none
}

.grid {
  display: grid;
  grid-template-columns: 1.1fr .9fr;
  gap: clamp(16px, 3vw, 28px)
}

.frame+.clipstage {
  margin-top: var(--stack)
}

.clipstage+.blocks {
  margin-top: var(--stack)
}

/* =============== TÃTULO/HERO =============== */
.shout {
  margin: 0;
  font-family: "League Spartan", Inter, sans-serif;
  font-weight: 900;
  text-transform: uppercase;
  letter-spacing: .02em;
  line-height: .84;
  color: var(--ink);
  font-size: clamp(40px, 10vw, 120px)
}

.shout .accent {
  color: #E14A36;
  display: block
}

.hr {
  height: 2px;
  background: var(--ink);
  opacity: .55;
  margin: 14px 0
}

.meta {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 10px
}

.badge {
  font-family: "League Spartan", Inter, sans-serif;
  font-weight: 800;
  letter-spacing: .12em;
  text-transform: uppercase;
  border: 2px solid var(--ink);
  border-radius: 999px;
  padding: 8px 12px;
  background: transparent;
  font-size: 12px
}

.hero-media {
  border: 1.6px solid var(--muted);
  border-radius: 12px;
  padding: 16px;
  background: var(--tile);
  min-height: 300px;
 
}

/* substitui a regra atual da imagem do hero */
.hero-media img{
  width: 100%;
  height: 100%;
  object-position: center;
  display: block;
  border-radius: 8px;   /* preserva seu visual atual */
}

.hero-media{
  border: 1.6px solid var(--muted);
  border-radius: 12px;
  padding: 16px;              /* mantÃ©m a bordinha branca */
  background: var(--tile);
}

/* a Ã¡rea interna define o tamanho igual entre pÃ¡ginas */
.hero-media-inner{
  aspect-ratio: 1 / 1;        /* quadrado, fica consistente para FireFit */
  overflow: hidden;
  border-radius: 8px;
}

/* a imagem preenche a Ã¡rea interna */
.hero-media-inner img{
  width: 100%;
  height: 100%;
  object-fit: cover;          /* preenche (sem bordas internas) */
  object-position: center;
  display: block;
}




/* BotÃµes */
.cta-row {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
  margin-top: 10px
}

.btn {
  display: inline-flex;
  align-items: center;
  gap: .55rem;
  padding: .7rem 1rem;
  border: 2px solid var(--ink);
  border-radius: 10px;
  background: transparent;
  color: var(--ink);
  font-weight: 800;
  font-family: "League Spartan", Inter, sans-serif;
  letter-spacing: .08em;
  text-transform: uppercase;
  font-size: 12px;
  cursor: pointer;
  transition: transform .14s, filter .18s, background .18s, color .18s, border-color .18s
}

.btn:hover {
  color: var(--accent);
  border-color: var(--accent);
  filter: brightness(1.06);
  transform: translateY(-1px)
}

.btn-cta {
  background: var(--cta);
  border-color: var(--cta);
  color: #fff
}

.btn-cta:hover {
  background: transparent;
  color: var(--cta)
}

.btn-ghost {
  border-color: var(--muted);
  color: var(--ink-weak)
}

.btn.is-disabled {
  opacity: .45;
  pointer-events: none;
  /* nÃ£o recebe clique */
  cursor: not-allowed;
  filter: grayscale(.2);
}


/* =============== CLIPSTAGE (FINAL â†” PROCESSO) =============== */
/* Card com borda dupla */
.clipstage {
  width: min(100%, 980px);
  margin: 0 auto;
  position: relative;
  padding: clamp(12px, 2.2vw, 16px)
}

.clipstage::before {
  content: "";
  position: absolute;
  inset: 0;
  border: 2px solid rgba(18, 22, 26, .28);
  border-radius: 16px;
  pointer-events: none
}

.clipstage::after {
  content: "";
  position: absolute;
  inset: 8px;
  border: 1.6px solid var(--muted);
  border-radius: 12px;
  pointer-events: none
}

.clipstage__wrap {
  position: relative;
  overflow: hidden;
  border-radius: 12px
}



/* Ãrea Ãºtil do stage */
#clipstage {
  --stageH: 420px;
  /* JS atualiza; 420px fallback */
  block-size: var(--stageH);
  inline-size: 100%;
  position: relative;
  overflow: hidden;
  border-radius: 12px;
  background: transparent;
}

/* Empilha as duas sempre; FINAL por cima como â€œtampaâ€ */
#clipstage {
  position: relative
}

#clipstage .view {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
}

/* PROCESSO sempre renderizado por baixo e interativo */
#clipstage .view-process {
  z-index: 1;
  opacity: 1;
  pointer-events: auto;
}

/* FINAL fica por cima; comeÃ§a opaco (visÃ­vel) */
#clipstage .view-final {
  z-index: 2;
  opacity: 1;
  pointer-events: auto;
  transition: opacity .25s ease;
}

/* Quando estivermos em modo PROCESSO, sÃ³ desbota a FINAL */
#clipstage.stage--process .view-final {
  opacity: 0;
  pointer-events: none;
  /* tampa some, galeria aparece */
}



/* Tampa sÃ³lida para vedar qualquer â€œburacoâ€ da mÃ¡scara durante o morph */
#morphCover {
  position: absolute;
  inset: 0;
  background: var(--paper, #EDE9DB);
  z-index: 1;
  pointer-events: none
}



#lottieMorph svg {
  width: 100%;
  height: 100%;
  display: block
}


/* FINAL */
.view-final {
  position: relative
}

.view-final .btn-cta {
  position: absolute;
  left: 50%;
  bottom: 12px;
  transform: translateX(-50%);
  z-index: 3;
  margin: 0
}

/* Lottie por cima da imagem (frame 0 como poster) */
#lottieMorph {
  position: absolute;
  inset: 0;
  pointer-events: none;
  display: block
}

#lottieMorph svg {
  width: 100%;
  height: 100%;
  display: block
}

/* PROCESSO â€” roxo ocupa 100%; cÃ¡psulas centralizadas e rolÃ¡veis */
.view-process {
  position: relative;
  display: grid;
  place-items: center
}

#clipstage .clipstrip {
  height: 100%;
  display: flex;
  align-items: center;
  gap: clamp(14px, 2.4vw, 26px);
  overflow-x: auto;
  overflow-y: hidden;
  scroll-snap-type: x mandatory;
  overscroll-behavior-x: contain;
  padding: clamp(10px, 1.6vw, 14px) clamp(20px, 3vw, 36px);
  border-radius: 12px;
  border: 1.6px solid var(--muted);
  background:
    radial-gradient(1200px 200px at 50% -20%, rgba(0, 0, 0, .04), transparent 60%),
    var(--process-bg);
}

/* centraliza quando sobra espaÃ§o, mantÃ©m scroll quando faltar */
#clipstage .clipstrip::before,
#clipstage .clipstrip::after {
  content: "";
  flex: 1 0 0
}

/* CÃ¡psulas */
#clipstage .clipthumb {
  height: calc(100% - 20px);
  aspect-ratio: var(--thumbAR);
  flex: 0 0 auto;
  display: grid;
  place-items: center;
  border: 2px solid rgba(0, 0, 0, .10);
  border-radius: 999px;
  overflow: hidden;
  background: #fff;
  box-shadow: 0 10px 24px rgba(0, 0, 0, .12);
  scroll-snap-align: center;
  transition: transform .25s ease, filter .2s ease;
  isolation: isolate;
  contain: paint;


}

#clipstage .clipthumb:hover {
  transform: none;
  /* cÃ¡psula nÃ£o se move mais */
  filter: saturate(1.03);
}

#clipstage .clipthumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block
}

/* BotÃ£o Voltar sobreposto */
#btnBack {
  position: absolute;
  left: 50%;
  bottom: 12px;
  transform: translateX(-50%);
  z-index: 4
}

/* Scrollbar discreto (WebKit + Firefox) */
#clipstage .clipstrip {
  scrollbar-width: thin;
  scrollbar-color: rgba(0, 0, 0, .35) transparent
}

#clipstage .clipstrip::-webkit-scrollbar {
  height: 8px
}

#clipstage .clipstrip::-webkit-scrollbar-track {
  background: transparent
}

#clipstage .clipstrip::-webkit-scrollbar-thumb {
  background: rgba(0, 0, 0, .35);
  border-radius: 999px;
  border: 2px solid transparent;
  background-clip: padding-box
}

/* --- AJUSTE DE LARGURA DO BLOCO ROXO + CÃPSULAS --- */
#clipstage {
  --stageInnerW: min(97%, 985px);
}

#clipstage .clipstrip {
  width: var(--stageInnerW) !important;
  margin-inline: auto !important;
}

@media (min-width: 980px) {
  #clipstage .clipthumb {
    width: calc((100% - (var(--padX, 32px) * 2) - (var(--gapX, 24px) * 2)) / 3) !important;
    height: auto !important;
    aspect-ratio: var(--thumbAR, 1 / 1.6) !important;
  }
}



/* quando a galeria estiver ativa, sÃ³ â€œapagamosâ€ a tampa (Final) */
#clipstage.stage--process .view-final {
  opacity: 0;
  pointer-events: none;
  transition: opacity .25s ease;
}


/* (opcional) desligar o snap quando estiver num modo temporÃ¡rio seu */
#clipstage .clipstrip.strip--nosnap {
  scroll-snap-type: none;
}

/* â”€â”€ Edge-scroll: zonas laterais â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
#clipstage .clipstrip {
  position: relative;
}

/* garante contexto */
#clipstage .edge-scroll {
  position: absolute;
  top: 0;
  bottom: 0;
  width: min(80px, 10%);

}

#clipstage .edge-scroll.left {
  left: 0;
}

#clipstage .edge-scroll.right {
  right: 0;
}

/* brilho suave pra dar feedback (bem discreto) */
#clipstage .edge-scroll::after {
  content: "";
  position: absolute;
  inset: 0;
  opacity: 0;
  transition: opacity .2s;
  background: linear-gradient(to right, rgba(0, 0, 0, .08), transparent);
}

#clipstage .edge-scroll.right::after {
  background: linear-gradient(to left, rgba(0, 0, 0, .08), transparent);
}

#clipstage .edge-scroll:hover::after {
  opacity: .12;
}



/* impede o drag nativo de imagens na strip (Safari/Chrome) */
#clipstage .clipstrip img {
  -webkit-user-drag: none;
  user-drag: none;
}




/* =============== INFOS/PAGER/FOOTER (compacto) =============== */
.blocks {
  width: var(--wrap);
  margin: 18px auto 0;
  border-top: 2px solid var(--ink);
  border-bottom: 2px solid var(--ink)
}

.row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
  padding: 12px 6px;
  border-top: 1.6px solid rgba(18, 22, 26, .35)
}

.row:first-child {
  border-top: 0
}

.row h3 {
  margin: 0;
  font-size: 14px;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: #2a2f34;
  font-weight: 800
}

.row p,
.row ul {
  margin: 4px 0 0;
  line-height: 1.7
}

ul.flat {
  list-style: none;
  padding: 0;
  margin: 4px 0 0;
  display: flex;
  gap: 12px;
  flex-wrap: wrap
}

ul.flat li {
  font-family: "League Spartan", Inter, sans-serif;
  font-weight: 800;
  letter-spacing: .1em;
  text-transform: uppercase;
  border: 2px solid var(--ink);
  border-radius: 999px;
  padding: 6px 10px;
  font-size: 12px
}

.pager {
  width: var(--wrap);
  margin: 26px auto 10px;
  display: flex;
  justify-content: space-between;
  gap: 12px
}

.pager a {
  flex: 1;
  display: flex;
  justify-content: center;
  gap: 8px;
  padding: 12px;
  border-radius: 8px;
  border: 2px solid var(--ink);
  color: var(--ink)
}

.pager a:hover {
  color: var(--accent);
  border-color: var(--accent)
}

.footer {
  margin-top: clamp(24px, 6vw, 72px);
  padding: 18px clamp(18px, 4vw, 28px);
  background: #232830;
  color: #fff;
  text-align: center;
  /* novo */
  display: flex;
  flex-direction: column;
  /* novo */
  align-items: center;
  /* novo */
}

.footer-copy {
  max-width: min(1200px, 94vw);
  margin: 8px auto 0;
  border-top: 1px dashed rgba(255, 255, 255, .25);
  padding-top: 10px;
  opacity: .9
}

/* =============== MODAL =============== */
#overlay {
  display: none;
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, .55);
  backdrop-filter: blur(2px);
  z-index: 50;
  align-items: center;
  justify-content: center;
  padding: 20px
}

#modal {
  width: min(1100px, 96vw);
  background: #fff;
  border-radius: 12px;
  overflow: hidden;
  border: 2px solid #000;
  position: relative
}

#modalContent {
  aspect-ratio: 16/9;
  width: 100%;
  background: #000
}

#modalContent>* {
  opacity: 0;
  animation: modalIn .28s ease-out forwards
}

@keyframes modalIn {
  from {
    opacity: 0;
    transform: scale(.985)
  }

  to {
    opacity: 1;
    transform: scale(1)
  }
}

/* =============== RESPONSIVO =============== */

/* Tablets/â‰¤920â€“980px: centraliza herÃ³i, empilha linhas, ajustes gerais */
@media (max-width: 980px) {
  .grid {
    grid-template-columns: 1fr !important;
  }

  .shout {
    font-size: clamp(36px, 10vw, 64px) !important;
    line-height: .95 !important;
  }

  .hero-left {
    max-width: 92vw !important;
    margin: 0 auto !important;
    text-align: center !important;
  }

  .hero-left .about-actions,
  .cta-row {
    align-self: center !important;
    justify-content: center !important;
    width: auto !important;
    margin-top: 12px !important;
  }

  .row {
    grid-template-columns: 1fr !important;
    gap: 8px !important;
  }

  .row h3 {
    margin-bottom: 4px !important;
  }

  .footer-copy {
    font-size: 13px !important;
    margin-top: 20px !important;
    padding-top: 10px !important;
  }

  /* paddings e gaps usados no cÃ¡lculo das cÃ¡psulas */
  #clipstage .clipstrip {
    --padX: clamp(20px, 3vw, 36px);
    --gapX: clamp(14px, 2.4vw, 26px);
    padding-inline: var(--padX) !important;
    gap: var(--gapX) !important;
  }
}

/* Desktop/â‰¥980px: 3 cÃ¡psulas por â€œlinhaâ€ (cÃ¡lculo por largura disponÃ­vel) */
@media (min-width: 980px) {
  #clipstage .clipthumb {
    width: calc((100% - (var(--padX, 32px) * 2) - (var(--gapX, 24px) * 2)) / 3) !important;
    height: auto !important;
    aspect-ratio: var(--thumbAR, 1 / 1.6) !important;
    flex: 0 0 auto !important;
  }
}

/* Mobiles/<979px: cÃ¡psulas mais confortÃ¡veis e rolÃ¡veis */
@media (max-width: 979px) {
  #clipstage .clipthumb {
    width: min(38vw, 320px) !important;
    height: auto !important;
    aspect-ratio: var(--thumbAR, 1 / 1.6) !important;
    flex: 0 0 auto !important;
  }
}

/* Mobiles pequenos/<768px: ajustes finos */
@media (max-width: 768px) {
  .page {
    padding: clamp(14px, 5vw, 22px) !important;
  }

  .hero-left {
    max-width: 94vw !important;
  }

  .btn {
    padding: .7rem 1.2rem !important;
    font-size: 13px !important;
  }

  .projects .posters-grid,
  .projects .caps-grid,
  .posters-grid {
    grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)) !important;
    gap: 12px !important;
  }
}



/* Hover interno na imagem â€” nÃ£o vaza por causa do overflow da cÃ¡psula */
#clipstrip .clipthumb {
  overflow: hidden;
  cursor: pointer;
}

#clipstrip .clipthumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform .25s ease, filter .25s ease;
}

#clipstrip .clipthumb:hover img {
  transform: scale(1.02);
  filter: saturate(1.05);
}

/* ===== COMPARADOR BEFORE/AFTER dentro do modal ===== */
.compare-wrap {
  position: relative;
  width: 100%;
  height: auto;
  max-width: 96vw;
  max-height: 86vh;
  overflow: hidden;
  cursor: ew-resize;
}

.compare-wrap img {
  width: 100%;
  height: auto;
  object-fit: contain;
  display: block;
  pointer-events: none;
}

.compare-wrap .after {
  position: absolute;
  inset: 0;
  clip-path: inset(0 50% 0 0);
}

.compare-handle {
  position: absolute;
  top: 0;
  bottom: 0;
  left: 50%;
  width: 3px;
  background: #fff;
  box-shadow: 0 0 0 1px rgba(0, 0, 0, .5);
  pointer-events: none;
}

/* compare: evitar seleÃ§Ã£o de texto/arrasto incÃ´modo */
.compare-wrap,
.compare-handle {
  -webkit-user-select: none;
  user-select: none;
}

/* ===== Modal: navegaÃ§Ã£o de imagens ===== */
.modal-nav {
  display: none;
  /* escondido por padrÃ£o */
}

#modal.is-image .modal-nav {
  display: flex;
}

.nav-btn {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  z-index: 6;
  opacity: .95;
  backdrop-filter: blur(2px);
}

#navPrev {
  left: 8px;
}

#navNext {
  right: 8px;
}

/* BotÃ£o fechar: sempre por cima do conteÃºdo do modal */
#modal {
  position: relative;
}

#modalContent {
  position: relative;
  z-index: 1;
}

#closeModal {
  position: absolute;
  right: 10px;
  top: 10px;
  z-index: 9;
  /* acima do compare e do conteÃºdo */
  pointer-events: auto;
  /* garante clique */
  cursor: pointer;

  /* visual discreto porÃ©m legÃ­vel */
  background: rgba(0, 0, 0, .55);
  color: #fff;
  border-color: rgba(255, 255, 255, .45);
  text-shadow: 0 1px 0 rgba(0, 0, 0, .35);
  box-shadow: 0 6px 18px rgba(0, 0, 0, .25) inset;
}

#closeModal:hover {
  background: rgba(0, 0, 0, .7);
  border-color: rgba(255, 255, 255, .6);
}

/* garante que as setas nÃ£o fiquem acima do "Fechar" */
.nav-btn {
  z-index: 6;
}

/* Lottie sempre visÃ­vel acima do conteÃºdo durante o anim-out */
#lottieMorph {
  position: absolute;
  inset: 0;
  z-index: 9;
  pointer-events: none;
}



/* "Processo" visÃ­vel e clicÃ¡vel por cima do Lottie */
.view-final .btn-cta#btnToggle {
  position: absolute !important;
  /* mantÃ©m o layout original */
  left: 50%;
  bottom: 12px;
  transform: translateX(-50%);
  z-index: 20 !important;
  /* acima do Lottie */
  opacity: 1;
  filter: none;
}

/* "Voltar" tambÃ©m acima quando a galeria estÃ¡ aberta */
#btnBack {
  position: absolute;
  z-index: 20;
}

/* (opcional) reforÃ§o de contraste, sem perder a estÃ©tica */
.view-final .btn-cta#btnToggle {
  background: var(--cta);
  color: #fff;
  border-color: var(--cta);
}

.view-final .btn-cta#btnToggle:hover {
  background: transparent;
  color: var(--cta);
}

/* vÃ­deo sempre centralizado e contido no modal */
#modal.is-video #modalContent {
  display: grid;
  place-items: center;
  padding: 8px;
  overflow: visible;
}

#modal.is-video {
  width: auto;
  max-width: 96vw;
  /* ajuste se quiser mais estreito */
}

#modal.is-video video {
  width: auto;
  height: auto;
  max-width: 96vw;
  max-height: 90vh;
  object-fit: contain;
  display: block;
}

/* PDF sempre centralizado e contido no modal */
#modal.is-pdf {
  width: auto;
  max-width: min(1100px, 96vw);
  /* ajuste a largura mÃ¡xima se quiser */
}

#modal.is-pdf #modalContent {
  display: grid;
  place-items: center;
  padding: 8px;
}

#modal.is-pdf iframe {
  width: min(1100px, 96vw) !important;
  /* cabe na viewport */
  height: min(86vh, 1200px) !important;
  /* prioriza caber na altura */
  border: 0;
  display: block;
}



/* A11y: foco visÃ­vel e setas desativadas nas pontas */
#closeModal:focus-visible,
.nav-btn:focus-visible {
  outline: 2px solid #9c5bff;
  outline-offset: 2px;
  border-radius: 10px;
}

.nav-btn[aria-disabled="true"] {
  opacity: .35;
  pointer-events: none;
  filter: grayscale(1);
}

/* â€”â€”â€” ESTILO VISUAL â€”â€”â€” */
.row-style {
  --labelClr: var(--ink-weak);
}

/* Tipografia */
.typefaces {
  display: grid;
  gap: 10px;
  margin-bottom: 14px;
}

.type-sample {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.type-sample .label {
  font-size: 13px;
  font-weight: 600;
  color: var(--labelClr);
  letter-spacing: .03em;
}

.type-sample .preview {
  font-size: 26px;
  line-height: 1.2;
  color: var(--ink);
}

/* Aplica as fontes reais */
.type-sample.spartan .preview {
  font-family: "DissolveRegular", Inter, sans-serif;
  font-weight: 900;
  text-transform: uppercase;
  letter-spacing: .02em;
}

.type-sample.inter .preview {
  font-family: Inter, sans-serif;
  font-weight: 400;
  font-size: 18px;
}

/* Paleta de cores */
.palette {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  margin-top: 4px;
}

.swatch {
  width: 38px;
  height: 38px;
  border-radius: 10px;
  background: var(--c);
  border: 2px solid rgba(0, 0, 0, .25);
  box-shadow: 0 2px 6px rgba(0, 0, 0, .1);
  transition: transform .2s ease, box-shadow .2s ease;
  cursor: default;
}

.swatch:hover {
  transform: translateY(-2px);
  box-shadow: 0 4px 10px rgba(0, 0, 0, .2);
}

/* ============================
   RESPONSIVO â€” PROJETOS
   ============================ */

/* tablets e celulares grandes */
@media (max-width: 980px) {

  /* herÃ³i centralizado */
  .hero-left {
    max-width: 92vw !important;
    margin: 0 auto !important;
    text-align: center !important;
  }

  .hero-left .about-actions,
  .cta-row {
    align-self: center !important;
    justify-content: center !important;
    width: auto !important;
    margin-top: 12px !important;
  }

  /* tÃ­tulo grande reduzido */
  .shout {
    font-size: clamp(36px, 10vw, 64px) !important;
    line-height: .95 !important;
  }

  /* linhas (overview, papel etc) empilham */
  .row {
    grid-template-columns: 1fr !important;
    gap: 8px !important;
  }

  .row h3 {
    margin-bottom: 4px !important;
  }

  /* cÃ¡psulas: ficam menores */
  .thumb.capsula {
    width: clamp(160px, 42vw, 240px) !important;
    aspect-ratio: 2 / 3 !important;
  }

  /* footer mais compacto */
  .footer-copy {
    font-size: 13px !important;
    margin-top: 20px !important;
    padding-top: 10px !important;
  }
}

/* celulares menores */
@media (max-width: 768px) {
  .page {
    padding: clamp(14px, 5vw, 22px) !important;
  }

  .hero-left {
    max-width: 94vw !important;
  }

  .btn {
    padding: .7rem 1.2rem !important;
    font-size: 13px !important;
  }

  .projects .posters-grid,
  .projects .caps-grid,
  .posters-grid {
    grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)) !important;
    gap: 12px !important;
  }
}







.proj-nav__toggle {
  display: none;
}

/* HERO sem mÃ­dia (texto ocupa tudo) */
.hero-text-only > .grid{
  grid-template-columns: 1fr;   /* uma coluna sÃ³ */
}

.hero-text-only .shout{
  max-width: none;              /* libera o tÃ­tulo */
}

.hero-text-only .meta,
.hero-text-only .cta-row{
  max-width: none;
}

@media (max-width: 980px) {
  .page {
    padding: 16px !important;
  }

  .frame {
    width: 100% !important;
    padding: 18px !important;
    border-radius: 14px !important;
  }

  .frame::after {
    inset: 6px !important;
  }

  .grid {
    grid-template-columns: 1fr !important;
    gap: 18px !important;
  }

  .hero-left {
    max-width: 100% !important;
    margin: 0 !important;
    text-align: left !important;
  }

  .shout {
    font-size: clamp(34px, 12vw, 64px) !important;
    line-height: 0.9 !important;
    text-wrap: balance;
  }

  .meta {
    gap: 8px !important;
  }

  .badge {
    font-size: 11px !important;
    padding: 7px 10px !important;
  }

  .cta-row,
  .hero-left .about-actions {
    justify-content: flex-start !important;
    align-self: flex-start !important;
    width: 100% !important;
    gap: 10px !important;
  }

  .btn {
    min-height: 44px;
    padding: 0.78rem 1rem !important;
    font-size: 12px !important;
  }

  .hero-media {
    padding: 12px !important;
    min-height: auto !important;
  }

  .hero-media-inner {
    aspect-ratio: 1 / 1 !important;
  }

  .clipstage {
    width: 100% !important;
    padding: 10px !important;
  }

  .clipstage::after {
    inset: 6px !important;
  }

  #clipstage {
    --stageH: 320px !important;
  }

  #clipstage .clipstrip {
    width: 100% !important;
    padding-inline: 18px !important;
    gap: 14px !important;
  }

  #clipstage .clipthumb {
    width: min(46vw, 220px) !important;
    height: auto !important;
    aspect-ratio: var(--thumbAR, 1 / 1.2) !important;
    flex: 0 0 auto !important;
  }

  .row {
    grid-template-columns: 1fr !important;
    gap: 8px !important;
    padding: 12px 0 !important;
  }

  .row h3 {
    margin-bottom: 2px !important;
  }

  .pager {
    flex-direction: column !important;
  }

  .pager a {
    width: 100% !important;
  }

  #modal {
    width: min(96vw, 96vw) !important;
  }

  #modalContent {
    aspect-ratio: auto !important;
  }

  #modal.is-video video,
  #modal.is-image img,
  #modal.is-pdf iframe {
    max-width: 100% !important;
  }
}

@media (max-width: 768px) {
  .page {
    padding: 14px !important;
  }

  .frame {
    padding: 16px !important;
  }

  .shout {
    font-size: clamp(30px, 13vw, 48px) !important;
    line-height: 0.92 !important;
  }

  .badge {
    font-size: 10px !important;
    letter-spacing: 0.08em !important;
  }

  .btn,
  .btn-cta,
  .btn-ghost {
    width: 100%;
    justify-content: center;
  }

  #clipstage {
    --stageH: 280px !important;
  }

  #clipstage .clipstrip {
    padding-inline: 14px !important;
    gap: 12px !important;
  }

  #clipstage .clipthumb {
    width: min(56vw, 210px) !important;
  }

  .view-final .btn-cta,
  .view-final .btn-cta#btnToggle,
  #btnBack {
    left: 50% !important;
    bottom: 12px !important;
    transform: translateX(-50%) !important;
    width: auto !important;
    min-width: 168px !important;
    max-width: calc(100% - 56px) !important;
    justify-content: center;
  }

  .footer {
    padding-inline: 14px !important;
  }

  .footer-copy {
    font-size: 12px !important;
  }
}

@media (max-width: 480px) {
  .navwrap {
    padding: 9px 10px !important;
  }

  .brand {
    gap: 0.45rem !important;
  }

  .menu a {
    font-size: 11px !important;
  }

  .frame {
    border-radius: 12px !important;
  }

  .frame::before {
    border-radius: 12px !important;
  }

  .frame::after {
    border-radius: 9px !important;
  }

  .shout {
    font-size: clamp(28px, 12vw, 40px) !important;
  }

  #clipstage {
    --stageH: 250px !important;
  }

  #clipstage .clipthumb {
    width: 62vw !important;
  }
}

@media (max-width: 980px) {
  .header.proj-nav {
    padding: 12px 12px 0 !important;
    z-index: 80 !important;
  }

  .header.proj-nav .navwrap {
    min-height: 52px;
    padding: 10px 12px !important;
    gap: 10px !important;
    flex-wrap: nowrap !important;
    align-items: center !important;
  }

  .header.proj-nav .brand {
    min-width: 0;
    flex: 1 1 auto;
  }

  .header.proj-nav .brand span {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }

  .proj-nav__toggle {
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
    flex: 0 0 auto;
    margin-left: auto;
    min-width: 42px;
    min-height: 42px;
    padding: 0;
  }

  /* menu fica escondido por padrÃ£o */
  .header.proj-nav nav#menuProj.menu {
    display: none !important;
    position: absolute;
    left: 12px;
    right: 12px;
    top: calc(100% + 8px);
    flex-direction: column;
    gap: 8px;
    padding: 10px;
    background: #fff !important;
    color: var(--ink) !important;
    border: 1.5px solid var(--ink) !important;
    border-radius: 12px;
    box-shadow: 0 10px 30px rgba(0, 0, 0, .12), 0 2px 10px rgba(0, 0, 0, .08) !important;
    z-index: 90;
  }

    .header.proj-nav.proj-nav--open nav#menuProj.menu,
  .header.proj-nav.is-menu-open nav#menuProj.menu {
    display: flex !important;
  }

  .header.proj-nav.proj-nav--open nav#menuProj.menu a,
  .header.proj-nav.is-menu-open nav#menuProj.menu a {
    color: var(--ink) !important;
    text-shadow: none !important;
    opacity: 1 !important;
    padding: 10px 8px;
    border-radius: 8px;
  }

  .header.proj-nav.proj-nav--open nav#menuProj.menu a:hover,
  .header.proj-nav.is-menu-open nav#menuProj.menu a:hover {
    background: rgba(0, 0, 0, .05) !important;
  }

  .header.proj-nav.proj-nav--open nav#menuProj.menu::before,
  .header.proj-nav.is-menu-open nav#menuProj.menu::before {
    content: "";
    position: absolute;
    top: -7px;
    right: 18px;
    width: 12px;
    height: 12px;
    background: #fff;
    border-left: 1.5px solid var(--ink);
    border-top: 1.5px solid var(--ink);
    transform: rotate(45deg);
  }
}

@media (max-width: 980px) {
  #clipstage {
    --stageH: clamp(260px, 72vw, 360px) !important;
    overflow: hidden !important;
    border-radius: 12px !important;
  }

  #clipstage .view-final,
  #clipstage .view-process,
  #clipstage #lottieMorph {
    position: absolute !important;
    inset: 0 !important;
    width: 100% !important;
    height: 100% !important;
  }

  #clipstage .view-final {
    overflow: hidden !important;
    border-radius: 12px !important;
  }

  #clipstage .view-final picture,
  #clipstage .view-final img,
  #clipstage .view-final video,
  #clipstage .view-final canvas,
  #clipstage #lottieMorph svg {
    width: 100% !important;
    height: 100% !important;
    display: block !important;
  }

  #clipstage .view-final img,
  #clipstage .view-final video,
  #clipstage .view-final canvas {
    object-fit: cover !important;
    object-position: center !important;
  }

  .view-final .btn-cta,
  .view-final .btn-cta#btnToggle {
    left: 50% !important;
    bottom: 12px !important;
    transform: translateX(-50%) !important;
    width: calc(100% - 32px);
    max-width: 250px;
    justify-content: center;
    z-index: 20 !important;
  }
}

@media (max-width: 980px) {
  #overlay {
    padding: 12px !important;
    align-items: center !important;
    justify-content: center !important;
  }

  #modal {
    margin: 0 auto !important;
  }

  #modal.is-video {
    width: min(92vw, 720px) !important;
    max-width: 92vw !important;
    overflow: visible !important;
  }

  #modal.is-video #modalContent {
    aspect-ratio: auto !important;
    width: 100% !important;
    min-height: 0 !important;
    display: grid !important;
    place-items: center !important;
    padding: 12px !important;
    background: #000 !important;
  }

  #modal.is-video video {
    width: 100% !important;
    height: auto !important;
    max-width: 100% !important;
    max-height: 78vh !important;
    display: block !important;
    margin: 0 auto !important;
    object-fit: contain !important;
  }

  #closeModal {
    right: 8px !important;
    top: 8px !important;
    z-index: 99 !important;
  }
}

@media (max-width: 640px) {
  #clipstage {
    --stageH: clamp(240px, 78vw, 320px) !important;
  }

  #modal.is-video {
    width: 94vw !important;
    max-width: 94vw !important;
  }

  #modal.is-video #modalContent {
    padding: 10px !important;
  }

  #modal.is-video video {
    max-height: 74vh !important;
  }
}

@media (max-width: 900px) {
  .header.proj-nav {
    background: #232830 !important;
    padding: 16px 12px 0 !important;
    z-index: 80 !important;
  }

  .header.proj-nav .navwrap {
    display: flex !important;
    align-items: center !important;
    justify-content: space-between !important;
    gap: 10px !important;
    min-height: 52px !important;
    padding: 10px 12px !important;
    border: 2px solid rgba(237, 233, 219, 0.7) !important;
    border-radius: 14px !important;
    background: transparent !important;
    position: relative !important;
  }

  .header.proj-nav .navwrap::after {
    content: "";
    position: absolute;
    inset: 6px;
    border: 1px solid rgba(199, 192, 174, 0.75) !important;
    border-radius: 10px !important;
    pointer-events: none;
  }

  /* link da marca sÃ³ no tamanho do conteÃºdo */
  .header.proj-nav .brand {
    display: inline-flex !important;
    align-items: center !important;
    gap: 8px !important;
    flex: 0 0 auto !important;
    width: fit-content !important;
    max-width: calc(100% - 54px) !important;
    min-width: 0 !important;
    padding-left: 0 !important;
    color: #e6e3d6 !important;
    text-decoration: none !important;
    position: relative;
    z-index: 2;
  }

  .header.proj-nav .brand span {
    display: inline !important;
    color: #e6e3d6 !important;
    font-size: 15px !important;
    font-weight: 600 !important;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }

  /* botÃ£o hamburguer */
  .proj-nav__toggle {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    flex-direction: column !important;
    gap: 4px !important;
    flex: 0 0 40px !important;
    width: 40px !important;
    height: 40px !important;
    min-width: 40px !important;
    min-height: 40px !important;
    margin-left: auto !important;
    padding: 0 !important;
    border: 0 !important;
    background: transparent !important;
    box-shadow: none !important;
    appearance: none !important;
    -webkit-appearance: none !important;
    color: #e6e3d6 !important;
    position: relative;
    z-index: 2;
  }

  .proj-nav__toggle svg,
  .proj-nav__toggle i {
    display: none !important;
  }

  .proj-nav__toggle span {
    display: block !important;
    width: 18px;
    height: 2px;
    border-radius: 999px;
    background: currentColor;
    flex: 0 0 auto;
  }

  .proj-nav__toggle:hover,
  .proj-nav__toggle:focus,
  .proj-nav__toggle:active {
    background: transparent !important;
    border: 0 !important;
    box-shadow: none !important;
    outline: none !important;
  }

  /* menu fechado */
  .header.proj-nav nav#menuProj.menu {
    display: none !important;
    position: absolute !important;
    left: 0 !important;
    right: 0 !important;
    top: calc(100% + 8px) !important;
    flex-direction: column !important;
    gap: 14px !important;
    padding: 16px 18px 18px !important;
    background: #232830 !important;
    border: 2px solid rgba(237, 233, 219, 0.7) !important;
    border-radius: 14px !important;
    box-shadow: none !important;
    z-index: 90 !important;
  }

  .header.proj-nav nav#menuProj.menu::before {
    display: none !important;
  }

  .header.proj-nav nav#menuProj.menu::after {
    content: "";
    position: absolute;
    inset: 6px;
    border: 1px solid rgba(199, 192, 174, 0.75) !important;
    border-radius: 10px !important;
    pointer-events: none;
  }

    .header.proj-nav.proj-nav--open nav#menuProj.menu,
  .header.proj-nav.is-menu-open nav#menuProj.menu {
    display: flex !important;
    background: #232830 !important;
    border-color: rgba(237, 233, 219, 0.7) !important;
  }

  /* links bege */
  .header.proj-nav.proj-nav--open nav#menuProj.menu a,
  .header.proj-nav.is-menu-open nav#menuProj.menu a,
  .header.proj-nav nav#menuProj.menu a {
    position: relative !important;
    display: inline-block !important;
    width: max-content !important;
    padding: 6px 0 !important;
    color: #e6e3d6 !important;
    background: transparent !important;
    border-radius: 0 !important;
    text-decoration: none !important;
    text-transform: uppercase !important;
    font-family: "League Spartan", Inter, sans-serif !important;
    font-weight: 900 !important;
    letter-spacing: 0.14em !important;
    font-size: 12px !important;
    text-shadow: none !important;
    opacity: 1 !important;
  }

  /* hover amarelo */
  .header.proj-nav nav#menuProj.menu a::after {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    bottom: -6px;
    height: 1.6px;
    background: #ffd100;
    transform: scaleX(0);
    transform-origin: left;
    transition: transform 0.28s ease;
  }

  .header.proj-nav nav#menuProj.menu a:hover,
  .header.proj-nav nav#menuProj.menu a:focus,
  .header.proj-nav nav#menuProj.menu a.is-active {
    color: #ffd100 !important;
    background: transparent !important;
  }

  .header.proj-nav nav#menuProj.menu a:hover::after,
  .header.proj-nav nav#menuProj.menu a:focus::after,
  .header.proj-nav nav#menuProj.menu a.is-active::after {
    transform: scaleX(1);
  }
}

#lottieMorph,
#lottieMorph svg {
  width: 100% !important;
  height: 100% !important;
  display: block !important;
}

#lottieMorph {
  overflow: hidden !important;
}

#lottieMorph {
  position: absolute;
  inset: 0;
  overflow: hidden;
}

#lottieMorph svg {
  width: 100% !important;
  height: 100% !important;
  display: block !important;
}

#navPrev,
#navNext,
.nav-btn {
  position: absolute !important;
  top: 50% !important;
  transform: translateY(-50%) !important;

  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;

  width: 42px !important;
  height: 42px !important;
  min-width: 42px !important;
  min-height: 42px !important;
  max-width: 42px !important;
  padding: 0 !important;
  margin: 0 !important;
  flex: 0 0 42px !important;

  background: rgba(0, 0, 0, 0.45) !important;
  color: #fff !important;
  border: 1px solid rgba(255, 209, 0, 0.7) !important;
  border-radius: 12px !important;
  backdrop-filter: blur(2px);
  z-index: 8 !important;
}

#navPrev { left: 10px !important; right: auto !important; }
#navNext { right: 10px !important; left: auto !important; }

@media (max-width: 768px) {
  #navPrev,
  #navNext,
  .nav-btn {
    width: 40px !important;
    height: 40px !important;
    min-width: 40px !important;
    min-height: 40px !important;
    max-width: 40px !important;
    flex: 0 0 40px !important;
  }
}

/* ===== FECHAR do modal igual no desktop ===== */
#closeModal,
#closeModal.btn,
button#closeModal {
  position: absolute !important;
  top: 10px !important;
  right: 10px !important;
  left: auto !important;

  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;

  width: auto !important;
  min-width: 0 !important;
  max-width: none !important;
  height: auto !important;

  padding: 8px 14px !important;
  border-radius: 10px !important;

  white-space: nowrap !important;
  line-height: 1 !important;
  font-size: 12px !important;

  margin: 0 !important;
  transform: none !important;
  align-self: auto !important;
  flex: 0 0 auto !important;
}

@media (max-width: 768px) {
  #closeModal,
  #closeModal.btn,
  button#closeModal {
    top: 8px !important;
    right: 8px !important;
    left: auto !important;
    bottom: auto !important;

    width: auto !important;
    min-width: 0 !important;
    max-width: none !important;
    padding: 7px 12px !important;

    border-radius: 10px !important;
    font-size: 11px !important;
  }
}

.compare-wrap {
  display: inline-block !important;
  width: auto !important;
  max-width: min(1200px, calc(96vw - 24px)) !important;
  max-height: calc(88vh - 24px) !important;
  overflow: hidden !important;
}

.compare-wrap img {
  width: 100% !important;
  height: auto !important;
  object-fit: contain !important;
  display: block !important;
}

/* ===== MODAL DE IMAGEM COM TAMANHO FIXO ===== */
#modal.is-image {
  width: min(92vw, 980px) !important;
  height: min(86vh, 760px) !important;
  max-width: none !important;
  max-height: none !important;
  display: flex !important;
  align-items: stretch !important;
  justify-content: stretch !important;
}

#modal.is-image #modalContent {
  width: 100% !important;
  height: 100% !important;
  padding: 18px !important;
  display: grid !important;
  place-items: center !important;
  overflow: hidden !important;
  background: #111 !important;
  box-sizing: border-box !important;
}

#modal.is-image #modalContent figure {
  width: 100% !important;
  height: 100% !important;
  min-height: 0 !important;
  margin: 0 !important;
  display: grid !important;
  place-items: center !important;
}

#modal.is-image #modalContent img {
  width: auto !important;
  height: auto !important;
  max-width: 100% !important;
  max-height: 100% !important;
  object-fit: contain !important;
  display: block !important;
}

/* ===== COMPARE / BEFORE-AFTER ===== */
#modal.is-image .compare-wrap {
  position: relative !important;
  width: 100% !important;
  height: 100% !important;
  max-width: 100% !important;
  max-height: 100% !important;
  overflow: hidden !important;
  background: #111 !important;
}

#modal.is-image .compare-wrap img {
  position: absolute !important;
  inset: 0 !important;
  width: 100% !important;
  height: 100% !important;
  object-fit: contain !important;
  object-position: center !important;
  display: block !important;
}

#modal.is-image .compare-wrap .after {
  clip-path: inset(0 50% 0 0);
}

#modal.is-image .compare-handle {
  top: 0 !important;
  bottom: 0 !important;
  height: auto !important;
}

/* ===== SETAS E BOTÃO FECHAR ===== */
#modal.is-image #navPrev,
#modal.is-image #navNext {
  top: 50% !important;
  transform: translateY(-50%) !important;
}

#modal.is-image #closeModal {
  top: 10px !important;
  right: 10px !important;
}

/* ===== MOBILE ===== */
@media (max-width: 768px) {
  #modal.is-image {
    width: 94vw !important;
    height: 78vh !important;
  }

  #modal.is-image #modalContent {
    padding: 12px !important;
  }
}

#modal.is-image .compare-wrap {
  position: relative !important;
  width: 100% !important;
  height: 100% !important;
  overflow: hidden !important;
  background: #111 !important;
  cursor: ew-resize !important;
}

#modal.is-image .compare-wrap img {
  position: absolute !important;
  inset: 0 !important;
  width: 100% !important;
  height: 100% !important;
  object-fit: contain !important;
  object-position: center !important;
  display: block !important;
}

#modal.is-image .compare-wrap .after {
  clip-path: inset(0 50% 0 0);
}

#modal.is-image .compare-handle {
  position: absolute !important;
  top: 0 !important;
  bottom: 0 !important;
  left: 50% !important;
  width: 3px !important;
  background: #fff !important;
  box-shadow: 0 0 0 1px rgba(0,0,0,.5) !important;
  pointer-events: none !important;
}

@media (max-width: 768px) {
  #modal.is-image #modalContent {
    place-items: stretch !important;
  }

  #modal.is-image #modalContent figure {
    place-items: stretch !important;
  }

  #modal.is-image .compare-wrap {
    min-height: 100% !important;
  }
}
