/* Sigma deck — pele v3 "template Sigma × Requiem".
 * Carrega DEPOIS de deck.css: retematiza via tokens + variantes, sem tocar a
 * mecânica. Direção: docs/direcao-estetica-v3.md (contrato anti-cyberpunk).
 * Fundamentos:
 *  - Capa quase literal da apresentação Figma: gradiente violeta→índigo,
 *    chevrons ">" oficiais na direita, granulado fino. Zero imagem gerada.
 *  - Fim do preto sólido: todo slide dark vive num campo índigo com véu
 *    violeta + chevron sutil — identidade em toda superfície.
 *  - Title Header do Figma: título + sublinhado curto lavanda em todo slide.
 *  - Delicadeza: 1px, opacidade baixa, ease longo; o dado é a joia.
 */

:root {
  /* capa oficial (amostrada de media/figma-frames/01-capa.png) */
  --grad-cover: linear-gradient(118deg, oklch(0.519 0.185 290) 0%, oklch(0.369 0.171 283) 32%, oklch(0.279 0.132 281) 60%, oklch(0.227 0.112 280) 100%);
  /* campo interno: família do navy oficial da IDV (RGB 10 0 69 = oklch(0.185 0.117 274)), nunca #000 */
  --field-ink: oklch(0.202 0.111 276);
  --grad-field: linear-gradient(126deg, oklch(0.21 0.08 288) 0%, oklch(0.17 0.065 283) 44%, oklch(0.196 0.11 276) 100%);
  /* ciano oficial da paleta (RGB 62 214 255) — acento de verdade operacional, só sobre dark */
  --cyan: oklch(0.815 0.135 220.5);
  --chevron: url('chevron-sigma.svg');
  --noise: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='200' height='200' filter='url(%23n)' opacity='0.05'/%3E%3C/svg%3E");

  /* profundidade herdada da v2 (funcionou) */
  --edge-machined: inset 0 1px 1px oklch(1 0 0 / 0.07), inset 0 -2px 4px oklch(0 0 0 / 0.38);
  --edge-hairline: inset 0 0.5px 0.5px oklch(1 0 0 / 0.26);
  --grad-cta: linear-gradient(165deg, oklch(0.68 0.19 305) 0%, oklch(0.5 0.24 292) 100%);
  --grad-brand-line: linear-gradient(90deg, oklch(0.55 0.22 292) 0%, oklch(0.68 0.19 305) 100%);
  --paper: oklch(0.975 0.006 292);
  --paper-raised: oklch(0.995 0.003 292);
  --paper-line: oklch(0.885 0.012 292);
  --title-underline: oklch(0.82 0.089 298);
}

/* ---------- campo universal dark: índigo + chevron sutil + granulado ------ */
/* camadas (topo→base): granulado · véu que doma o chevron · chevron · campo */
.slide {
  background-color: var(--field-ink);
  background-image:
    var(--noise),
    linear-gradient(90deg, var(--field-ink) 34%, color-mix(in oklab, var(--field-ink) 86%, transparent) 72%, color-mix(in oklab, var(--field-ink) 62%, transparent) 100%),
    var(--chevron),
    var(--grad-field);
  background-size: 200px 200px, 100% 100%, auto 132%, 100% 100%;
  background-position: 0 0, 0 0, right center, 0 0;
  background-repeat: repeat, no-repeat, no-repeat, no-repeat;
}

/* ---------- capa e CTA: o template oficial em força total ---------------- */
.slide--cover, .slide--cta {
  background-color: oklch(0.227 0.112 280);
  background-image:
    var(--noise),
    linear-gradient(100deg, oklch(0.394 0.178 286) 0%, oklch(0.35 0.16 288 / 0.72) 30%, oklch(0.3 0.14 285 / 0.28) 52%, transparent 72%),
    var(--chevron),
    var(--grad-cover);
  background-size: 200px 200px, 100% 100%, auto 118%, 100% 100%;
  background-position: 0 0, 0 0, calc(100% + 6vw) center, 0 0;
  background-repeat: repeat, no-repeat, no-repeat, no-repeat;
}

/* trilho consistente: o conteúdo começa no mesmo eixo em todos os slides */
.slide-inner { width: min(1160px, 92vw); }

