/* ============================================================
   PARANOAR WAKE & SURF — estilo compartilhado · v3 "preto no branco"
   Identidade (DS v3, 08/07/2026): PRETO + BRANCO, alto contraste,
   editorial, cantos retos. Terrosos dessaturados = FASE 2 — ligam
   com <body data-fase="2">, sem tocar em mais nada.
   Tokens copiados de ../design system/tokens.css (site auto-contido).
   Mobile-first. Sem framework, sem build. JS opcional (motion.js).
   Botões: .btn-primario (fase-aware) · .btn-contorno (hairline).
   Aliases v1 (.btn-terra/.btn-ocre → primário · .btn-ghost/.btn-line
   → contorno) mantidos por segurança.
   ============================================================ */

:root {
  /* ---- cor · núcleo (fase 1 — lançamento) ---- */
  --preto:   #0a0908;
  --tinta:   #131110;
  --branco:  #ffffff;
  --papel:   #f3f0ea;
  --grafite: #55504a;
  --line:      rgba(255,255,255,.14);
  --line-dark: rgba(10,9,8,.18);

  /* ---- cor · camada terrosa (fase 2 — maturação) ---- */
  --terra:   #a85a32;
  --terra-2: #c06a3c;
  --ocre:    #c79a62;
  --areia:   #ede3d2;
  --areia-2: #c9bba5;
  --muted:   #9b8b76;

  /* aliases v1 */
  --noite:  var(--preto);
  --carvao: var(--tinta);
  --card:   var(--tinta);

  /* ---- tipografia ---- */
  --font-display: 'Archivo', 'Inter', sans-serif;   /* wdth 125 · 800–900 · caps */
  --font-body:    'Inter', system-ui, -apple-system, sans-serif;
  --font-mono:    ui-monospace, 'Cascadia Mono', 'SF Mono', monospace;
  /* BD Colonius é EXCLUSIVA do logo — nunca em UI. */

  --text-hero: clamp(1.9rem, 8.2vw, 5rem);
  --text-h2:   clamp(1.6rem, 5.5vw, 2.6rem);

  /* ---- forma: cantos retos = editorial ---- */
  --radius: 2px;
  --radius-pill: 999px;   /* só botões e chips */
  --maxw: 1120px;

  /* ---- motion ---- */
  --ease-out: cubic-bezier(.16, 1, .3, 1);
  --dur-1: .15s;
  --dur-2: .5s;
  --dur-3: .9s;
}

/* ---- contexto de fase: fase 1 = P&B puro · fase 2 = camada terrosa.
   As peças (botões, chips, números, tags) leem só estas variáveis. ---- */
body {
  --acento: var(--branco);
  --btn-bg: var(--branco);
  --btn-fg: var(--preto);
  --superficie: var(--tinta);
  --risco: var(--line);
  --apoio: rgba(255,255,255,.72);
}
.sec-papel {
  --acento: var(--preto);
  --btn-bg: var(--preto);
  --btn-fg: var(--papel);
  --superficie: #ffffff;
  --risco: var(--line-dark);
  --apoio: var(--grafite);
}
body[data-fase="2"],
body[data-fase="2"] .sec-papel {
  --acento: var(--terra);
  --btn-bg: var(--terra);
  --btn-fg: #ffffff;
}

::selection { background: var(--branco); color: var(--preto); }
.sec-papel ::selection { background: var(--preto); color: #fff; }
body[data-fase="2"] ::selection { background: var(--terra); color: #fff; }

:focus-visible { outline: 2px solid currentColor; outline-offset: 3px; }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
    scroll-behavior: auto !important;
  }
}

/* ============================================================ base */

* { margin: 0; padding: 0; box-sizing: border-box; }

html { scroll-behavior: smooth; }

body {
  font-family: var(--font-body);
  color: var(--branco);
  background: var(--preto);
  line-height: 1.65;
  font-size: 16px;
  overflow-x: hidden;
}

h1, h2 {
  font-family: var(--font-display);
  font-variation-settings: 'wdth' 125;
  font-weight: 900;
  text-transform: uppercase;
  line-height: 1.02;
  letter-spacing: .01em;
}
h1 { font-size: var(--text-hero); }
/* tela estreita: Archivo estreita junto (wdth 112) — palavra longa cabe sem encolher demais */
@media (max-width: 480px) { h1 { font-variation-settings: 'wdth' 112; } }
h2 { font-size: var(--text-h2); margin-bottom: .7em; }
h3 { font-size: 1.15rem; font-weight: 600; line-height: 1.3; }

