  :root{
    --ink:#0d0f12;
    --ink-2:#15181d;
    --paper:#f4ede0;
    --paper-dim:#cdc3b2;
    --gold:#5ab0e6;
    --gold-bright:#8fd0f7;
    --rust:#3d83c4;
    --teal:#3a8f88;
    --line:rgba(90,176,230,.22);
    --serif:'Fraunces',Georgia,serif;
    --sans:'Archivo',sans-serif;
    --mono:'JetBrains Mono',monospace;
  }
  *{margin:0;padding:0;box-sizing:border-box}
  html,body{height:100%;overflow:hidden;background:var(--ink);color:var(--paper)}
  body{font-family:var(--sans);-webkit-font-smoothing:antialiased;
    touch-action:pan-y;overscroll-behavior:none;-webkit-tap-highlight-color:transparent}

  /* ---------- DECK FRAME ---------- */
  .deck{position:fixed;inset:0}
  .slide{
    position:absolute;inset:0;
    display:flex;flex-direction:column;justify-content:center;
    padding:6vh 8vw;
    opacity:0;visibility:hidden;
    transform:translateX(40px);
    transition:opacity .55s ease, transform .55s cubic-bezier(.22,.61,.36,1), visibility .55s;
    overflow:hidden;
  }
  .slide.active{opacity:1;visibility:visible;transform:translateX(0)}
  .slide.prev{transform:translateX(-40px)}

  /* atmospheric background layers */
  .grain{position:fixed;inset:0;pointer-events:none;z-index:50;opacity:.05;
    background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");}
  .vignette{position:fixed;inset:0;pointer-events:none;z-index:1;
    background:radial-gradient(120% 90% at 50% 12%,transparent 40%,rgba(0,0,0,.55) 100%)}

  /* ---------- SHARED TYPE ---------- */
  .kicker{font-family:var(--mono);font-size:clamp(.62rem,1vw,.8rem);letter-spacing:.32em;
    text-transform:uppercase;color:var(--gold);margin-bottom:1.6rem;display:flex;align-items:center;gap:.9rem}
  .kicker::before{content:"";width:34px;height:1px;background:var(--gold)}
  h1{font-family:var(--serif);font-weight:900;line-height:.96;letter-spacing:-.02em;
    font-size:clamp(2.6rem,6.6vw,6rem)}
  h2{font-family:var(--serif);font-weight:600;line-height:1.02;letter-spacing:-.015em;
    font-size:clamp(2rem,4.4vw,3.7rem)}
  .lead{font-size:clamp(1rem,1.55vw,1.4rem);line-height:1.6;color:var(--paper-dim);
    max-width:60ch;font-weight:300;margin-top:1.6rem}
  .lead strong{color:var(--paper);font-weight:600}
  em.hl{font-style:normal;color:var(--gold-bright)}

  /* reveal-on-click children */
  .reveal{opacity:0;transform:translateY(22px);transition:opacity .6s ease,transform .6s cubic-bezier(.22,.61,.36,1)}
  .slide.active .reveal.shown{opacity:1;transform:translateY(0)}

  /* ---------- SLIDE 1 ---------- */
  #s1{justify-content:center}
  #s1 .big{font-size:clamp(3rem,9vw,8.5rem)}
  #s1 .sub{font-family:var(--serif);font-style:italic;font-weight:500;
    font-size:clamp(1.1rem,2.3vw,2rem);color:var(--gold-bright);margin-top:1.4rem;max-width:30ch}
  #s1 .meta{font-family:var(--mono);font-size:.78rem;letter-spacing:.2em;color:var(--paper-dim);
    margin-top:3rem;text-transform:uppercase}
  /* teia de conexões animada (fundo da abertura) */
  #s1 .web-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
    z-index:0;opacity:.55;pointer-events:none}
  #s1 > :not(.web-bg){position:relative;z-index:1}

  /* ---------- AGENDA ---------- */
  .agenda{display:grid;gap:1.1rem;margin-top:2.4rem;max-width:70ch}
  .agenda .step{display:flex;gap:1.4rem;align-items:baseline;padding-bottom:1.1rem;border-bottom:1px solid var(--line)}
  .agenda .num{font-family:var(--mono);color:var(--gold);font-size:.9rem;min-width:2.4rem}
  .agenda .txt{font-family:var(--serif);font-size:clamp(1.1rem,2vw,1.7rem);font-weight:500}
  .agenda .step:nth-child(1){transition-delay:.05s}
  .agenda .step:nth-child(2){transition-delay:.15s}
  .agenda .step:nth-child(3){transition-delay:.25s}
  .agenda .step:nth-child(4){transition-delay:.35s}

  /* ---------- EVOLUTION TABLE (slide 4) ---------- */
  .evo{display:grid;gap:.55rem;margin-top:1.5rem;max-width:80ch}
  .evo.two-col{grid-template-columns:1.45fr 1fr;gap:1.6rem;align-items:center;max-width:none;margin-top:1.2rem}
  .evo-left{display:grid;gap:.55rem;min-width:0}
  .evo-right{display:flex;align-items:center;min-width:0}
  .evo-right .row{width:100%}
  .evo .row{display:grid;grid-template-columns:120px 1fr;gap:1.2rem;align-items:center;
    padding:.6rem 1.1rem;border:1px solid var(--line);border-radius:8px;background:rgba(255,255,255,.015)}
  .evo .gen{font-family:var(--mono);font-size:.8rem;letter-spacing:.12em;color:var(--gold);text-transform:uppercase}
  .evo .code{font-family:var(--mono);font-size:clamp(.7rem,1vw,.92rem);color:var(--paper);
    min-width:0;overflow-wrap:anywhere;line-height:1.5}
  .evo .row.prompt{border-color:var(--gold);background:rgba(90,176,230,.07)}
  .evo .row.prompt .code{color:var(--gold-bright);font-family:var(--serif);font-style:italic;font-size:clamp(.95rem,1.6vw,1.3rem)}
  .evo-left .row:nth-child(1){transition-delay:.05s}
  .evo-left .row:nth-child(2){transition-delay:.13s}
  .evo-left .row:nth-child(3){transition-delay:.21s}
  .evo-left .row:nth-child(4){transition-delay:.29s}

  /* ---------- BIG NUMBERS (slide 5) ---------- */
  .nums{display:grid;grid-template-columns:repeat(3,1fr);gap:2.5vw;margin-top:2.6rem}
  .nums .n{border-top:2px solid var(--gold)}
  .nums .fig{font-family:var(--serif);font-weight:900;font-size:clamp(2.4rem,6vw,5rem);
    line-height:1;color:var(--gold-bright);margin-top:1rem}
  .nums .cap{font-size:clamp(.8rem,1.1vw,1rem);color:var(--paper-dim);margin-top:.8rem;line-height:1.4;font-weight:300}
  .nums .n:nth-child(1){transition-delay:.05s}
  .nums .n:nth-child(2){transition-delay:.2s}
  .nums .n:nth-child(3){transition-delay:.35s}

  /* ---------- PROOF / HEADLINES (slide 6) ---------- */
  .headlines{display:grid;grid-template-columns:repeat(2,1fr);gap:1rem;margin-top:1.8rem;max-width:92ch}
  .hl-card{border:1px solid var(--line);border-left:3px solid var(--rust);border-radius:6px;
    padding:1.1rem 1.3rem;background:rgba(255,255,255,.02)}
  .hl-card .src{font-family:var(--mono);font-size:.66rem;letter-spacing:.16em;text-transform:uppercase;color:var(--gold);margin-bottom:.5rem}
  .hl-card .head{font-family:var(--serif);font-size:clamp(.95rem,1.35vw,1.15rem);line-height:1.25;font-weight:500}
  .hl-card .stat{color:var(--gold-bright)}
  .headlines .hl-card:nth-child(1){transition-delay:.05s}
  .headlines .hl-card:nth-child(2){transition-delay:.13s}
  .headlines .hl-card:nth-child(3){transition-delay:.21s}
  .headlines .hl-card:nth-child(4){transition-delay:.29s}

  /* ---------- CONCEPT SLIDES w/ SVG ---------- */
  .concept{display:grid;grid-template-columns:1.1fr .9fr;gap:5vw;align-items:center}
  .concept .art{display:flex;align-items:center;justify-content:center}
  .concept svg{width:min(34vw,420px);height:auto;overflow:visible}
  .ladder-step,.gear,.brick,.w-item{transition:all .5s ease}

  .w2h{display:grid;grid-template-columns:repeat(2,auto);gap:.6rem 2rem;margin-top:1.8rem;font-family:var(--mono);font-size:.95rem}
  .w2h span{color:var(--gold)}
  .w2h b{color:var(--paper);font-weight:600}

  .effgrid{display:grid;grid-template-columns:1fr 1fr;gap:2rem;margin-top:2rem;max-width:70ch}
  .effgrid .box{padding:1.4rem 1.5rem;border:1px solid var(--line);border-radius:8px}
  .effgrid .box h3{font-family:var(--serif);font-size:1.4rem;color:var(--gold-bright);margin-bottom:.6rem}
  .effgrid .box p{color:var(--paper-dim);font-size:.95rem;line-height:1.5;font-weight:300}
  .mult{font-family:var(--serif);font-weight:900;font-size:clamp(3rem,8vw,7rem);color:var(--gold-bright);line-height:1}
  .rocket-link{color:var(--gold);display:inline-flex;align-items:center;flex-shrink:0;
    transition:transform .25s ease,color .25s ease}
  .rocket-link:hover{color:var(--gold-bright);transform:translateY(-5px) rotate(-8deg)}
  .rocket-link svg{width:46px;height:46px;display:block}

  /* ---------- DEMO SLIDES w/ IFRAME ---------- */
  .demo{display:grid;grid-template-rows:auto 1fr;gap:1.4rem;height:100%}
  .demo-head{display:flex;justify-content:space-between;align-items:flex-end;flex-wrap:wrap;gap:1rem}
  .demo-desc{max-width:62ch;color:var(--paper-dim);font-weight:300;font-size:clamp(.9rem,1.2vw,1.1rem);line-height:1.55}
  .demo-desc b{color:var(--gold-bright);font-weight:600}
  .frame-wrap{position:relative;border:1px solid var(--line);border-radius:12px;overflow:hidden;
    background:var(--ink-2);box-shadow:0 30px 80px rgba(0,0,0,.5)}
  .frame-bar{display:flex;align-items:center;gap:.5rem;padding:.7rem 1rem;background:rgba(0,0,0,.4);border-bottom:1px solid var(--line)}
  .frame-bar .dot{width:11px;height:11px;border-radius:50%}
  .frame-bar .url{flex:1;font-family:var(--mono);font-size:.72rem;color:var(--paper-dim);
    background:rgba(255,255,255,.04);padding:.35rem .8rem;border-radius:5px;margin-left:.6rem}
  .frame-wrap iframe{width:100%;height:calc(100% - 44px);border:0;background:#fff;display:block}
  .demo-tag{font-family:var(--mono);font-size:.7rem;letter-spacing:.2em;color:var(--rust);text-transform:uppercase}

  /* demo consolidada: abas + etapas */
  .demo-tabs{display:flex;gap:.5rem;flex-wrap:wrap;margin-bottom:.4rem}
  .demo-tab{font-family:var(--mono);font-size:.72rem;letter-spacing:.06em;color:var(--paper-dim);
    background:rgba(255,255,255,.03);border:1px solid var(--line);border-radius:6px;
    padding:.5rem .8rem;cursor:pointer;transition:.25s;display:flex;align-items:center;gap:.45rem}
  .demo-tab span{color:var(--gold);font-weight:600}
  .demo-tab:hover{background:rgba(90,176,230,.08);color:var(--paper)}
  .demo-tab.active{background:rgba(90,176,230,.16);border-color:var(--gold);color:var(--paper)}
  .demo-stage{display:none}
  .demo-stage.active{display:block;animation:stagein .4s ease}
  @keyframes stagein{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}

  /* demo split (slide 16): acordeão de itens (esq.) + acordeão de iframes (dir.) */
  .demo-split{display:grid;grid-template-columns:4fr 6fr;gap:1.4rem;min-height:0}
  .demo-left{min-height:0}
  .demo-left .frame-wrap{height:100%;margin:0}
  .demo-right{min-height:0}
  .accordion{display:flex;flex-direction:column;gap:.5rem;height:100%;overflow:auto;padding-right:.3rem}
  .acc-item{border:1px solid var(--line);border-radius:6px;background:rgba(255,255,255,.03);overflow:hidden}
  .acc-head{width:100%;text-align:left;font-family:var(--mono);font-size:.74rem;letter-spacing:.06em;
    color:var(--paper-dim);background:transparent;border:0;padding:.7rem .8rem;cursor:pointer;
    display:flex;align-items:center;gap:.5rem;transition:.25s}
  .acc-num{color:var(--gold);font-weight:600}
  .acc-head:hover{background:rgba(90,176,230,.08);color:var(--paper)}
  .acc-item.active>.acc-head{background:rgba(90,176,230,.16);color:var(--paper)}
  .acc-body{max-height:0;overflow:hidden;transition:max-height .35s ease}
  .acc-item.active>.acc-body{max-height:360px}
  .acc-body p{margin:0;padding:.2rem .9rem .9rem;color:var(--paper-dim);font-weight:300;line-height:1.5;
    font-size:clamp(.82rem,1vw,.95rem)}
  .acc-body b{color:var(--gold-bright);font-weight:600}
  /* acordeão de iframes (coluna direita do slide 16): o item ativo preenche a coluna */
  .iframe-acc{overflow:hidden}
  .iframe-acc .acc-item{display:flex;flex-direction:column;min-height:0}
  .iframe-acc .acc-item.active{flex:1 1 auto;min-height:0}
  .iframe-acc .acc-frame{display:none;min-height:0}
  .iframe-acc .acc-item.active>.acc-frame{display:flex;flex-direction:column;flex:1;min-height:0}
  .iframe-acc .acc-frame .frame-wrap{flex:1;min-height:0;height:auto;margin:0;border:0;border-top:1px solid var(--line);border-radius:0}
  .iframe-acc .acc-frame .frame-wrap iframe{height:100%}
  /* link (data-src original) no cabeçalho — abre em nova aba */
  .iframe-acc .acc-head{flex-wrap:wrap}
  .iframe-acc .acc-link{flex-basis:100%;margin-top:.25rem;color:var(--gold-bright);
    text-decoration:underline;word-break:break-all;font-size:.66rem;font-weight:400;text-transform:none;letter-spacing:0}
  .iframe-acc .acc-link:hover{color:#fff}

  /* ---------- PERSPECTIVE SLIDES w/ illustration ---------- */
  .persp{display:grid;grid-template-columns:1fr 1fr;gap:5vw;align-items:center;height:100%}
  .persp .illus{position:relative;border-radius:14px;overflow:hidden;height:72vh;
    box-shadow:0 30px 80px rgba(0,0,0,.55);border:1px solid var(--line)}
  .persp .illus svg{position:absolute;inset:0;width:100%;height:100%}
  /* slide 7: imagem PNG (paisagem) — o quadro abraça a imagem */
  #s7 .illus{height:auto;border:0}
  #s7 .illus img{display:block;width:100%;height:auto}

  /* slide 18 (custos): duas imagens empilhadas na coluna direita */
  #s20 .art{flex-direction:column;gap:1rem}
  #s20 .art img{width:min(34vw,420px);height:auto;display:block;
    border:1px solid var(--line);border-radius:10px;background:#fff}

  /* ---------- CARROSSEL de imagens ---------- */
  .carousel{position:relative;width:min(72vw,780px);margin:1.8rem auto 0;align-self:center;
    border:1px solid var(--line);border-radius:14px;overflow:hidden;
    box-shadow:0 30px 80px rgba(0,0,0,.5);background:var(--ink-2)}
  .carousel-track{display:flex;transition:transform .55s cubic-bezier(.22,.61,.36,1);cursor:pointer}
  .carousel-item{min-width:100%}
  .carousel-item img{display:block;width:100%;height:auto}
  .carousel-btn{position:absolute;top:50%;transform:translateY(-50%);z-index:2;
    width:44px;height:44px;border-radius:50%;border:1px solid var(--line);
    background:rgba(13,15,18,.5);color:var(--paper);font-size:1.7rem;line-height:1;
    cursor:pointer;display:flex;align-items:center;justify-content:center;
    padding-bottom:3px;transition:.25s}
  .carousel-btn:hover{background:rgba(90,176,230,.28);border-color:var(--gold);color:var(--gold-bright)}
  .carousel-btn.prev{left:14px}
  .carousel-btn.next{right:14px}
  .carousel-dots{position:absolute;bottom:14px;left:0;right:0;z-index:2;
    display:flex;justify-content:center;gap:9px}
  .carousel-dots i{width:9px;height:9px;border-radius:50%;background:rgba(244,237,224,.35);
    cursor:pointer;transition:.25s}
  .carousel-dots i.on{background:var(--gold);transform:scale(1.25)}

  /* ---------- NUVEM DE PALAVRAS (slide 13) ---------- */
  #s14 .concept svg.wordcloud{width:min(42vw,560px);overflow:hidden;border-radius:14px;
    border:1px solid var(--line);box-shadow:0 30px 80px rgba(0,0,0,.45)}
  .wordcloud .cloud-level,.wordcloud .cloud-center{opacity:0;transition:opacity .7s ease}
  .wordcloud .cloud-level.show,.wordcloud .cloud-center.show{opacity:1}

  /* slide 15: GIF de machine learning na coluna direita */
  /* slide 17 (s15): coluna da imagem mais larga p/ a imagem crescer */
  #s17 .concept{grid-template-columns:1fr 1.08fr;gap:3.5vw}
  #s17 .art img{width:100%;max-width:580px;height:auto;border-radius:12px;
    border:1px solid var(--line);box-shadow:0 24px 70px rgba(0,0,0,.45)}
  /* slide 15: compactar verticalmente (conteúdo + lista) */
  #s17 .txtcol h2{font-size:clamp(1.6rem,3.4vw,2.8rem)}
  #s17 .lead{margin-top:1.1rem}
  /* lista de exemplos (slide 15) */
  .ml-list{list-style:none;margin-top:.5rem;display:grid;gap:.45rem;max-width:60ch}
  .ml-list li{position:relative;padding-left:1.4rem;color:var(--paper-dim);font-weight:300;
    font-size:clamp(.95rem,1.3vw,1.15rem);line-height:1.45}
  .ml-list li::before{content:"";position:absolute;left:.1rem;top:.55em;width:7px;height:7px;
    border-radius:50%;background:var(--gold)}
  .ml-list li strong{color:var(--paper);font-weight:600}

  /* slide 10: círculos concêntricos revelados no clique (fade, sem deslize) */
  #s15 .levels-circles .reveal{transform:none}

  /* slide 17: título + link de custo ($) e imagens empilhadas */
  #s20 .title-row{display:flex;align-items:center;gap:1.1rem;flex-wrap:wrap}
  .cost-link{color:var(--gold);display:inline-flex;flex-shrink:0;
    transition:transform .25s ease,color .25s ease}
  .cost-link:hover{color:var(--gold-bright);transform:scale(1.12)}
  .cost-link svg{width:42px;height:42px;display:block}
  #s20 .art{flex-direction:column;gap:.55rem}
  #s20 .art img{width:100%;max-width:270px;height:auto;border-radius:8px;
    border:1px solid var(--line);box-shadow:0 14px 40px rgba(0,0,0,.4)}

  /* slide 16: erros como cards de alerta em 2 colunas */
  #s19 .alert-grid{display:grid;grid-template-columns:1fr 1fr;gap:.8rem;margin-top:1.3rem;max-width:74ch}
  #s19 .alert{display:flex;align-items:center;gap:.8rem;padding:.8rem 1rem;border-radius:8px;
    border:1px solid rgba(224,86,77,.32);border-left:3px solid #e0564d;background:rgba(224,86,77,.08)}
  #s19 .alert .num{font-family:var(--mono);font-size:.85rem;font-weight:600;color:#e0564d;flex-shrink:0}
  #s19 .alert .txt{font-size:clamp(.92rem,1.1vw,1.08rem);color:var(--paper);line-height:1.3;font-weight:500}
  #s19 .alert:last-child{grid-column:1 / -1}

  /* slide 19: duas colunas — conteúdo à esquerda, frase de destaque à direita */
  #s19 .poc-split{display:grid;grid-template-columns:1.3fr .7fr;gap:4vw;align-items:center;margin-top:1.1rem}
  #s19 .poc-left{min-width:0}
  #s19 .poc-right{display:flex;align-items:center;justify-content:center;height:100%}
  #s19 .delirio{font-family:var(--serif);font-weight:900;font-style:italic;line-height:1.1;
    font-size:clamp(1.6rem,3.2vw,3rem);color:var(--gold-bright);text-align:center;letter-spacing:-.01em}

  /* novo slide Tipos de IA: diagrama ANI/AGI/ASI + mapa MAD */
  #s18 .concept svg.ai-levels{width:min(42vw,560px);margin-top:.6rem}
  #s18 .map-block{display:flex;flex-direction:column;align-items:center;gap:.55rem}
  #s18 .art img{width:100%;height:auto;display:block;border-radius:10px;
    border:1px solid var(--line);box-shadow:0 24px 70px rgba(0,0,0,.45)}

  /* ===== links externos / novas imagens / carrossel notícias / nav / modais ===== */
  .img-extlink{font-family:var(--mono);font-size:.72rem;letter-spacing:.06em;color:var(--gold);
    text-decoration:none;border-bottom:1px solid rgba(90,176,230,.4);transition:color .2s,border-color .2s;cursor:pointer}
  .img-extlink:hover{color:var(--gold-bright);border-color:var(--gold-bright)}

  #s9 .concept svg.responde{width:min(46vw,580px)}
  /* slide 9 (s8): setas com fluxo contínuo + revelação sequencial do 5W2H */
  .responde .arr{fill:none;stroke-width:1.7;stroke-opacity:.9;
    stroke-dasharray:7 5;animation:arrflow .85s linear infinite}
  .responde .arr-pc{stroke:#9098a0}
  .responde .arr-ia{stroke:#5ab0e6}
  @keyframes arrflow{to{stroke-dashoffset:-24}}
  .responde .w2h-row{opacity:0}
  .responde.shown .w2h-row{opacity:1;animation-name:w2hrow;animation-duration:.5s;
    animation-timing-function:ease;animation-fill-mode:forwards}
  @keyframes w2hrow{from{opacity:0}to{opacity:1}}

  /* slide 11: comparação Humano x IA LLMs em SVG (substitui a imagem) */
  #s11 .art svg{width:min(40vw,520px);height:auto;overflow:visible}
  /* slide 11: digitação encadeada — letras (.fl-letter) e marcas (.fl-mark) começam
     ocultas e são reveladas por animation-delay (inline) quando o slide fica ativo.
     A duração/curva vem da classe; o atraso de cada elemento vem do style inline. */
  #s11 .fl-letter,#s11 .fl-mark{opacity:0}
  #s11.active .fl-letter{animation-name:fl-type;animation-duration:.05s;animation-timing-function:steps(1);animation-fill-mode:both}
  #s11.active .fl-mark{animation-name:fl-pop;animation-duration:.32s;animation-timing-function:ease;animation-fill-mode:both}
  @keyframes fl-type{from{opacity:0}to{opacity:1}}
  @keyframes fl-pop{from{opacity:0}to{opacity:1}}
  /* slides 5 e 10: imagem direita maior, preenchendo a coluna (como no slide 7) */
  #s10 .art img,#s5 .art img{width:100%;height:auto;display:block;
    border-radius:10px;border:1px solid var(--line);box-shadow:0 22px 60px rgba(0,0,0,.4)}
  #s21 .illus{height:auto;border:0;box-shadow:none}
  /* slide 21: imagem preenche a coluna (como no slide 7) */
  #s21 .illus img{width:100%;height:auto;border-radius:12px;display:block}

  /* cursor de zoom em imagens clicáveis (carrossel fica de fora) */
  .illus img,.art img,.frame-wrap img,.contact-qr img{cursor:zoom-in}
  .carousel img{cursor:default}

  /* carrossel de notícias (slide 8) + legenda inferior */
  .news-carousel .carousel-item{min-width:100%;height:46vh;display:flex;align-items:center;
    justify-content:center;background:#0b0d10}
  .news-carousel .carousel-item img{width:auto;height:auto;max-width:100%;max-height:100%;object-fit:contain}
  .carousel-caption{position:absolute;left:0;right:0;bottom:0;z-index:2;display:flex;justify-content:center;
    padding:.55rem .8rem;background:linear-gradient(transparent,rgba(0,0,0,.74))}
  .carousel-cap-link{font-family:var(--mono);font-size:.74rem;letter-spacing:.08em;color:var(--gold-bright);
    text-decoration:none;border-bottom:1px solid rgba(143,208,247,.5)}
  .carousel-cap-link:hover{color:#fff;border-color:#fff}
  /* legenda abaixo do carrossel de notícias (slide 8) */
  .carousel-note{text-align:center;margin-top:1.1rem;opacity:.82;
    font-size:clamp(.92rem,1.5vw,1.1rem);font-style:italic}

  /* botões de navegação laterais */
  .nav-btn{position:fixed;top:50%;transform:translateY(-50%);z-index:45;width:52px;height:52px;
    border-radius:50%;border:1px solid var(--line);background:rgba(13,15,18,.5);color:#2c6aa0;
    font-size:2rem;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;
    padding-bottom:4px;transition:color .2s,background .2s,border-color .2s,opacity .25s}
  .nav-btn:hover{color:#8fd0f7;border-color:#8fd0f7;background:rgba(90,176,230,.18)}
  .nav-prev{left:18px}
  .nav-next{right:18px}
  .nav-btn.hidden{opacity:0;pointer-events:none}

  /* modais full-screen (zoom de imagem / iframe de link) */
  .modal{position:fixed;inset:0;z-index:80;display:none;align-items:center;justify-content:center;
    background:rgba(0,0,0,.5);padding:4vh 4vw}
  .modal.open{display:flex;animation:modalin .25s ease}
  @keyframes modalin{from{opacity:0}to{opacity:1}}
  .modal-close{position:absolute;top:18px;right:24px;z-index:2;width:44px;height:44px;border-radius:50%;
    border:1px solid var(--line);background:rgba(13,15,18,.65);color:var(--paper);font-size:1.7rem;line-height:1;
    cursor:pointer;display:flex;align-items:center;justify-content:center;transition:.2s}
  .modal-close:hover{color:#8fd0f7;border-color:#8fd0f7}
  .img-modal .modal-img{max-width:92vw;max-height:90vh;width:auto;height:auto;border-radius:8px;
    box-shadow:0 30px 90px rgba(0,0,0,.7)}
  .iframe-modal .modal-iframe{width:92vw;height:88vh;border:0;border-radius:10px;background:#fff;
    box-shadow:0 30px 90px rgba(0,0,0,.7)}
  .persp-cap{position:absolute;bottom:0;left:0;right:0;padding:1.4rem;font-family:var(--mono);
    font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--paper);
    background:linear-gradient(transparent,rgba(0,0,0,.7))}

  .timeline{display:grid;gap:1rem;margin-top:2rem;max-width:60ch}
  .timeline .era{display:flex;gap:1.3rem;align-items:baseline;opacity:.5;transition:opacity .5s}
  .timeline .era.now{opacity:1}
  .timeline .yr{font-family:var(--mono);color:var(--gold);font-size:.85rem;min-width:5.5rem}
  .timeline .ev{font-family:var(--serif);font-size:clamp(1rem,1.8vw,1.5rem)}
  .timeline .era.now .ev{color:var(--gold-bright)}

  /* ---------- CLOSING QUOTE (síntese) ---------- */
  #s22{justify-content:center;text-align:center;align-items:center}
  #s22 .kicker{justify-content:center;font-size:clamp(.8rem,1.4vw,1.05rem);margin-bottom:2.2rem}
  #s22 .quote{max-width:75vw;margin:0 auto;font-weight:400;line-height:1.28;
    font-size:clamp(1.9rem,4.4vw,3.6rem)}
  #s22 .quote strong{font-weight:700;color:var(--gold-bright)}

  /* ---------- CONTATO (slide 20) ---------- */
  #s23{justify-content:center}
  /* slide 23: duas colunas — título/parágrafo à esquerda, contato + QR à direita */
  #s23 .thanks-split{display:grid;grid-template-columns:1fr 1fr;gap:5vw;align-items:center}
  #s23 .thanks-right{display:flex;align-items:center}
  #s23 .contact-split{display:grid;grid-template-columns:2.4fr 1fr;gap:1.6rem;
    align-items:center;margin-top:0;max-width:none;width:100%}
  #s23 .contact-info{font-family:var(--mono);font-size:.85rem;letter-spacing:.18em;
    color:var(--gold);line-height:2.2;text-transform:uppercase}
  #s23 .contact-info strong{font-weight:600;font-size:calc(.85rem + 2pt)}
  #s23 .contact-info a{color:var(--gold);text-decoration:none;
    border-bottom:1px solid rgba(90,176,230,.4);transition:color .2s,border-color .2s}
  #s23 .contact-info a:hover{color:var(--gold-bright);border-color:var(--gold-bright)}
  #s23 .contact-qr img{width:100%;max-width:170px;height:auto;display:block;
    background:#fff;padding:.5rem;border-radius:10px}
  /* GitHub corner (slide final): octocat com braço que acena no hover */
  .github-corner{position:absolute;top:0;right:0;z-index:30;border:0;color:var(--ink)}
  .github-corner svg{position:absolute;top:0;right:0;border:0;width:84px;height:84px;
    fill:var(--gold);color:var(--ink)}
  .github-corner:hover svg{fill:var(--gold-bright)}
  .github-corner .octo-arm{transform-origin:130px 106px}
  .github-corner:hover .octo-arm{animation:octocat-wave 560ms ease-in-out}
  @keyframes octocat-wave{0%,100%{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}
  @media (max-width:500px){
    .github-corner:hover .octo-arm{animation:none}
    .github-corner .octo-arm{animation:octocat-wave 560ms ease-in-out}
  }

  /* ---------- HUD ---------- */
  .hud{position:fixed;bottom:0;left:0;right:0;z-index:40;display:flex;justify-content:space-between;
    align-items:center;padding:1.1rem 2.2rem;pointer-events:none}
  .hud .id{font-family:var(--mono);font-size:.68rem;letter-spacing:.2em;color:var(--paper-dim);text-transform:uppercase}
  .progress{position:fixed;top:0;left:0;height:3px;background:var(--gold);z-index:60;transition:width .5s ease}
  .hint{position:fixed;bottom:3.2rem;left:50%;transform:translateX(-50%);z-index:41;
    font-family:var(--mono);font-size:.66rem;letter-spacing:.16em;color:var(--paper-dim);
    text-transform:uppercase;display:flex;gap:1.4rem;align-items:center}
  .hint kbd{border:1px solid var(--line);border-radius:4px;padding:.1rem .45rem;color:var(--gold)}
  .hint.fade{animation:hintfade 1s ease 6s forwards}
  @keyframes hintfade{to{opacity:0;visibility:hidden}}
  /* mostra a dica certa por dispositivo: ponteiro fino = desktop; toque = mobile */
  .hint-touch{display:none}
  @media (hover:none) and (pointer:coarse){
    .hint-desktop{display:none}
    .hint-touch{display:inline-flex;align-items:center;gap:.4rem}
  }
  .dots{display:flex;gap:6px;pointer-events:auto}
  .dots i{position:relative;width:7px;height:7px;border-radius:50%;background:rgba(244,237,224,.2);cursor:pointer;transition:.3s}
  .dots i.on{background:var(--gold);transform:scale(1.3)}
  /* tooltip do título em cada bolinha de navegação */
  .dots i::after{content:attr(data-tip);position:absolute;left:50%;bottom:230%;
    transform:translateX(-50%) translateY(4px);white-space:nowrap;
    background:var(--ink-2);color:var(--paper);border:1px solid var(--line);
    padding:.4rem .62rem;border-radius:6px;font-family:var(--mono);font-size:.66rem;
    letter-spacing:.03em;line-height:1;pointer-events:none;opacity:0;
    transition:opacity .18s ease,transform .18s ease;z-index:60;
    box-shadow:0 10px 30px rgba(0,0,0,.55)}
  .dots i:hover{background:var(--gold)}
  .dots i:hover::after{opacity:1;transform:translateX(-50%) translateY(0)}

  .clickcue{display:inline-flex;align-items:center;order:-1;opacity:.75}
  .clickcue .pulse{width:10px;height:10px;border-radius:50%;background:var(--gold);animation:pulse 1.6s ease infinite}
  /* para de pulsar quando a última animação do slide foi ativada */
  .clickcue.done .pulse{animation:none;opacity:.3}
  /* slide 13: fluxo de dados (DIKW) — SVG animado que referencia as imagens
     do antigo carrossel (1,5 s por etapa). INLINE de propósito: um SVG externo
     carregado via <img> não consegue buscar as imagens-quadro. */
  #s13 .art svg.flow-svg{width:min(42vw,440px);height:auto;display:block;background:#0b0d10;
    border:1px solid var(--line);border-radius:14px;box-shadow:0 30px 80px rgba(0,0,0,.5)}
  @keyframes pulse{0%,100%{opacity:.3;transform:scale(.8)}50%{opacity:1;transform:scale(1.2)}}

  @media(max-width:820px){
    .concept,.persp,#s19 .poc-split,#s23 .thanks-split{grid-template-columns:1fr}
    .persp .illus{height:34vh}
    .nums,.headlines,.effgrid{grid-template-columns:1fr}
    .concept .art{display:none}
  }

div#dots > i[data-tip="16 · Do chat ao enxame de agentes"] {
    background: orange;
}