.cover-inner { gap: 1.1rem; }
.cover-wordmark { height: clamp(3rem, 8vw, 5rem); width: auto; }
.cover-tagline {
  font-weight: 640; font-size: clamp(0.95rem, 0.8rem + 0.7vw, 1.25rem);
  letter-spacing: 0.015em; color: oklch(0.99 0.004 292);
}
.cover-title {
  margin-top: clamp(1.6rem, 5vh, 3.2rem);
  font-size: var(--text-subtitle); font-weight: 460; line-height: 1.4;
  letter-spacing: -0.01em; color: oklch(0.9 0.03 292); max-width: 34ch;
}
.cover-title .accent { color: oklch(0.99 0.004 292); font-weight: 560; }
.cover-inner .instrument {
  border: 1px solid oklch(1 0 0 / 0.2);
  background: oklch(0.2 0.08 288 / 0.4);
  backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
  box-shadow: var(--edge-hairline);
  color: oklch(0.85 0.03 292);
}
.cover-inner .instrument .sig { color: oklch(0.99 0.004 292); }

/* CTA sobre o gradiente oficial: texto sempre claro */
.slide--cta .s-sub { color: oklch(0.89 0.03 292); }
.slide--cta .bullets li { color: oklch(0.93 0.02 292); }
.slide--cta .bullets li::before { background: var(--cyan); }
.slide--cta .eyebrow { color: oklch(0.87 0.06 295); }
.slide--cta .eyebrow::before { background: oklch(0.87 0.06 295); }
.slide--cta .stat-label { color: oklch(0.85 0.03 292); }
.slide--cta .cta-contact { color: oklch(0.8 0.04 292); }
.slide--cta .btn-primary {
  background: oklch(0.99 0.004 292); color: oklch(0.309 0.151 282);
  box-shadow: 0 18px 44px -18px oklch(0.1 0.05 280 / 0.9);
}
.slide--cta .btn-primary:hover { box-shadow: 0 22px 54px -18px oklch(0.1 0.05 280 / 1); }
/* CTA no mesmo trilho de 1160px dos demais slides (não centrado no próprio conteúdo) */
.slide--cta .cta-inner { max-width: none; }
.slide--cta .cta-bullets { max-width: 58ch; }
.slide--cta .cta-stat { margin-top: 1rem; }
.slide--cta .cta-stat .stat-num.xl { font-size: clamp(2.8rem, 1.4rem + 5vw, 5.5rem); }
.slide--cta .cta-inner { padding-bottom: 3.2rem; }

/* números-frase não podem estourar o card */
.stat-num.phrase {
  font-size: clamp(1.7rem, 1rem + 2.6vw, 3.4rem);
  overflow-wrap: anywhere;
}

/* progresso: roxo → ciano oficiais (dado vivo no rodapé) */
.deck-progress-fill { background: linear-gradient(90deg, var(--accent), var(--cyan)); }

/* ---------- Title Header (Figma): sublinhado curto em todo slide ---------- */
.s-title::after {
  content: ''; display: block; width: 3.4rem; height: 4px; border-radius: 2px;
  margin-top: 0.55em; background: var(--grad-brand-line);
}
.hinge-inner .s-title::after { margin-inline: auto; }
.slide--cta .s-title::after { background: oklch(0.99 0.004 292 / 0.85); }
.cover-title::after { display: none; }

/* ---------- registro light-review (Figma "Introdução"): papel + roxo ------ */
.slide[data-theme="light"] {
  background-color: var(--paper);
  background-image:
    radial-gradient(120% 90% at 84% -12%, oklch(0.93 0.03 292 / 0.8) 0%, transparent 56%),
    linear-gradient(244deg, oklch(0.9 0.045 292 / 0.5) 0%, transparent 38%);
  background-size: 100% 100%, 100% 100%;
  background-position: 0 0, 0 0;
  background-repeat: no-repeat, no-repeat;
  color-scheme: light;
  --bg: var(--paper);
  --bg-deep: var(--paper);
  --fg-strong: oklch(0.18 0.015 275);
  --fg: oklch(0.28 0.014 275);
  --fg-muted: oklch(0.44 0.015 275);
  --fg-subtle: oklch(0.52 0.015 275);
  --accent-text: oklch(0.46 0.21 292);
  --accent-muted: oklch(0.5 0.22 292 / 0.14);
  --border: oklch(0.885 0.012 292);
  --border-strong: oklch(0.8 0.018 292);
  --glass-bg: oklch(1 0 0 / 0.72);
  --glass-border: oklch(0 0 0 / 0.09);
}
/* título roxo bold + sublinhado lavanda sólido, como o Title Header do Figma */
.slide[data-theme="light"] .s-title { color: oklch(0.47 0.22 292); }
.slide[data-theme="light"] .s-title::after { background: var(--title-underline); }
.slide[data-theme="light"] .stat {
  background: var(--paper-raised);
  box-shadow:
    inset 0 0.5px 0.5px oklch(1 0 0 / 0.9),
    0 1px 2px oklch(0.2 0.05 292 / 0.08),
    0 18px 44px -22px oklch(0.3 0.1 292 / 0.28);
  border: 1px solid var(--paper-line);
}
.slide[data-theme="light"] .bullets li { color: var(--fg); }
.slide[data-theme="light"] .ph { color: var(--accent-text); border-bottom-color: oklch(0.5 0.22 292 / 0.4); }