p + p { margin-top: .9em; }

img { max-width: 100%; display: block; }

a { color: inherit; }
p a, li a { text-decoration: underline; text-underline-offset: 3px; }

.wrap { max-width: var(--maxw); margin: 0 auto; padding: 0 20px; }

section { padding: clamp(56px, 9vw, 96px) 0; position: relative; }
section.sec-papel { background: var(--papel); color: var(--preto); }

[id] { scroll-margin-top: 72px; }

.kicker {
  font-family: var(--font-mono);
  font-size: .75rem; letter-spacing: .22em; text-transform: uppercase;
  opacity: .75; display: block; margin-bottom: 16px;
}

/* ---------- header ---------- */
header.site {
  position: sticky; top: 0; z-index: 50;
  /* no mobile a nav quebra em 2–3 linhas — sticky comeria o viewport */
  background: rgba(10,9,8,.92);
  backdrop-filter: blur(8px);
  border-bottom: 1px solid var(--line);
  color: var(--branco);
}
header.site .wrap {
  display: flex; align-items: center; justify-content: space-between;
  padding-top: 12px; padding-bottom: 12px; gap: 10px 14px; flex-wrap: wrap;
}
.brand {
  display: flex; align-items: center; gap: 10px; text-decoration: none;
  font-family: var(--font-display); font-variation-settings: 'wdth' 125;
  font-weight: 800; letter-spacing: .12em; font-size: .95rem; color: #fff;
}
.brand svg { width: 26px; height: auto; transition: transform .9s var(--ease-out); }
.brand:hover svg { transform: rotate(360deg); }   /* passa o mouse no logo → ele gira */
nav.main { display: flex; gap: 6px 16px; flex-wrap: wrap; align-items: center; }
nav.main a {
  font-family: var(--font-mono); font-size: .68rem;
  letter-spacing: .14em; text-transform: uppercase;
  color: rgba(255,255,255,.7); text-decoration: none;
}
nav.main a:hover { color: #fff; }
nav.main a.on { color: #fff; text-decoration: underline; text-underline-offset: 6px; }
@media (max-width: 680px) { header.site { position: static; } }

/* ---------- botões ---------- */
.btn {
  display: inline-block; text-decoration: none; font-weight: 600;
  padding: 13px 28px; border-radius: var(--radius-pill); font-size: 1rem;
  transition: transform var(--dur-1) var(--ease-out), background var(--dur-1),
              color var(--dur-1), border-color var(--dur-1), opacity var(--dur-1);
  will-change: transform;
}
.btn:hover { transform: translateY(-2px); }
.btn-primario, .btn-terra, .btn-ocre { background: var(--btn-bg); color: var(--btn-fg); }
.btn-primario:hover, .btn-terra:hover, .btn-ocre:hover { opacity: .92; }
.btn-contorno, .btn-ghost, .btn-line { border: 2px solid currentColor; color: inherit; }
.btn-contorno:hover, .btn-ghost:hover, .btn-line:hover {
  background: var(--acento); border-color: var(--acento); color: var(--btn-fg);
}
nav.main .btn { padding: 9px 18px; font-size: .78rem; }
nav.main a.btn-primario, nav.main a.btn-primario:hover { color: var(--btn-fg); }
.cta-row { display: flex; gap: 12px; flex-wrap: wrap; margin-top: 28px; }

/* ---------- herói ---------- */
.hero { padding: clamp(72px, 12vw, 128px) 0 clamp(64px, 10vw, 104px); }
.hero p.lead, p.lead {
  font-size: 1.12rem; max-width: 36em; margin-top: 20px; color: var(--apoio);
}
/* herói com foto de fundo (home) — texto sempre sobre área escura */
.hero.photo {
  position: relative; overflow: hidden;
  min-height: min(92vh, 760px);
  display: flex; align-items: flex-end;
  padding-bottom: clamp(48px, 7vw, 88px);
  color: #fff;
}
.hero.photo > .bg { position: absolute; inset: 0; z-index: 0; }
.hero.photo > .bg img { width: 100%; height: 100%; object-fit: cover; display: block; }
.hero.photo > .bg::after {
  content: ""; position: absolute; inset: 0;
  background:
    linear-gradient(180deg, rgba(10,9,8,.35) 0%, rgba(10,9,8,.05) 35%, rgba(10,9,8,.85) 100%),
    linear-gradient(90deg, rgba(10,9,8,.55) 0%, transparent 60%);
}
.hero.photo > .wrap { position: relative; z-index: 1; width: 100%; }
.hero.photo p.lead { color: rgba(255,255,255,.88); }
/* variante das páginas internas: mais baixa que a da home */
.hero.photo.curto { min-height: min(74vh, 620px); }

/* ---------- stack de fotos tortinhas (ref boogie: pilha de fundo) ----------
   3 fotos empilhadas com caimento humano; hover espalha o leque. */
.foto-stack {
  position: relative; aspect-ratio: 4 / 5;
  /* filhos são absolutos — precisa de largura própria (auto-margin desliga o stretch do grid) */
  width: min(100%, 440px); margin: 0 auto;
}
.foto-stack figure.shot {
  position: absolute; inset: 0; margin: 0;
  box-shadow: 0 24px 56px rgba(0,0,0,.35);
  transition: transform .6s var(--ease-out);
}
.foto-stack figure.shot img { transition: none; }   /* sem zoom interno na pilha */
/* leque aberto POR PADRÃO: as três fotos aparecem (não só a de cima) */
.foto-stack figure.shot:nth-child(1) { transform: rotate(-9deg) translate(-16%, 5%); z-index: 1; }
.foto-stack figure.shot:nth-child(2) { transform: rotate(7deg)  translate(16%, -4%); z-index: 2; }
.foto-stack figure.shot:nth-child(3) { transform: rotate(-1.5deg) translateY(-2%);   z-index: 3; }
@media (hover: hover) and (pointer: fine) {
  .foto-stack:hover figure.shot:nth-child(1) { transform: rotate(-12deg) translate(-24%, 7%); }
  .foto-stack:hover figure.shot:nth-child(2) { transform: rotate(11deg) translate(24%, -6%); }
  .foto-stack:hover figure.shot:nth-child(3) { transform: rotate(-1deg) translateY(-6%); }
}
/* mobile: sem hover — vira mosaico chapado (2 em cima, 1 largo embaixo) */
@media (max-width: 680px) {
  .foto-stack {
    aspect-ratio: auto; width: 100%;
    display: grid; grid-template-columns: 1fr 1fr; gap: 10px;
  }
  .foto-stack figure.shot {
    position: static; inset: auto; transform: none !important;
    aspect-ratio: 4 / 5; box-shadow: 0 12px 28px rgba(0,0,0,.3);
  }
  .foto-stack figure.shot:nth-child(3) { grid-column: 1 / -1; aspect-ratio: 16 / 10; }
}

/* ---------- faixa (band) — hairline + mono ---------- */
.band {
  border-top: 1px solid var(--line); border-bottom: 1px solid var(--line);
  padding: 13px 20px; text-align: center;
  font-family: var(--font-mono); font-size: .72rem;
  letter-spacing: .18em; text-transform: uppercase;
  color: rgba(255,255,255,.75);
}
.band.marquee { padding: 13px 0; text-align: left; overflow: hidden; }
.marquee .track { display: flex; width: max-content; animation: mq 32s linear infinite; will-change: transform; }
.marquee:hover .track { animation-play-state: paused; }
@keyframes mq { to { transform: translateX(-50%); } }
.marquee .g { display: flex; gap: 48px; padding-right: 48px; white-space: nowrap; }
.marquee b { color: var(--acento); font-weight: 400; }

/* ---------- divisor tesourinha ---------- */
.divisor { display: flex; justify-content: center; line-height: 0; padding: 30px 0; overflow: hidden; }
.divisor svg { width: min(720px, 88vw); height: auto; }
.divisor.no-papel { background: var(--papel); color: var(--preto); }
.divisor.no-preto { background: var(--preto); color: var(--branco); }
/* interativo: a linha "estica" pela tela ao entrar em cena (padrão reveal).
   Sem JS ou reduced-motion, aparece já esticada — nada some. */
html.js .divisor.rv svg {
  transform: scaleX(.02); transform-origin: left center;
  transition: transform 1.2s var(--ease-out);
}
html.js .divisor.rv.in svg { transform: scaleX(1); }

/* ---------- imagens editoriais ---------- */
/* figura que preenche o espaço no formato do container (crop editorial) */
figure.shot {
  margin: 0; overflow: hidden;
  border: 1px solid var(--risco); border-radius: var(--radius);
  background: var(--superficie);
  position: relative;
}
figure.shot img {
  width: 100%; height: 100%; object-fit: cover; display: block;
  transition: transform 1.1s var(--ease-out);
}
figure.shot.tall { aspect-ratio: 4 / 5; }
figure.shot.wide { aspect-ratio: 16 / 9; }
figure.shot.sq   { aspect-ratio: 1 / 1; }
/* hover: leve zoom só no desktop com mouse (respeitando reduced-motion via base) */
@media (hover: hover) and (pointer: fine) {
  figure.shot:hover img { transform: scale(1.04); }
}
/* legenda mono discreta sobre a foto (área escura, canto) */
figure.shot figcaption {
  position: absolute; left: 12px; bottom: 10px; z-index: 2;
  font-family: var(--font-mono); font-size: .6rem; letter-spacing: .16em;
  text-transform: uppercase; color: #fff;
  text-shadow: 0 1px 8px rgba(0,0,0,.6); opacity: .9;
}

/* banda de foto full-bleed (momento editorial entre seções) */
.photo-band {
  position: relative; overflow: hidden;
  height: clamp(320px, 52vw, 560px);
  background: var(--preto);
}
.photo-band img { width: 100%; height: 100%; object-fit: cover; display: block; }
.photo-band .cap {
  position: absolute; left: 0; right: 0; bottom: 0; z-index: 2;
  padding: 40px 20px 22px;
  background: linear-gradient(180deg, transparent, rgba(10,9,8,.72));
  color: #fff;
}
.photo-band .cap .wrap { padding: 0 20px; }
.photo-band .cap p {
  font-family: var(--font-display); font-variation-settings: 'wdth' 110;
  font-weight: 800; text-transform: uppercase; line-height: 1.05;
  font-size: clamp(1.3rem, 3.5vw, 2.1rem); max-width: 18em;
}

/* ---------- vídeo · cards flutuantes "tortinhos" (ref: boogie-site) ----------
   Autoplay muted em loop (ping-pong no JS); clique desmuta um por vez.
   Adaptado à linguagem P&B: cantos retos, hairline, caimento humano. */
.reel-strip {
  display: flex;
  /* row-gap generoso: com wrap em telas médias, os cards tortos
     (translateY ±12px + cantos girados) precisam de respiro vertical */
  gap: 48px clamp(20px, 3vw, 36px);
  justify-content: center; align-items: center; flex-wrap: wrap;
  padding: 36px 0 28px;
}
.reel {
  flex: 0 0 auto; width: clamp(196px, 23vw, 260px); aspect-ratio: 9 / 16;
  border-radius: var(--radius); overflow: hidden;
  border: 1px solid var(--risco); background: var(--superficie);
  position: relative; cursor: pointer;
  box-shadow: 0 26px 60px rgba(0,0,0,.45);
  transition: transform .5s var(--ease-out), box-shadow .5s var(--ease-out);
  will-change: transform;
}
.reel video { width: 100%; height: 100%; object-fit: cover; display: block; }
/* embed do YouTube (Shorts 9:16) preenche o card; pointer-events off = sem UI do YT */
.reel iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; pointer-events: none; background: #000; }
.reel { cursor: default; }
/* tortinho: cada card cai diferente (toque humano, não alinhado) */
.reel:nth-child(1) { transform: rotate(-5deg) translateY(10px); }
.reel:nth-child(2) { transform: rotate(3deg)  translateY(-12px); }
.reel:nth-child(3) { transform: rotate(-2.5deg) translateY(6px); }
.reel:nth-child(4) { transform: rotate(6deg)  translateY(-4px); }
.reel:hover {
  transform: rotate(0deg) translateY(-16px) scale(1.02);
  box-shadow: 0 38px 84px rgba(0,0,0,.6); z-index: 3;
}
/* (áudio desabilitado no site — botão de som removido) */
.reel-hint {
  font-family: var(--font-mono); font-size: .66rem; letter-spacing: .16em;
  text-transform: uppercase; opacity: .55; margin-top: 18px;
}
@media (max-width: 680px) {
  .reel-strip {
    flex-wrap: nowrap; overflow-x: auto; justify-content: flex-start;
    /* gap > invasão dos cantos girados (~8px por lado) — sem encavalar */
    padding: 34px 20px 24px; gap: 28px;
    scroll-snap-type: x proximity; -webkit-overflow-scrolling: touch;
  }
  .reel { width: 62vw; scroll-snap-align: center; }
  .reel:nth-child(1) { transform: rotate(-2deg); }
  .reel:nth-child(2) { transform: rotate(1.6deg); }
  .reel:nth-child(3) { transform: rotate(-1.4deg); }
  .reel:nth-child(4) { transform: rotate(2deg); }
  .reel:hover { transform: translateY(-6px); }
}

/* ---------- carimbo GIF do monograma (tortinho, gira no hover) ---------- */
.carimbo {
  display: inline-block; width: clamp(72px, 9vw, 104px); height: auto;
  transform: rotate(-12deg); cursor: pointer;
  transition: transform .8s var(--ease-out);
}
.carimbo:hover { transform: rotate(348deg) scale(1.06); }  /* gira 360° e volta ao caimento */

/* placeholder legado (caso sobre algum .ph sem foto) */
.ph {
  background: var(--superficie); border: 1px solid var(--risco);
  border-radius: var(--radius); min-height: 220px;
  display: flex; align-items: center; justify-content: center;
  font-family: var(--font-mono); font-size: .72rem; letter-spacing: .06em;
  opacity: .75; text-align: center; padding: 16px; overflow: hidden;
}
.ph.tall { min-height: 340px; }

/* ---------- grades e cards ---------- */
.grid { display: grid; gap: 20px; }
@media (min-width: 720px) {
  .grid.c2 { grid-template-columns: 1fr 1fr; }
  .grid.c3 { grid-template-columns: 1fr 1fr 1fr; }
}
.card {
  background: var(--superficie); border: 1px solid var(--risco);
  border-radius: var(--radius);
  padding: 28px 24px;
  display: flex; flex-direction: column; gap: 10px;
}
.card .lbl {
  font-family: var(--font-mono); font-size: .66rem;
  letter-spacing: .18em; text-transform: uppercase; color: var(--acento);
}
.card p { color: var(--apoio); }
.card .btn { margin-top: auto; align-self: flex-start; }
.card .tag {
  align-self: flex-start; font-family: var(--font-mono); font-size: .64rem;
  letter-spacing: .14em; text-transform: uppercase;
  border: 1px solid var(--risco); border-radius: var(--radius-pill);
  padding: 4px 12px; opacity: .85;
}

/* alias v1 — se alguma seção .dark sobrar, vira painel tinta */
.dark { background: var(--tinta); }

/* ---------- preços ---------- */
.prices { display: grid; gap: 18px; }
@media (min-width: 720px) { .prices { grid-template-columns: repeat(3, 1fr); } }
.price {
  background: var(--superficie); border: 1px solid var(--risco);
  border-radius: var(--radius); padding: 30px 24px;
  text-align: center;
  display: flex; flex-direction: column; gap: 8px;
}
.price.hot { border: 2px solid var(--acento); position: relative; }
.price.hot::before {
  content: "mais escolhido"; position: absolute; top: -11px; left: 50%;
  transform: translateX(-50%); background: var(--acento); color: var(--btn-fg);
  font-family: var(--font-mono); font-size: .62rem; font-weight: 600;
  padding: 3px 14px; border-radius: var(--radius-pill);
  letter-spacing: .14em; text-transform: uppercase; white-space: nowrap;
}
.price .valor {
  font-family: var(--font-display); font-variation-settings: 'wdth' 125;
  font-weight: 900; font-size: 2.3rem; line-height: 1.1;
}
.price small { color: var(--apoio); }
.price .btn { margin-top: 12px; align-self: center; }

/* ---------- passos (jornada) — linhas editoriais ---------- */
.steps { list-style: none; counter-reset: passo; display: grid; }
.steps li {
  counter-increment: passo;
  border-top: 1px solid var(--risco);
  padding: 18px 0 18px 64px;
  position: relative;
  color: var(--apoio);
}
.steps li:last-child { border-bottom: 1px solid var(--risco); }
.steps li::before {
  content: counter(passo, decimal-leading-zero);
  position: absolute; left: 0; top: 16px;
  font-family: var(--font-display); font-variation-settings: 'wdth' 125;
  font-weight: 900; font-size: 1.5rem; line-height: 1.2;
  color: var(--acento);
}
.steps li strong { color: inherit; }
section:not(.sec-papel) .steps li strong { color: #fff; }
.sec-papel .steps li strong { color: var(--preto); }

/* ---------- FAQ — linhas editoriais, marcador + ---------- */
details { border-top: 1px solid var(--risco); }
details:last-of-type { border-bottom: 1px solid var(--risco); }
details summary {
  cursor: pointer; font-weight: 600;
  padding: 16px 36px 16px 0; position: relative; list-style: none;
}
details summary::-webkit-details-marker { display: none; }
details summary::after {
  content: "+"; position: absolute; right: 4px; top: 50%;
  transform: translateY(-50%);
  font-family: var(--font-display); font-weight: 700; font-size: 1.25rem;
  color: var(--acento);
  transition: transform var(--dur-2) var(--ease-out);
}
details[open] summary::after { transform: translateY(-50%) rotate(45deg); }
details p { padding: 0 0 18px; color: var(--apoio); }
details strong { color: inherit; }
section:not(.sec-papel) details strong { color: #fff; }
.sec-papel details strong { color: var(--preto); }

/* ---------- footer ---------- */
footer.site {
  background: var(--preto); border-top: 1px solid var(--line);
  color: rgba(255,255,255,.75);
  padding: 56px 0 32px; font-size: .92rem;
}
footer.site .grid { gap: 28px; }
footer.site h3 {
  font-family: var(--font-mono); font-size: .7rem; font-weight: 600;
  letter-spacing: .18em; text-transform: uppercase;
  color: #fff; margin-bottom: 10px;
}
footer.site a { color: rgba(255,255,255,.75); }
footer.site a:hover { color: #fff; }
footer.site .fim {
  margin-top: 40px; opacity: .5; font-size: .78rem; text-align: center;
  font-family: var(--font-mono); letter-spacing: .08em;
}

/* ---------- reveal on scroll (só com JS — sem JS nada some) ---------- */
html.js .rv {
  opacity: 0; transform: translateY(24px);
  transition: opacity var(--dur-3) var(--ease-out), transform var(--dur-3) var(--ease-out);
}
html.js .rv.in { opacity: 1; transform: none; }

/* ---------- tipo variável: letras vivas nas headers (padrão E do DS) ----------
   O JS quebra h1/h2 em <span class="l"> e, ao mouse, cada letra perto do cursor
   afina o preenchimento e ganha contorno (Archivo variável) + sobe um toque.
   Em repouso (infl=0) o inline-style zera → header idêntica ao normal. */
html.js .vf .w { display: inline-block; white-space: nowrap; }
html.js .vf .l {
  display: inline-block; will-change: transform;
  transition: transform .3s var(--ease-out),
              -webkit-text-fill-color .3s var(--ease-out),
              -webkit-text-stroke-width .3s var(--ease-out);
}

/* ---------- parallax: folga na imagem pra ter o que mover ---------- */
html.js .hero.photo .bg { top: -11%; left: -4%; width: 108%; height: 122%; }
html.js .hero.photo > .wrap { will-change: transform; }
html.js .hero.photo .bg,
html.js .photo-band img { will-change: transform; }
html.js .photo-band img {
  position: absolute; left: 0; top: -10%; width: 100%; height: 120%;
}

/* ---------- vídeo em card paisagem (dentro do conteúdo) ----------
   Ex.: "Tudo gira em torno da água" (lancha + sunset). Autoplay mudo,
   16/9, caimento leve; endireita e sobe no hover. */
.vfilm { display: grid; gap: clamp(16px, 3vw, 26px); grid-template-columns: 1fr; }
@media (min-width: 720px) { .vfilm.duo { grid-template-columns: 1fr 1fr; } }
.vfilm figure {
  margin: 0; position: relative; overflow: hidden; aspect-ratio: 16 / 9;
  border: 1px solid var(--risco); border-radius: var(--radius);
  background: var(--superficie); box-shadow: 0 22px 50px rgba(0,0,0,.3);
  transition: transform .5s var(--ease-out), box-shadow .5s var(--ease-out);
  will-change: transform;
}
.vfilm figure:nth-child(1) { transform: rotate(-1.6deg); }
.vfilm figure:nth-child(2) { transform: rotate(1.6deg); }
@media (hover: hover) and (pointer: fine) {
  .vfilm figure:hover { transform: rotate(0) translateY(-8px) scale(1.015); box-shadow: 0 30px 66px rgba(0,0,0,.42); }
}
.vfilm video { width: 100%; height: 100%; object-fit: cover; display: block; }
.vfilm figcaption {
  position: absolute; left: 12px; bottom: 10px; z-index: 2;
  font-family: var(--font-mono); font-size: .6rem; letter-spacing: .16em;
  text-transform: uppercase; color: #fff; text-shadow: 0 1px 8px rgba(0,0,0,.6);
}

/* ---------- galeria de vídeos (wakeboard): roll horizontal único ----------
   No PC não espalha em linhas: vira uma tira só, com scroll lateral (igual
   ao mobile). Muitos cards → um roll, não um mosaico. */
@media (min-width: 681px) {
  .reel-strip.galeria {
    flex-wrap: nowrap; justify-content: flex-start;
    overflow-x: auto; overflow-y: hidden;
    gap: clamp(20px, 3vw, 32px); padding: 56px 20px 48px;
    scroll-snap-type: x proximity; scroll-padding: 0 20px;
    -webkit-overflow-scrolling: touch;
  }
  .reel-strip.galeria .reel {
    flex: 0 0 auto; width: clamp(190px, 18vw, 230px); scroll-snap-align: center;
  }
  .reel-strip.galeria .reel:nth-child(4n+1) { transform: rotate(-3deg) translateY(7px); }
  .reel-strip.galeria .reel:nth-child(4n+2) { transform: rotate(2.4deg) translateY(-9px); }
  .reel-strip.galeria .reel:nth-child(4n+3) { transform: rotate(-1.8deg) translateY(5px); }
  .reel-strip.galeria .reel:nth-child(4n+4) { transform: rotate(4deg)  translateY(-4px); }
  .reel-strip.galeria .reel:hover { transform: rotate(0) translateY(-12px) scale(1.02); z-index: 3; }
}

/* ---------- roll de fotos no fundo · filmstrip interativo ----------
   Desktop (mouse): a tira anda com o cursor (parallax lateral).
   Touch/mobile: vira scroll horizontal nativo. Sem JS/reduced-motion:
   fica centralizado e parado. Fotos grandes em BG, "de perto". */
.fotoroll {
  position: relative; overflow: hidden; background: var(--preto);
  height: clamp(360px, 60vh, 620px);
}
.fotoroll .lane {
  position: absolute; top: 0; left: 0; height: 100%;
  display: flex; align-items: center; gap: 20px; padding: 0 20px;
  will-change: transform;
}
.fotoroll figure {
  margin: 0; flex: 0 0 auto; width: clamp(190px, 20vw, 280px); height: 82%;
  overflow: hidden; border-radius: var(--radius);
  box-shadow: 0 26px 60px rgba(0,0,0,.5);
}
.fotoroll figure:nth-child(odd) { height: 94%; }      /* ritmo: alturas alternadas */
.fotoroll img { width: 100%; height: 100%; object-fit: cover; display: block; }
.fotoroll::after {                                     /* vinheta lateral p/ dar profundidade */
  content: ""; position: absolute; inset: 0; pointer-events: none; z-index: 2;
  background: linear-gradient(90deg, var(--preto), transparent 12% 88%, var(--preto));
}
@media (hover: none), (pointer: coarse) {
  .fotoroll { overflow-x: auto; -webkit-overflow-scrolling: touch; scroll-snap-type: x proximity; }
  .fotoroll .lane { position: relative; transform: none !important; }
  .fotoroll figure { scroll-snap-align: center; }
}

/* ---------- utilidades ---------- */
.center { text-align: center; }
.sub { color: var(--apoio); max-width: 40em; }
.mt { margin-top: 28px; }