/* mocks e telas de produto em Registro Produto (flat, gov-sério) */
.slide[data-theme="light"] .mock {
  background: var(--paper-raised);
  border: 1px solid var(--paper-line);
  box-shadow: 0 1px 2px oklch(0.2 0.05 292 / 0.06);
}
.slide[data-theme="light"] .mock--map .mapfield { background: oklch(0.13 0.015 260); border-radius: 10px; }
.slide[data-theme="light"] .paper { background: oklch(0.965 0.008 80); }
.slide[data-theme="light"] .mock-tag { color: var(--fg-subtle); }

/* tela real do produto: frame flat com borda dura, sem glow (Registro Produto) */
.product-shot {
  display: grid; gap: 0.7rem;
}
.product-shot img {
  width: 100%; height: auto; border-radius: 10px;
  border: 1px solid oklch(0.271 0.026 285); /* Registro Produto (#252533) */
  box-shadow: 0 24px 56px -30px oklch(0.2 0.06 285 / 0.55);
}
.slide[data-theme="light"] .product-shot img {
  border-color: var(--paper-line);
  box-shadow: 0 1px 2px oklch(0.2 0.05 292 / 0.08), 0 22px 48px -26px oklch(0.3 0.1 292 / 0.3);
}
.product-shot figcaption {
  font-family: var(--font-mono); font-size: var(--text-micro);
  letter-spacing: 0.1em; text-transform: uppercase; color: var(--fg-subtle);
}
.mapfield--real { min-height: 0; }
.mock-shot { display: block; width: 100%; height: auto; }

/* módulos: nome do módulo em destaque dentro do bullet */
.bullets--modules { max-width: 52ch; }
.bullets--modules li strong { font-weight: 640; color: var(--fg-strong); }

/* slide 5 — rota não registrada: mini-mapa com percurso tracejado e destino incerto */
.route-lost { margin-bottom: 1.3rem; }
.route-lost svg { width: clamp(150px, 17vw, 230px); height: auto; }
.rl-frame { fill: oklch(0.17 0.06 285 / 0.5); stroke: var(--border); stroke-width: 1; }
.rl-route { fill: none; stroke: oklch(0.726 0.151 296 / 0.7); stroke-width: 2; stroke-dasharray: 6 7; stroke-linecap: round; }
.rl-start { fill: var(--accent-bright); }
.rl-q { font-family: var(--font-mono); font-size: 22px; font-weight: 600; fill: var(--pain); }

/* ---------- painéis de dado: padrão = card do slide Requiem (aprovado) ----- */
.stat {
  border-radius: 18px;
  background: oklch(0.2 0.09 288 / 0.55);
  border: 1px solid oklch(0.72 0.15 296 / 0.3);
  box-shadow: var(--edge-hairline), 0 30px 70px -34px oklch(0 0 0 / 0.8);
  padding: 1.6rem 1.7rem;
}
.stat--pain { background: oklch(0.19 0.07 285 / 0.6); }

/* placa como objeto (slides de dor) — herdado da v2 */
.placa-object { position: relative; display: grid; place-items: center; margin-bottom: 1.3rem; }
.placa-object img {
  width: clamp(96px, 12vw, 150px); height: auto;
  filter: drop-shadow(0 18px 34px oklch(0 0 0 / 0.5));
  transform: perspective(700px) rotateY(-9deg) rotateX(3deg);
}
.placa-object::after {
  content: ''; position: absolute; top: 96%; width: 3px; height: 8vh;
  background: linear-gradient(to bottom, oklch(0.45 0.01 250), transparent);
}
.placa-object--dim img { opacity: 0.62; filter: drop-shadow(0 18px 34px oklch(0 0 0 / 0.5)) saturate(0.55); }

/* ---------- dobradiça (slide 7): a transição dark → light ---------------- */
.slide--hinge {
  background-color: var(--field-ink);
  background-image:
    var(--noise),
    radial-gradient(90% 70% at 50% 0%, oklch(0.18 0.06 292 / 0.9) 0%, transparent 70%),
    linear-gradient(180deg, oklch(0.13 0.04 282) 0%, oklch(0.24 0.05 292) 46%, oklch(0.62 0.07 292) 86%, var(--paper) 118%);
  background-size: 200px 200px, 100% 100%, 100% 100%;
  background-repeat: repeat, no-repeat, no-repeat;
}
.slide--hinge .plate--hero {
  background: oklch(0.13 0.03 280 / 0.72);
  border: 1px solid oklch(0.72 0.14 292 / 0.5);
  box-shadow: var(--edge-hairline), 0 0 44px oklch(0.55 0.22 292 / 0.35);
  backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px);
}
.slide--hinge .plate-pin {
  /* a primeira sinapse acende em ciano oficial — verdade operacional */
  background: radial-gradient(closest-side, oklch(0.977 0.019 213) 0%, var(--cyan) 45%, oklch(0.7 0.15 230 / 0) 100%);
  width: 14px; height: 14px; border-radius: 50%;
}

/* ---------- longo prazo: camadas futuras como sinapses sutis -------------- */
.slide--layers .slide-inner::before {
  content: ''; position: absolute; inset: -8% -12%; z-index: -1;
  background:
    linear-gradient(115deg, transparent 46%, oklch(0.55 0.22 292 / 0.16) 47%, transparent 48.5%),
    linear-gradient(100deg, transparent 62%, oklch(0.68 0.19 305 / 0.12) 63%, transparent 64.5%),
    linear-gradient(128deg, transparent 76%, oklch(0.72 0.14 292 / 0.1) 77%, transparent 78.5%);
}

/* ---------- requiem (15): ink profundo, chevron presente ------------------ */
.slide--requiem {
  background-color: var(--requiem-ink-deep);
  background-image:
    var(--noise),
    linear-gradient(90deg, oklch(0.13 0.09 285 / 0.5) 30%, transparent 100%),
    var(--chevron),
    linear-gradient(155deg, var(--requiem-ink-deep) 0%, oklch(0.13 0.08 285) 55%, oklch(0.1 0.05 280) 100%);
  background-size: 200px 200px, 100% 100%, auto 136%, 100% 100%;
  background-position: 0 0, 0 0, right center, 0 0;
  background-repeat: repeat, no-repeat, no-repeat, no-repeat;
}
.slide--requiem .stat--requiem {
  background: oklch(0.2 0.09 288 / 0.55);
  box-shadow: var(--edge-hairline), 0 30px 70px -34px oklch(0 0 0 / 0.8);
  border: 1px solid oklch(0.72 0.15 296 / 0.3);
}

/* ---------- builds: revelação automática em cascata ----------------------- */
/* deck.js seta --bi (índice do build); a entrada do slide rege o stagger */
.slide.is-active [data-build].is-shown {
  transition-delay: calc(180ms + var(--bi, 0) * 90ms);
}
@media (prefers-reduced-motion: reduce) {
  .slide.is-active [data-build].is-shown { transition-delay: 0s; }
}

/* números grandes com entrada viva (herdado da v2) */
@media (prefers-reduced-motion: no-preference) {
  .slide.is-active .stat-num.xl { animation: v3-num-in 0.9s var(--ease-out) both; animation-delay: 0.3s; }
  @keyframes v3-num-in {
    from { opacity: 0; transform: translateY(10px) scale(0.985); filter: blur(3px); }
    to { opacity: 1; transform: none; filter: none; }
  }
}

/* ---------- print ---------------------------------------------------------- */
@media print {
  .slide, .slide--cover, .slide--cta, .slide--requiem, .slide--hinge {
    print-color-adjust: exact; -webkit-print-color-adjust: exact;
  }
  .slide[data-theme="light"] { background: #fff !important; }
}
