/* ============================================================================
   ALIME — FOLHA DE ESTILO
   Planejamento de Transportes · Matias Barbosa/MG
   ----------------------------------------------------------------------------
   Editar:
   • Cores / fontes  → bloco 1) TEMA (:root).
   • Palco fixo 16:9 → bloco 2) (NÃO remover).
   • Cada slide tem seu bloco comentado (=== SLIDE N ===).
   ============================================================================ */

/* ============================================================================
   1) TEMA — VARIÁVEIS GLOBAIS
   ============================================================================ */
:root{
    /* —— Paleta: navy profundo + DOURADO (estradas) + ciano + magenta (ferrovia) —— */
    --navy-900:#03070f;
    --navy-850:#050c18;
    --navy-800:#071426;
    --navy-700:#0b1f38;
    --navy-650:#102844;

    --gold:#f3b13c;       /* dourado — cor primária (rodovias da capa) */
    --gold-2:#ffd479;     /* dourado claro — apoio */
    --cyan:#39d6e8;       /* ciano — destaque secundário */
    --teal:#1ea7b6;
    --blue:#3b82f6;       /* azul — conexões */
    --rail:#ff5a7e;       /* magenta — ferrovia / penalidade */
    --green:#37e07e;      /* verde — solução / decisão */
    --red:#ff465e;        /* vermelho — alerta */

    --white:#eef4ff;
    --soft:#aebfda;
    --dim:#6f83a6;
    --line:rgba(120,160,220,.16);

    --stage-bg:#02050c;
    --slide-bg:#040a16;

    --card:linear-gradient(155deg, rgba(15,32,58,.72), rgba(6,15,30,.5));
    --card-soft:linear-gradient(155deg, rgba(13,28,52,.5), rgba(6,14,28,.32));
    --card-bd:rgba(120,160,220,.18);
    --shadow:0 24px 60px rgba(0,0,0,.5);

    --font:'Manrope', system-ui, sans-serif;
    --mono:'Space Mono', monospace;
    --t-h2:54px;
    --t-lead:27px;
    --t-body:21px;
    --t-small:16px;

    --ease:cubic-bezier(.16,1,.3,1);

    --pad-x:104px;
    --pad-y:80px;
}

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

/* ============================================================================
   2) PALCO FIXO 16:9
   ============================================================================ */
html,body{ width:100%; height:100%; overflow:hidden; background:var(--stage-bg);
    font-family:var(--font); color:var(--white); -webkit-font-smoothing:antialiased; }
.deck-viewport{ position:fixed; inset:0; overflow:hidden; background:var(--stage-bg); }
.deck-stage{ position:absolute; left:0; top:0; width:1920px; height:1080px; overflow:hidden;
    transform-origin:0 0; background:var(--slide-bg); }
.slide{ position:absolute; inset:0; width:1920px; height:1080px; overflow:hidden;
    visibility:hidden; opacity:0; pointer-events:none; background:var(--slide-bg); }
.slide.active,.slide.visible{ visibility:visible; opacity:1; pointer-events:auto; z-index:1; }

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

/* ============================================================================
   3) FUNDO COMUM — gradientes + grade técnica + orbes
   ============================================================================ */
.slide{ background:
        radial-gradient(1100px 760px at 6% 0%, rgba(243,177,60,.10) 0%, transparent 56%),
        radial-gradient(1200px 820px at 100% 100%, rgba(57,214,232,.10) 0%, transparent 60%),
        linear-gradient(160deg, #061227 0%, var(--slide-bg) 55%, #03060f 100%); }
.slide::before{ content:""; position:absolute; inset:0; z-index:0; pointer-events:none;
    background-image:linear-gradient(rgba(120,160,220,.045) 1px,transparent 1px),
                     linear-gradient(90deg, rgba(120,160,220,.045) 1px,transparent 1px);
    background-size:66px 66px;
    mask-image:radial-gradient(130% 105% at 50% 30%, #000 26%, transparent 84%); }
.orb{ position:absolute; border-radius:50%; filter:blur(64px); opacity:.5; z-index:0; pointer-events:none; }

.slide-inner{ position:absolute; inset:0; z-index:2; padding:var(--pad-y) var(--pad-x); }

/* ============================================================================
   4) CHROME — kicker, título, HUD, progresso, dots, controles
   ============================================================================ */
.kicker{ font-family:var(--mono); font-size:15px; letter-spacing:.26em; text-transform:uppercase;
    color:var(--gold); display:inline-flex; align-items:center; gap:14px; }
.kicker::before{ content:""; width:36px; height:2px;
    background:linear-gradient(90deg, var(--gold), transparent); box-shadow:0 0 12px var(--gold); }
.kicker.amber{ color:var(--gold-2); } .kicker.amber::before{ background:linear-gradient(90deg,var(--gold-2),transparent); box-shadow:0 0 12px var(--gold-2); }
.kicker.rail{ color:var(--rail); } .kicker.rail::before{ background:linear-gradient(90deg,var(--rail),transparent); box-shadow:0 0 12px var(--rail); }
.kicker.green{ color:var(--green); } .kicker.green::before{ background:linear-gradient(90deg,var(--green),transparent); box-shadow:0 0 12px var(--green); }

.slide-title{ font-weight:800; font-size:var(--t-h2); line-height:1.05; letter-spacing:-.02em; margin-top:16px; }
.grad{ background:linear-gradient(100deg, var(--gold), var(--cyan)); -webkit-background-clip:text; background-clip:text; color:transparent; }
.grad-gold{ background:linear-gradient(100deg, var(--gold), var(--gold-2)); -webkit-background-clip:text; background-clip:text; color:transparent; }
.grad-rail{ background:linear-gradient(100deg, var(--rail), var(--gold)); -webkit-background-clip:text; background-clip:text; color:transparent; }
.grad-green{ background:linear-gradient(100deg, var(--green), var(--cyan)); -webkit-background-clip:text; background-clip:text; color:transparent; }
.slide-lead,.lead{ font-size:var(--t-lead); color:var(--soft); line-height:1.42; margin-top:14px; max-width:1180px; }
.lead b{ color:var(--white); }

.hud-corner{ position:fixed; top:24px; right:32px; z-index:1000; display:flex; align-items:center; gap:18px;
    font-family:var(--mono); font-size:12.5px; letter-spacing:.14em; text-transform:uppercase; color:var(--dim); }
.hud-corner .brand{ color:var(--soft); } .hud-corner .brand b{ color:var(--gold); font-weight:700; }
.hud-corner a{ color:var(--dim); text-decoration:none; transition:color .25s; }
.hud-corner a:hover{ color:var(--gold); }

.deck-progress{ position:fixed; top:0; left:0; right:0; height:4px; z-index:1001; background:rgba(120,160,220,.1); }
.deck-progress span{ display:block; height:100%; width:10%;
    background:linear-gradient(90deg, var(--gold), var(--cyan)); box-shadow:0 0 16px rgba(243,177,60,.55);
    transition:width .5s var(--ease); }

.deck-dots{ position:fixed; right:28px; top:50%; transform:translateY(-50%); z-index:1000;
    display:flex; flex-direction:column; gap:12px; }
.deck-dots button{ width:11px; height:11px; border-radius:50%; border:1px solid var(--line);
    background:rgba(120,160,220,.14); cursor:pointer; padding:0; transition:all .3s var(--ease); }
.deck-dots button:hover{ border-color:var(--gold); }
.deck-dots button.on{ background:var(--gold); border-color:var(--gold); box-shadow:0 0 12px var(--gold);
    height:26px; border-radius:6px; }

.deck-controls{ position:fixed; left:50%; bottom:20px; transform:translateX(-50%); z-index:1000;
    display:flex; align-items:center; gap:14px; padding:8px 14px; border-radius:999px;
    background:linear-gradient(155deg, rgba(13,28,52,.8), rgba(6,14,28,.62)); border:1px solid var(--line);
    backdrop-filter:blur(8px); }
.dc-btn{ width:38px; height:38px; border-radius:50%; border:1px solid var(--line); cursor:pointer;
    background:rgba(120,160,220,.08); color:var(--soft); font-size:16px; transition:all .25s var(--ease); }
.dc-btn:hover:not(:disabled){ border-color:var(--gold); color:var(--gold); }
.dc-btn:disabled{ opacity:.32; cursor:default; }
.dc-btn.fs{ font-size:14px; }
.dc-count{ font-family:var(--mono); font-size:14px; color:var(--dim); letter-spacing:.1em; }
.dc-count b{ color:var(--white); } .dc-count i{ margin:0 4px; font-style:normal; }
.kb-hint{ position:fixed; left:50%; bottom:68px; transform:translateX(-50%); z-index:1000;
    font-family:var(--mono); font-size:12px; letter-spacing:.1em; color:var(--dim); opacity:.8;
    transition:opacity .5s ease; } .kb-hint b{ color:var(--soft); } .kb-hint.hide{ opacity:0; }

/* ============================================================================
   CRONÔMETRO REGRESSIVO GLOBAL (10 min) — canto superior direito
   clique: inicia/pausa · duplo clique: reinicia · botão ⟲: reinicia
   aos 5:00 → pisca + toast "Trocar apresentador"; aos 0:00 → "Tempo esgotado"
   ============================================================================ */
.deck-timer{ position:fixed; top:52px; right:32px; z-index:1002; display:flex; align-items:center; gap:9px;
    padding:7px 9px 7px 13px; border-radius:999px; cursor:pointer; user-select:none;
    font-family:var(--mono); font-size:18px; font-weight:700; letter-spacing:.04em; color:var(--white);
    background:linear-gradient(155deg, rgba(13,28,52,.86), rgba(6,14,28,.72)); border:1px solid var(--line);
    backdrop-filter:blur(8px); box-shadow:0 8px 22px rgba(0,0,0,.35); transition:border-color .3s, box-shadow .3s; }
.deck-timer:hover{ border-color:var(--gold); }
.tk-dot{ width:9px; height:9px; border-radius:50%; background:var(--dim); flex:0 0 auto; transition:background .3s; }
.deck-timer.running .tk-dot{ background:var(--green); box-shadow:0 0 8px var(--green); animation:tkPulse 1.4s ease-in-out infinite; }
.deck-timer.paused .tk-dot{ background:var(--gold-2); box-shadow:0 0 8px var(--gold-2); }
.tk-time{ min-width:60px; text-align:center; white-space:nowrap; }
.tk-reset{ width:22px; height:22px; border-radius:50%; border:1px solid var(--line); background:rgba(120,160,220,.1);
    color:var(--soft); font-size:13px; line-height:1; cursor:pointer; flex:0 0 auto; padding:0; transition:all .25s; }
.tk-reset:hover{ border-color:var(--gold); color:var(--gold); }
@keyframes tkPulse{ 0%,100%{ opacity:1; } 50%{ opacity:.3; } }
/* aviso aos 5 min (pisca dourado por alguns segundos) */
.deck-timer.warn{ animation:tkBlinkGold .8s steps(1) 8; }
@keyframes tkBlinkGold{ 0%,100%{ border-color:var(--line); box-shadow:0 8px 22px rgba(0,0,0,.35); }
    50%{ border-color:var(--gold); box-shadow:0 0 24px rgba(243,177,60,.65); } }
/* tempo esgotado (pisca vermelho/dourado, contínuo) */
.deck-timer.done{ color:var(--gold-2); animation:tkBlinkRed 1s steps(1) infinite; }
.deck-timer.done .tk-dot{ background:var(--red); box-shadow:0 0 10px var(--red); }
@keyframes tkBlinkRed{ 0%,100%{ border-color:var(--red); box-shadow:0 0 10px rgba(255,70,94,.45); }
    50%{ border-color:var(--gold); box-shadow:0 0 26px rgba(255,70,94,.7); } }

/* toast discreto (trocar apresentador / tempo esgotado) */
.deck-toast{ position:fixed; top:96px; right:32px; z-index:1002; max-width:260px;
    padding:11px 16px; border-radius:12px; font-family:var(--font); font-size:15px; font-weight:700; color:#1a1205;
    background:linear-gradient(155deg, rgba(243,177,60,.96), rgba(255,212,121,.9));
    box-shadow:0 12px 30px rgba(0,0,0,.4); opacity:0; transform:translateY(-8px); pointer-events:none;
    transition:opacity .4s ease, transform .4s ease; }
.deck-toast.show{ opacity:1; transform:translateY(0); }
.deck-toast.danger{ background:linear-gradient(155deg, rgba(255,70,94,.96), rgba(243,177,60,.92)); color:#1a0608; }

/* ============================================================================
   Contador de páginas discreto — canto inferior direito
   ============================================================================ */
.page-counter{ position:fixed; right:34px; bottom:26px; z-index:1000; font-family:var(--mono); font-size:14px;
    letter-spacing:.1em; color:var(--dim); opacity:.7; user-select:none; }
.page-counter b{ color:var(--soft); } .page-counter i{ margin:0 5px; font-style:normal; opacity:.55; }

/* ============================================================================
   5) REVEAL — entrada por elemento (--d = atraso)
   ============================================================================ */
.reveal{ opacity:0; transform:translateY(18px);
    transition:opacity .7s var(--ease), transform .7s var(--ease); transition-delay:var(--d,0s); }
.reveal.left{ transform:translateX(-28px); }
.reveal.right{ transform:translateX(28px); }
.reveal.up{ transform:translateY(26px); }
.reveal.down{ transform:translateY(-20px); }
.reveal.scale{ transform:scale(.965); transform-origin:left center; }
.reveal.fade{ transform:none; }
.slide.visible .reveal{ opacity:1; transform:none; }
/* modo de revisão estática (?still): mostra tudo sem animação */
.still .reveal{ opacity:1!important; transform:none!important; transition:none!important; }
.still .s7 .mp-track i{ transition:none!important; }
.still .s7 .m4-card::before,.still .s7 .m4-arrow,.still .s7 .m4-spark,.still .s7 .mp-delta{ animation:none!important; }
.still .s7 .m4-spark{ opacity:0; } .still .s7 .mp-delta{ opacity:1!important; transform:none!important; }
.still .s8 .edge.draw{ stroke-dashoffset:0!important; }
.still .s8 .edge,.still .s8 .edge.pen,.still .s8 .gnode,.still .s8 .gnode.crit,.still .s8 .gwarn,.still .s8-graph::before{ animation:none!important; }
.still .s8 .edge.pen,.still .s8 .gwarn{ opacity:.92!important; }
.still .s8 .gnode{ opacity:1!important; transform:none!important; } .still .s8 .gspark{ opacity:0!important; }
.still .s9 .fbar i{ transition:none!important; }
.still .s9 .ar-body,.still .s9 .xmk,.still .s9 .fd{ animation:none!important; }
.still .s9 .fd{ opacity:1!important; transform:none!important; } .still .s9 .ar-spark,.still .s9 .gspark2{ opacity:0!important; }
.still .s10 .rank,.still .s10 .cc.hot::after,.still .s10 .cc-arrow,.still .s10 .df-ico,.still .s10 .rb-dot{ animation:none!important; }
.still .s10 .rank{ opacity:1!important; transform:none!important; }

/* números mono */
.num{ font-family:var(--mono); font-weight:700; font-variant-numeric:tabular-nums; }

/* placeholder de imagem (troque por <img> quando tiver a figura) */
.img-slot{ position:relative; border:1.5px dashed rgba(120,160,220,.3); border-radius:16px;
    background:linear-gradient(155deg, rgba(15,32,58,.4), rgba(6,15,30,.25));
    display:flex; align-items:center; justify-content:center; overflow:hidden; min-height:140px; }
.img-slot.tall{ min-height:560px; }
.img-tag{ position:absolute; bottom:10px; left:10px; font-family:var(--mono); font-size:12px;
    letter-spacing:.08em; color:var(--dim); background:rgba(3,8,18,.6); padding:3px 8px; border-radius:6px; z-index:2; }
/* figura real ocupando o slot (quando a imagem do artigo está disponível) */
.img-slot.has-img{ border-style:solid; border-color:var(--card-bd); background:#0a1730; }
.img-slot .fig{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; display:block; }
.img-slot .fig.fit{ object-fit:contain; }

/* pontos de legenda */
.d{ width:11px; height:11px; border-radius:50%; display:inline-block; vertical-align:middle; margin-right:6px; }
.d.gold{ background:var(--gold); box-shadow:0 0 8px var(--gold); }
.d.cyan{ background:var(--cyan); box-shadow:0 0 8px var(--cyan); }
.d.rail{ background:var(--rail); box-shadow:0 0 8px var(--rail); }

/* ============================================================================
   === SLIDE 1 — CAPA  (abertura do artigo: TÍTULO protagonista · ALIME = selo) ===
   ============================================================================ */
.s1-photo{ position:absolute; inset:0; z-index:0; overflow:hidden; }
.s1-photo i{ position:absolute; inset:0; background-size:cover; background-position:center right;
    display:block; animation:s1KB 44s ease-in-out infinite alternate; }
/* camada escura translúcida — garante leitura do título à esquerda */
.s1-photo::after{ content:""; position:absolute; inset:0; background:
    linear-gradient(95deg, rgba(3,7,16,.97) 0%, rgba(3,7,16,.9) 30%, rgba(3,7,16,.56) 56%, rgba(3,7,16,.32) 76%, rgba(3,7,16,.5) 100%),
    linear-gradient(0deg, rgba(3,7,16,.6) 0%, transparent 26%); }
@keyframes s1KB{ from{ transform:scale(1.05); } to{ transform:scale(1.13); } }

/* —— efeitos sobre o mapa: linhas pulsando + faíscas luminosas viajando —— */
.s1-fx{ position:absolute; inset:0; z-index:1; pointer-events:none; }
.s1-flow{ position:absolute; inset:0; width:100%; height:100%; }
.s1-line{ fill:none; stroke:var(--gold); stroke-width:2; stroke-linecap:round;
    stroke-dasharray:5 13; opacity:.26; filter:drop-shadow(0 0 6px rgba(243,177,60,.55));
    animation:s1Dash 9s linear infinite, s1Glow 5.5s ease-in-out infinite; }
.s1-line.cyan{ stroke:var(--cyan); filter:drop-shadow(0 0 6px rgba(57,214,232,.55)); opacity:.2;
    animation-duration:12s, 6.5s; }
.s1-line.dim{ opacity:.16; animation-duration:7s, 5s; }
@keyframes s1Dash{ to{ stroke-dashoffset:-180; } }
@keyframes s1Glow{ 0%,100%{ opacity:.12; } 50%{ opacity:.32; } }
.s1-spark{ filter:drop-shadow(0 0 7px rgba(255,212,121,.9)); }
.s1-spark.cyan{ filter:drop-shadow(0 0 7px rgba(57,214,232,.9)); }

/* —— layout: pilha (kicker → card) centralizada à esquerda; autores no rodapé —— */
.s1 .slide-inner{ display:flex; flex-direction:column; justify-content:center; align-items:flex-start;
    padding-left:130px; padding-bottom:150px; }

/* (cabeçalho) */
.slide-kicker{ font-family:var(--mono); font-size:17px; letter-spacing:.32em; text-transform:uppercase;
    color:var(--gold); display:inline-flex; align-items:center; gap:14px; text-shadow:0 2px 14px rgba(3,7,16,.7); }
.slide-kicker::before{ content:""; width:38px; height:2px;
    background:linear-gradient(90deg, var(--gold), transparent); box-shadow:0 0 12px var(--gold); }

/* (selo ALIME — discreto, não compete com o título) */
.alime-badge{ display:inline-flex; align-items:center; gap:13px; margin-top:26px;
    padding:9px 18px 9px 14px; border-radius:999px; width:max-content;
    background:linear-gradient(120deg, rgba(15,32,58,.62), rgba(6,15,30,.4));
    border:1px solid var(--card-bd); backdrop-filter:blur(6px); -webkit-backdrop-filter:blur(6px); }
.alime-badge .ab-dot{ width:10px; height:10px; border-radius:50%; flex:none; background:var(--gold);
    box-shadow:0 0 10px var(--gold); animation:s1BadgePulse 2.6s ease-in-out infinite; }
@keyframes s1BadgePulse{ 0%,100%{ box-shadow:0 0 7px var(--gold); } 50%{ box-shadow:0 0 16px var(--gold-2); } }
.alime-badge .ab-txt{ display:flex; flex-direction:column; line-height:1.16; }
.alime-badge .ab-txt b{ font-size:18px; font-weight:700; color:var(--white); letter-spacing:.01em; }
.alime-badge .ab-txt i{ font-style:normal; font-family:var(--mono); font-size:12px; color:var(--dim); letter-spacing:.02em; }

/* (título principal — protagonista, reveal por clip-path "linha de luz") */
.title-main{ margin-top:30px; font-weight:800; font-size:116px; line-height:.92; letter-spacing:-.03em;
    color:var(--white); max-width:980px; text-shadow:0 4px 30px rgba(3,7,16,.82); }
.title-main .hl-gold{ background:linear-gradient(100deg, var(--gold), var(--gold-2));
    -webkit-background-clip:text; background-clip:text; color:transparent; }
.title-main.reveal{ clip-path:inset(0 100% -.28em 0); transform:none;
    transition:opacity .7s var(--ease), clip-path 1s cubic-bezier(.62,0,.2,1);
    transition-delay:var(--d,0s); }
.slide.visible .title-main.reveal{ clip-path:inset(0 -.28em -.28em 0); }
/* brilho dourado rápido em "baixo custo" quando o título termina de aparecer */
.slide.visible .title-main .hl-gold{ animation:s1GoldFlash 1.1s ease-out calc(var(--d,0s) + .7s) both; }
@keyframes s1GoldFlash{ 0%{ filter:drop-shadow(0 0 0 rgba(255,212,121,0)); }
    42%{ filter:drop-shadow(0 0 24px rgba(255,212,121,.95)); }
    100%{ filter:drop-shadow(0 0 10px rgba(255,212,121,.3)); } }

/* (complemento) */
.title-sub{ margin-top:22px; font-size:31px; font-weight:600; line-height:1.32; color:var(--soft);
    max-width:820px; text-shadow:0 2px 16px rgba(3,7,16,.78); }
.title-sub .hl-cyan{ color:var(--cyan); font-weight:700; }

/* (faixa técnica — escala 0.96→1 + borda esquerda que acende) */
.technical-card{ margin-top:32px; max-width:860px; display:flex; flex-direction:column; gap:7px;
    padding:18px 28px; border-radius:14px; transform-origin:left center;
    background:linear-gradient(155deg, rgba(15,32,58,.55), rgba(6,15,30,.36));
    border:1px solid var(--card-bd); border-left:3px solid rgba(243,177,60,.4);
    backdrop-filter:blur(7px); -webkit-backdrop-filter:blur(7px); }
.technical-card .tc-eyebrow{ font-family:var(--mono); font-size:12.5px; letter-spacing:.22em; text-transform:uppercase; color:var(--gold); }
.technical-card .tc-txt{ font-size:25px; line-height:1.36; color:var(--white); font-weight:500; }
.technical-card .tc-txt b{ font-weight:800; color:var(--white); }
.technical-card .tc-txt em{ font-style:normal; color:var(--gold-2); font-weight:800; }
.slide.visible .technical-card{ animation:s1CardEdge 1.5s ease-out calc(var(--d,0s) + .25s) both; }
@keyframes s1CardEdge{ 0%{ border-left-color:rgba(243,177,60,.12); box-shadow:none; }
    55%{ border-left-color:var(--gold-2); box-shadow:-7px 0 26px -8px rgba(243,177,60,.75); }
    100%{ border-left-color:var(--gold); box-shadow:-4px 0 18px -10px rgba(243,177,60,.4); } }

/* (autores — rodapé, afastados da borda esquerda e ACIMA dos botões de navegação) */
.authors-block{ position:absolute; left:200px; bottom:158px; display:flex; gap:90px; z-index:3; }
.authors-block .lab{ font-family:var(--mono); font-size:13px; letter-spacing:.18em; text-transform:uppercase; color:var(--dim); }
.authors-block .val{ font-size:22px; color:var(--soft); margin-top:8px; }
.authors-block .val em{ color:var(--white); font-style:normal; font-weight:600; }

/* ============================================================================
   === SLIDE 2 — MATIAS BARBOSA (fundo noturno em destaque + efeitos de tráfego) ===
   ============================================================================ */
.s2 .slide-inner{ display:flex; flex-direction:column; }
.s2 .slide-title{ max-width:1080px; text-shadow:0 2px 18px rgba(3,7,16,.85); }
.s2 .kicker{ text-shadow:0 2px 14px rgba(3,7,16,.9); }
.s2 .lead{ max-width:600px; margin-top:18px; text-shadow:0 2px 14px rgba(3,7,16,.9); }

/* fundo em destaque — mapa noturno cobrindo o slide */
.s2-photo{ position:absolute; inset:0; z-index:0; overflow:hidden; }
.s2-photo i{ position:absolute; inset:0; background-size:cover; background-position:center;
    display:block; animation:s2KB 46s ease-in-out infinite alternate; }
.s2-photo::after{ content:""; position:absolute; inset:0; background:
    linear-gradient(100deg, rgba(3,7,16,.95) 0%, rgba(3,7,16,.8) 25%, rgba(3,7,16,.32) 48%, rgba(3,7,16,.08) 70%, rgba(3,7,16,.5) 100%),
    linear-gradient(0deg, rgba(3,7,16,.55) 0%, transparent 28%); }
@keyframes s2KB{ from{ transform:scale(1.05); } to{ transform:scale(1.12); } }

/* camada de efeitos: tráfego (polylines animadas) + pulsos nas interferências */
.s2-fx{ position:absolute; inset:0; z-index:1; pointer-events:none; }
.s2-fx .flow{ position:absolute; inset:0; width:100%; height:100%; }
.flowline{ fill:none; stroke:var(--cyan); stroke-width:3.5; stroke-linecap:round;
    stroke-dasharray:16 24; opacity:.9; filter:drop-shadow(0 0 7px rgba(57,214,232,.85));
    animation:flowMove 1.5s linear infinite; }
.flowline.d2{ stroke:var(--gold-2); filter:drop-shadow(0 0 7px rgba(255,212,121,.8)); animation-duration:2.1s; }
.flowline.d3{ stroke:var(--cyan); opacity:.65; animation-duration:2.6s; }
@keyframes flowMove{ to{ stroke-dashoffset:-40; } }

.pulse{ position:absolute; width:18px; height:18px; transform:translate(-50%,-50%); }
.pulse::before{ content:""; position:absolute; inset:5px; border-radius:50%;
    background:var(--rail); box-shadow:0 0 14px var(--rail); }
.pulse::after{ content:""; position:absolute; inset:0; border-radius:50%; border:2px solid var(--rail);
    animation:pulseRing 1.9s ease-out infinite; }
.pulse.red{ width:24px; height:24px; }
.pulse.amber::before{ background:var(--gold); box-shadow:0 0 12px var(--gold); }
.pulse.amber::after{ border-color:var(--gold); }
@keyframes pulseRing{ 0%{ transform:scale(1); opacity:.85; } 100%{ transform:scale(4.6); opacity:0; } }
.pulse-tag{ position:absolute; transform:translate(-50%,-280%); font-family:var(--mono); font-size:13px;
    color:#fff; background:rgba(255,90,126,.92); padding:4px 10px; border-radius:8px; white-space:nowrap;
    box-shadow:0 6px 16px rgba(0,0,0,.45); }
.pulse-tag::after{ content:""; position:absolute; left:50%; bottom:-5px; transform:translateX(-50%);
    border:5px solid transparent; border-top-color:rgba(255,90,126,.92); }

/* eixos + stats + legenda (sobre o fundo) */
.s2-axes{ display:flex; flex-direction:column; gap:14px; margin-top:26px; }
.axis{ font-size:20px; color:var(--soft); display:flex; align-items:center; gap:14px; text-shadow:0 1px 10px rgba(3,7,16,.85); }
.axis .tag{ font-family:var(--mono); font-weight:700; font-size:15px; color:#06121f; background:var(--c,var(--gold));
    padding:6px 12px; border-radius:8px; letter-spacing:.04em; min-width:96px; text-align:center; }
.s2-stats{ display:flex; gap:46px; margin-top:38px; }
.s2-stats .stat b{ font-size:46px; color:var(--gold); display:block; text-shadow:0 2px 16px rgba(3,7,16,.85); }
.s2-stats .stat span{ font-size:18px; color:var(--soft); max-width:190px; display:block; margin-top:3px; text-shadow:0 1px 10px rgba(3,7,16,.9); }
.s2-legend{ display:flex; gap:34px; margin-top:34px; font-size:18px; color:var(--soft); text-shadow:0 1px 10px rgba(3,7,16,.9); }
.s2-legend i.ld{ width:12px; height:12px; border-radius:50%; display:inline-block; vertical-align:middle; margin-right:8px; }
.s2-legend i.ld.zt{ background:var(--gold); box-shadow:0 0 10px var(--gold); }
.s2-legend i.ld.itf{ background:var(--rail); box-shadow:0 0 10px var(--rail); }

/* ============================================================================
   === SLIDE 3 — PAINEL DE DIAGNÓSTICO DAS PASSAGENS EM NÍVEL ===
   (cards analíticos à esquerda · mapa estilizado à direita · modal de zoom)
   ============================================================================ */
.ic{ fill:none; stroke:currentColor; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; }

.s3-inner{ display:grid; grid-template-columns:1fr 700px; gap:40px; align-items:stretch; }
.s3-left{ display:flex; flex-direction:column; min-width:0; }
.s3-sub{ font-size:21px; color:var(--soft); line-height:1.4; margin-top:12px; max-width:780px; }
.s3-sub b{ color:#fff; }

/* —— cards das PNs —— */
.s3-cards{ display:grid; grid-template-columns:1fr 1fr; gap:18px; margin-top:24px; }
.pncard{ position:relative; height:196px; border-radius:16px; overflow:hidden; cursor:pointer; isolation:isolate;
    border:1px solid var(--card-bd); background:#0a1424;
    transition:transform .3s var(--ease), box-shadow .3s ease, border-color .3s ease; }
.pncard .pc-air{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; z-index:0;
    filter:saturate(.82) contrast(1.08) brightness(.84); transition:filter .35s ease, transform 6s ease; }
.pc-scrim{ position:absolute; inset:0; z-index:1; pointer-events:none;
    background:linear-gradient(90deg, rgba(4,9,18,.93) 0%, rgba(4,9,18,.72) 32%, rgba(4,9,18,.22) 58%, rgba(4,9,18,.5) 100%); }
.pc-txt{ position:absolute; left:18px; top:15px; z-index:3; }
.pc-head{ display:flex; align-items:baseline; gap:10px; }
.pc-head b{ font-family:var(--mono); font-size:25px; font-weight:700; letter-spacing:.02em; text-shadow:0 2px 10px rgba(0,0,0,.6); }
.pc-head span{ font-family:var(--mono); font-size:13px; color:var(--soft); }
.pc-meta{ margin-top:14px; display:flex; flex-direction:column; gap:9px; }
.pc-line{ display:flex; align-items:center; gap:9px; font-size:15px; color:var(--soft); text-shadow:0 1px 6px rgba(0,0,0,.7); }
.pc-line .ic{ width:17px; height:17px; flex:none; color:var(--soft); }
.pc-line.par .ic, .pc-line.ser .ic{ color:var(--gold-2); }

/* janela de zoom (rua) sobreposta no canto inferior direito */
.pc-st{ position:absolute; right:13px; bottom:13px; width:45%; height:60%; object-fit:cover; z-index:3;
    border-radius:9px; border:1.5px solid rgba(255,255,255,.38); box-shadow:0 8px 20px rgba(0,0,0,.6);
    filter:saturate(.9) contrast(1.05); }
.s3.visible .pc-st{ animation:pcStIn .5s var(--ease) both; animation-delay:calc(var(--d, .3s) + .22s); }
@keyframes pcStIn{ from{ opacity:0; transform:translateY(10px) scale(.96); } to{ opacity:1; transform:none; } }

/* cor por criticidade */
.pncard.crit{ border-color:rgba(255,70,94,.55); box-shadow:0 0 0 1px rgba(255,70,94,.16), 0 14px 32px rgba(0,0,0,.42); }
.pncard.crit .pc-head b{ color:var(--rail); }
.pncard.crit .pc-st{ border-color:rgba(255,90,126,.66); }
.pncard.warm{ border-color:rgba(243,177,60,.5); box-shadow:0 0 0 1px rgba(243,177,60,.13), 0 14px 32px rgba(0,0,0,.42); }
.pncard.warm .pc-head b{ color:var(--gold-2); }
.pncard.warm .pc-st{ border-color:rgba(255,212,121,.6); }

/* hover/foco: escala + brilho + contraste */
.pncard:hover, .pncard:focus-visible{ transform:translateY(-4px) scale(1.018); outline:none; }
.pncard.crit:hover, .pncard.crit:focus-visible{ box-shadow:0 0 0 1px rgba(255,70,94,.42), 0 20px 44px rgba(0,0,0,.5), 0 0 34px -6px rgba(255,70,94,.55); }
.pncard.warm:hover, .pncard.warm:focus-visible{ box-shadow:0 0 0 1px rgba(243,177,60,.42), 0 20px 44px rgba(0,0,0,.5), 0 0 34px -6px rgba(243,177,60,.5); }
.pncard:hover .pc-air, .pncard:focus-visible .pc-air{ filter:saturate(1) contrast(1.12) brightness(.98); transform:scale(1.05); }

/* —— cards-resumo dos eixos —— */
.s3-axes{ display:flex; flex-direction:column; gap:12px; margin-top:18px; }
.axiscard{ display:flex; align-items:center; gap:14px; padding:13px 18px; border-radius:12px; font-size:18px; color:var(--soft);
    background:linear-gradient(120deg, rgba(15,32,58,.5), rgba(6,15,30,.34)); border:1px solid var(--card-bd); }
.axiscard .ax-ic{ width:34px; height:34px; flex:none; border-radius:9px; display:grid; place-items:center; }
.axiscard .ax-ic .ic{ width:20px; height:20px; }
.axiscard.crit{ border-color:rgba(255,70,94,.5); }
.axiscard.crit .ax-ic{ background:rgba(255,70,94,.14); color:var(--rail); box-shadow:inset 0 0 0 1px rgba(255,70,94,.3); }
.axiscard.warm{ border-color:rgba(243,177,60,.46); }
.axiscard.warm .ax-ic{ background:rgba(243,177,60,.14); color:var(--gold-2); box-shadow:inset 0 0 0 1px rgba(243,177,60,.3); }
.axiscard b{ font-family:var(--mono); }
.axiscard.crit b{ color:#ff8aa0; } .axiscard.warm b{ color:var(--gold-2); }
.axiscard em{ font-style:normal; color:var(--dim); font-family:var(--mono); font-size:15px; }

/* —— coluna direita: ferrovia (topo) + rede de zoneamento (base) —— */
.s3-map{ position:relative; min-height:720px; display:flex; flex-direction:column; gap:14px; }
.s3.visible .s3-map{ animation:s3MapIn 1.1s var(--ease) both; }
@keyframes s3MapIn{ from{ opacity:0; transform:scale(1.04); } to{ opacity:1; transform:scale(1); } }
.s3-map-rail{ position:relative; flex:1.22 1 0; min-height:0; border-radius:16px; overflow:hidden;
    border:1px solid rgba(255,80,104,.34); background:#040a16; box-shadow:0 0 0 1px rgba(255,80,104,.08), 0 16px 40px rgba(0,0,0,.4); }
.s3-map-graph{ position:relative; flex:1 1 0; min-height:0; border-radius:16px; overflow:hidden;
    border:1px solid rgba(80,140,235,.4); box-shadow:0 0 0 1px rgba(80,140,235,.08), 0 16px 40px rgba(0,0,0,.4);
    background:
      radial-gradient(70% 60% at 38% 28%, rgba(57,214,232,.07), transparent 70%),
      radial-gradient(60% 60% at 78% 72%, rgba(91,156,246,.08), transparent 72%),
      repeating-radial-gradient(circle at 48% 44%, rgba(120,160,220,.04) 0 1px, transparent 1px 34px),
      linear-gradient(160deg, #08152a, #04101f 70%, #030a14); }
.s3-panel-tag{ position:absolute; top:11px; left:13px; z-index:6; font-family:var(--mono); font-size:12px; letter-spacing:.05em;
    padding:5px 11px; border-radius:8px; background:rgba(5,12,24,.72); border:1px solid var(--line); color:var(--soft); pointer-events:none; }
.rail-tag{ color:#ff9fb0; border-color:rgba(255,90,126,.42); }
.graph-tag{ color:#9cc0ff; border-color:rgba(80,140,235,.46); }

/* —— grafo da rede (SVG escuro) —— */
.zg-svg{ position:absolute; inset:0; width:100%; height:100%; z-index:1; }
.ze{ fill:none; stroke-linecap:round; }
.ze.mg{ stroke:var(--gold); stroke-width:3.4; filter:drop-shadow(0 0 5px rgba(243,177,60,.5)); }
.ze.br{ stroke:#5b9cf6; stroke-width:3.4; filter:drop-shadow(0 0 5px rgba(91,156,246,.5)); }
.ze.loc{ stroke:rgba(150,180,225,.52); stroke-width:1.9; }
.ze.rur{ stroke:rgba(150,180,225,.44); stroke-width:1.7; stroke-dasharray:5 6; }
.zspark{ filter:drop-shadow(0 0 5px currentColor); }
.zspark.mg{ fill:#ffe6b0; color:var(--gold); } .zspark.br{ fill:#cfe2ff; color:#5b9cf6; }
.zn{ transform-box:fill-box; transform-origin:center; }
.zn circle{ stroke-width:2; }
.zn.cy circle{ fill:#0a2233; stroke:var(--cyan); filter:drop-shadow(0 0 5px rgba(57,214,232,.5)); }
.zn.cy.hub circle{ filter:drop-shadow(0 0 8px rgba(57,214,232,.72)); }
.zn.ext circle{ fill:#2a0c14; stroke:var(--rail); filter:drop-shadow(0 0 5px rgba(255,90,126,.5)); }
.zn.art circle{ fill:#141c2c; stroke:#90a8cc; }
.zn text{ fill:#eaf2ff; font-family:var(--mono); font-weight:700; font-size:12px; text-anchor:middle; dominant-baseline:central; }
.zn.ext text{ font-size:10.5px; } .zn.art text{ font-size:10.5px; fill:#bcd0ee; }
.s3 .zn, .s3 .ze{ opacity:0; }
.s3.visible .ze{ animation:zgFade .6s ease both; animation-delay:var(--zd,.4s); }
.s3.visible .zn{ animation:zgPop .5s var(--ease) both; animation-delay:var(--zd,.5s); }
@keyframes zgFade{ from{ opacity:0; } to{ opacity:1; } }
@keyframes zgPop{ from{ opacity:0; transform:scale(.45); } to{ opacity:1; transform:scale(1); } }
.zg-legend{ position:absolute; left:13px; right:13px; bottom:11px; z-index:5; display:flex; flex-wrap:wrap; gap:6px 16px;
    font-family:var(--mono); font-size:11px; color:var(--soft); pointer-events:none; }
.zg-legend span{ display:inline-flex; align-items:center; gap:7px; }
.zl{ width:16px; height:3px; border-radius:2px; flex:none; }
.zl.mg{ background:var(--gold); box-shadow:0 0 6px rgba(243,177,60,.5); }
.zl.br{ background:#5b9cf6; box-shadow:0 0 6px rgba(91,156,246,.5); }
.zl.rur{ height:0; border-radius:0; border-top:2px dashed rgba(160,190,230,.78); }
.zl.ze{ width:11px; height:11px; border-radius:50%; }
.zl.ze.cy{ background:#0a2233; border:1.5px solid var(--cyan); }
.zl.ze.ext{ background:#2a0c14; border:1.5px solid var(--rail); }
.still .s3 .zn, .still .s3 .ze{ opacity:1!important; animation:none!important; transform:none!important; }
.still .s3 .zspark{ opacity:0!important; }
.s3-map-bg{ position:absolute; inset:-5%; z-index:0;
    background:
      radial-gradient(60% 42% at 60% 24%, rgba(57,214,232,.10), transparent 70%),
      radial-gradient(70% 50% at 50% 64%, rgba(243,177,60,.08), transparent 72%),
      repeating-radial-gradient(circle at 56% 44%, rgba(120,160,220,.045) 0 1px, transparent 1px 36px),
      linear-gradient(160deg, #08152a 0%, #050d1c 58%, #03070f 100%);
    animation:s3Drift 26s ease-in-out infinite alternate; }
@keyframes s3Drift{ from{ transform:scale(1) translate(0,0); } to{ transform:scale(1.05) translate(-1.4%,-1%); } }

.s3-map-svg{ position:absolute; inset:0; width:100%; height:100%; z-index:1; }
.rd{ fill:none; stroke:var(--cyan); stroke-width:2; opacity:.3; stroke-linecap:round; filter:drop-shadow(0 0 5px rgba(57,214,232,.4)); }
.rail-bed{ fill:none; stroke:#0a1830; stroke-width:18; stroke-linecap:round; }
.rail-ties{ fill:none; stroke:rgba(255,212,121,.42); stroke-width:18; stroke-dasharray:3 15; }
.rail-glow{ fill:none; stroke:var(--gold); stroke-width:4; stroke-linecap:round; filter:drop-shadow(0 0 7px rgba(243,177,60,.85)); }
.s3.visible .rail-glow{ stroke-dasharray:1500; stroke-dashoffset:1500; animation:s3Draw 1.7s ease .45s forwards; }
@keyframes s3Draw{ to{ stroke-dashoffset:0; } }
.rail-flow{ fill:none; stroke:var(--cyan); stroke-width:2.4; stroke-dasharray:5 30; stroke-linecap:round; opacity:.9;
    filter:drop-shadow(0 0 6px rgba(57,214,232,.8)); animation:flowMove 2.4s linear infinite; }

/* marcadores PN */
.mk{ position:absolute; left:var(--x); top:var(--y); transform:translate(-50%,-50%); z-index:3;
    background:none; border:none; padding:0; cursor:pointer; display:flex; align-items:center; }
.mk-dot{ position:relative; width:34px; height:34px; border-radius:50%; display:grid; place-items:center; flex:none;
    transition:transform .25s var(--ease);
    background:radial-gradient(circle, rgba(255,212,121,.98), rgba(243,177,60,.55)); color:#241803;
    box-shadow:0 0 0 4px rgba(243,177,60,.16), 0 0 14px rgba(243,177,60,.6); }
.mk-dot .ic{ width:19px; height:19px; stroke-width:1.7; }
.mk.crit .mk-dot{ color:#fff; background:radial-gradient(circle, rgba(255,120,150,1), rgba(255,70,94,.6));
    box-shadow:0 0 0 4px rgba(255,70,94,.2), 0 0 18px rgba(255,70,94,.85); animation:mkPulse 1.9s ease-in-out infinite; }
.mk.warm .mk-dot{ animation:mkGlow 3.4s ease-in-out infinite; }
@keyframes mkPulse{ 0%,100%{ box-shadow:0 0 0 4px rgba(255,70,94,.2), 0 0 16px rgba(255,70,94,.7); }
    50%{ box-shadow:0 0 0 9px rgba(255,70,94,.05), 0 0 30px rgba(255,70,94,1); } }
@keyframes mkGlow{ 0%,100%{ box-shadow:0 0 0 4px rgba(243,177,60,.15), 0 0 12px rgba(243,177,60,.5); }
    50%{ box-shadow:0 0 0 6px rgba(243,177,60,.09), 0 0 20px rgba(243,177,60,.8); } }
.mk.crit .mk-dot::after{ content:""; position:absolute; inset:-3px; border-radius:50%; border:2px solid var(--rail);
    animation:pulseRing 2s ease-out infinite; }

.mk-tag{ position:relative; font-family:var(--mono); font-size:14px; font-weight:700; color:#fff; white-space:nowrap;
    padding:5px 11px; border-radius:8px; margin-right:16px; transition:background .25s ease;
    background:rgba(6,14,28,.82); border:1px solid rgba(243,177,60,.6); box-shadow:0 4px 12px rgba(0,0,0,.5); }
.mk.crit .mk-tag{ border-color:rgba(255,90,126,.7); }
.mk-tag::after{ content:""; position:absolute; right:-16px; top:50%; width:16px; height:2px;
    background:linear-gradient(90deg, rgba(243,177,60,.7), rgba(243,177,60,.15)); }
.mk.crit .mk-tag::after{ background:linear-gradient(90deg, rgba(255,90,126,.8), rgba(255,90,126,.15)); }

.s3.visible .mk{ animation:mkPop .5s var(--ease) both; animation-delay:var(--md); }
@keyframes mkPop{ from{ opacity:0; transform:translate(-50%,-50%) scale(.4); } to{ opacity:1; transform:translate(-50%,-50%) scale(1); } }
.mk.hot .mk-dot, .mk:hover .mk-dot{ transform:scale(1.22); }
.mk.hot .mk-tag, .mk:hover .mk-tag{ background:rgba(243,177,60,.22); }
.mk.flash .mk-dot{ animation:mkFlash .7s ease 2; }
@keyframes mkFlash{ 0%,100%{ transform:scale(1); } 50%{ transform:scale(1.36); } }

/* rosa dos ventos */
.northrose{ position:absolute; right:24px; bottom:22px; z-index:3; width:50px; height:50px; border-radius:50%;
    border:1px solid rgba(174,191,218,.38); display:grid; place-items:center; opacity:.65; }
.northrose span{ position:absolute; top:5px; font-family:var(--mono); font-size:11px; color:var(--gold-2); }
.northrose i{ width:0; height:0; margin-top:7px; border-left:5px solid transparent; border-right:5px solid transparent;
    border-bottom:16px solid var(--rail); filter:drop-shadow(0 0 4px rgba(255,90,126,.5)); }

/* —— modal de zoom —— */
.pnmodal{ position:absolute; inset:0; z-index:50; display:none; align-items:center; justify-content:center;
    background:rgba(2,5,12,.74); backdrop-filter:blur(7px); -webkit-backdrop-filter:blur(7px); }
.pnmodal.open{ display:flex; animation:pmFade .25s ease; }
@keyframes pmFade{ from{ opacity:0; } to{ opacity:1; } }
.pnmodal-card{ position:relative; width:1000px; max-width:92%; border-radius:20px; overflow:hidden;
    display:grid; grid-template-columns:1.5fr 1fr; box-shadow:0 40px 90px rgba(0,0,0,.6);
    background:linear-gradient(155deg, #0c1e38, #060e1c); border:1px solid var(--card-bd); animation:pmRise .3s var(--ease); }
.pnmodal.crit .pnmodal-card{ border-color:rgba(255,90,126,.45); }
@keyframes pmRise{ from{ transform:translateY(16px) scale(.98); opacity:0; } to{ transform:none; opacity:1; } }
.pnmodal-media{ position:relative; min-height:430px; }
.pnmodal-media > img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; filter:saturate(.9) contrast(1.06); }
.pnmodal-media .pm-st{ position:absolute; inset:auto 16px 16px auto; width:42%; height:46%;
    border-radius:10px; border:2px solid rgba(255,255,255,.42); box-shadow:0 10px 24px rgba(0,0,0,.55); }
.pm-badge{ position:absolute; left:18px; top:16px; font-family:var(--mono); font-weight:700; font-size:23px; color:#fff;
    background:rgba(6,14,28,.72); padding:6px 14px; border-radius:10px; border:1px solid rgba(243,177,60,.55); }
.pnmodal.crit .pm-badge{ border-color:rgba(255,90,126,.65); color:#ff8aa0; }
.pnmodal-info{ padding:30px 32px; display:flex; flex-direction:column; }
.pm-zones{ font-family:var(--mono); font-size:18px; color:var(--gold-2); }
.pm-list{ list-style:none; margin-top:18px; display:flex; flex-direction:column; gap:13px; }
.pm-list li{ display:flex; align-items:center; gap:10px; font-size:19px; color:var(--soft); }
.pm-list .ic{ width:20px; height:20px; flex:none; color:var(--gold-2); }
.pm-axis{ margin-top:auto; font-size:15px; color:var(--dim); border-top:1px solid var(--line); padding-top:16px; line-height:1.4; }
.pnmodal-x{ position:absolute; right:14px; top:12px; z-index:5; width:38px; height:38px; border-radius:50%; cursor:pointer;
    border:1px solid var(--line); background:rgba(6,14,28,.7); color:var(--soft); font-size:15px; }
.pnmodal-x:hover{ color:#fff; border-color:var(--gold); }

/* modo de captura estática (?still): congela no estado final */
.still .s3 .mk{ animation:none!important; opacity:1!important; }
.still .s3 .rail-glow{ animation:none!important; stroke-dashoffset:0!important; }
.still .s3 .pc-st{ animation:none!important; opacity:1!important; transform:none!important; }
.still .s3-map{ animation:none!important; }

/* ============================================================================
   === SLIDE 4 (novo) — FONTE DE DADOS & PARAMETRIZAÇÃO · DASHBOARD ===
   Glassmorphism leve, badges/chips, count-up no quadro ferroviário,
   entradas em cascata, hover discreto. Sem poluir, sem animação rápida.
   ============================================================================ */
.sfd .slide-inner{ display:flex; flex-direction:column; justify-content:center; padding-top:56px; padding-bottom:52px; }
.sfd-grid{ display:grid; grid-template-columns:1fr 1fr; gap:30px; margin-top:26px; align-items:stretch; }

/* —— cartões principais: vidro fosco escuro + glow ciano —— */
.sfd-card{ position:relative; border-radius:20px; padding:24px 30px 22px; overflow:hidden;
    background:linear-gradient(155deg, rgba(15,32,58,.55), rgba(6,14,28,.4));
    border:1px solid rgba(120,160,220,.2);
    box-shadow:0 18px 46px rgba(0,0,0,.42), inset 0 1px 0 rgba(160,200,255,.06);
    backdrop-filter:blur(7px); -webkit-backdrop-filter:blur(7px);
    transition:transform .42s var(--ease), box-shadow .42s var(--ease), border-color .42s var(--ease); }
/* borda viva com leve shimmer ciano contínuo */
.sfd-card::before{ content:""; position:absolute; inset:0; border-radius:20px; padding:1px; pointer-events:none; z-index:2;
    background:linear-gradient(130deg, rgba(57,214,232,0) 34%, rgba(57,214,232,.55) 50%, rgba(57,214,232,0) 66%);
    background-size:300% 300%;
    -webkit-mask:linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); -webkit-mask-composite:xor;
    mask:linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); mask-composite:exclude;
    opacity:.55; animation:sfdShimmer 8s linear infinite; }
.sfd-card.parm::before{ animation-delay:-4s; }
@keyframes sfdShimmer{ 0%{ background-position:0% 50%; } 100%{ background-position:300% 50%; } }
/* halo de cor difuso no topo do cartão */
.sfd-card::after{ content:""; position:absolute; top:-44%; left:-12%; width:60%; height:84%; z-index:0; pointer-events:none;
    background:radial-gradient(circle, rgba(57,214,232,.16), transparent 70%); filter:blur(22px); }
.sfd-card.parm::after{ left:auto; right:-12%; background:radial-gradient(circle, rgba(243,177,60,.14), transparent 70%); }
.sfd-card > *{ position:relative; z-index:1; }
.sfd-card:hover{ transform:translateY(-4px); border-color:rgba(57,214,232,.42);
    box-shadow:0 28px 64px rgba(0,0,0,.5), 0 0 32px rgba(57,214,232,.15), inset 0 1px 0 rgba(160,200,255,.1); }
.sfd-card.parm:hover{ border-color:rgba(243,177,60,.42); box-shadow:0 28px 64px rgba(0,0,0,.5), 0 0 32px rgba(243,177,60,.15), inset 0 1px 0 rgba(255,212,121,.1); }

.sfd-card-h{ display:flex; align-items:center; gap:14px; margin-bottom:16px; }
.sfd-ico{ width:42px; height:42px; flex:0 0 auto; display:grid; place-items:center; border-radius:12px;
    color:var(--cyan); background:rgba(57,214,232,.1); border:1px solid rgba(57,214,232,.3); box-shadow:0 0 16px rgba(57,214,232,.16); }
.sfd-ico svg{ width:23px; height:23px; }
.sfd-ico.gold{ color:var(--gold); background:rgba(243,177,60,.1); border-color:rgba(243,177,60,.32); box-shadow:0 0 16px rgba(243,177,60,.16); }
.sfd-card-h h3{ font-size:25px; font-weight:800; color:var(--white); letter-spacing:-.01em; }

/* —— lista de fontes (chips modernos + descrição) —— */
.src-list{ list-style:none; display:flex; flex-direction:column; gap:11px; }
.src-item{ display:flex; align-items:flex-start; gap:12px; font-size:16px; color:var(--soft); line-height:1.34; opacity:0; }
.sfd.visible .src-item{ animation:sfdItemIn .55s var(--ease) forwards; animation-delay:calc(.52s + var(--i) * .09s); }
@keyframes sfdItemIn{ from{ opacity:0; transform:translateY(11px); } to{ opacity:1; transform:none; } }
.src-tag{ font-family:var(--mono); font-size:12.5px; font-weight:700; padding:5px 11px; border-radius:8px;
    white-space:nowrap; flex:0 0 auto; letter-spacing:.015em; line-height:1.1;
    transition:box-shadow .3s, transform .3s, filter .3s; }
.src-tag.gold{ color:#06121f; background:linear-gradient(135deg, var(--gold), var(--gold-2)); }
.src-tag.cyan{ color:#04222a; background:linear-gradient(135deg, var(--cyan), #8fecf4); }
.src-tag.rail{ color:#fff; background:linear-gradient(135deg, var(--rail), #ff90a8); }
/* glow muito discreto e contínuo nos chips */
.sfd.visible .src-tag{ animation:sfdTagGlow 5s ease-in-out infinite; animation-delay:calc(var(--i) * .35s); }
@keyframes sfdTagGlow{ 0%,100%{ box-shadow:0 0 0 rgba(140,205,255,0); } 50%{ box-shadow:0 0 13px rgba(140,205,255,.26); } }
.src-item:hover .src-tag{ transform:translateY(-1px); filter:brightness(1.08); box-shadow:0 0 18px rgba(150,215,255,.5); }
.src-desc{ padding-top:2px; } .src-desc b{ color:var(--white); font-weight:700; }
.src-out{ color:var(--cyan); font-weight:600; white-space:nowrap; }

/* —— mini-card de destaque: tráfego ferroviário (Tabela 2) —— */
.cnt-card{ margin-top:17px; border-radius:14px; padding:13px 18px 11px;
    border:1px solid rgba(255,90,126,.4); background:linear-gradient(155deg, rgba(255,90,126,.1), rgba(6,15,30,.34));
    box-shadow:inset 0 0 26px rgba(255,90,126,.06); }
.cnt-h{ display:flex; align-items:center; gap:9px; font-family:var(--mono); font-size:11.5px; letter-spacing:.03em;
    color:var(--rail); margin-bottom:9px; }
.cnt-dot{ width:7px; height:7px; border-radius:50%; flex:0 0 auto; background:var(--rail); box-shadow:0 0 10px var(--rail);
    animation:cntDot 1.9s ease-in-out infinite; }
@keyframes cntDot{ 0%,100%{ opacity:1; } 50%{ opacity:.32; } }
.cnt-row{ display:flex; align-items:baseline; justify-content:space-between; gap:12px;
    padding:7px 0; border-top:1px solid rgba(255,90,126,.14); }
.cnt-row:first-of-type{ border-top:none; }
.cnt-lbl{ font-size:15px; color:var(--soft); }
.cnt-val{ display:flex; align-items:baseline; gap:6px; white-space:nowrap; }
.cnt-val b{ font-family:var(--mono); font-weight:700; font-size:21px; color:#ffd2dc; font-variant-numeric:tabular-nums;
    text-shadow:0 0 14px rgba(255,90,126,.4); }
.cnt-val small{ font-family:var(--mono); font-size:11.5px; color:var(--dim); }
.cnt-val em{ font-style:normal; color:var(--rail); opacity:.55; margin:0 1px; }
.cnt-row.tot{ border-top:1px solid rgba(255,90,126,.32); margin-top:1px; }
.cnt-row.tot .cnt-lbl{ color:var(--white); font-weight:700; }
.cnt-row.tot .cnt-val b{ font-size:23px; color:#ffe2e8; }

/* —— parametrização: parágrafo + zonas —— */
.sfd-p{ font-size:16.5px; color:var(--soft); line-height:1.46; margin-bottom:15px; } .sfd-p b{ color:var(--white); }
.hl-38{ color:#1a1205; font-weight:800; padding:1px 8px; border-radius:7px; white-space:nowrap;
    background:linear-gradient(135deg, var(--gold), var(--gold-2)); box-shadow:0 0 16px rgba(243,177,60,.3); }
.zt-map{ display:flex; flex-direction:column; gap:8px; }
.zt-row{ position:relative; display:flex; align-items:center; gap:13px; padding:9px 13px; border-radius:11px;
    background:rgba(10,22,42,.5); border:1px solid rgba(120,160,220,.14); opacity:0;
    transition:background .3s, border-color .3s, box-shadow .3s; }
.sfd.visible .zt-row{ animation:sfdZtIn .55s var(--ease) forwards; animation-delay:calc(.6s + var(--i) * .08s); }
@keyframes sfdZtIn{ from{ opacity:0; transform:translateX(16px); } to{ opacity:1; transform:translateX(0); } }
/* highlight suave ao entrar (overlay, não trava o hover) */
.zt-row::before{ content:""; position:absolute; inset:0; border-radius:11px; pointer-events:none;
    background:rgba(57,214,232,.16); opacity:0; }
.sfd.visible .zt-row::before{ animation:sfdZtHi 1.2s var(--ease); animation-delay:calc(.6s + var(--i) * .08s); }
@keyframes sfdZtHi{ 0%{ opacity:0; } 38%{ opacity:1; } 100%{ opacity:0; } }
.zt-badge{ font-family:var(--mono); font-size:14px; font-weight:700; color:var(--gold); min-width:74px; text-align:center;
    padding:4px 8px; border-radius:8px; flex:0 0 auto; line-height:1.1;
    background:rgba(243,177,60,.1); border:1px solid rgba(243,177,60,.26); transition:background .3s, box-shadow .3s, color .3s; }
.zt-row.ext .zt-badge{ color:var(--cyan); min-width:96px; background:rgba(57,214,232,.1); border-color:rgba(57,214,232,.26); }
.zt-name{ font-size:16px; color:var(--soft); flex:1; }
.zt-pill{ margin-left:auto; font-family:var(--mono); font-size:12.5px; color:var(--gold-2); white-space:nowrap; flex:0 0 auto;
    padding:3px 12px; border-radius:999px; background:rgba(243,177,60,.08); border:1px solid rgba(243,177,60,.2); transition:color .3s, border-color .3s; }
.zt-row:hover{ background:rgba(57,214,232,.07); border-color:rgba(57,214,232,.36); box-shadow:0 0 18px rgba(57,214,232,.12); }
.zt-row:hover .zt-badge{ background:rgba(243,177,60,.22); box-shadow:0 0 14px rgba(243,177,60,.34); }
.zt-row.ext:hover .zt-badge{ background:rgba(57,214,232,.22); box-shadow:0 0 14px rgba(57,214,232,.34); }
.zt-row:hover .zt-pill{ color:var(--white); border-color:rgba(243,177,60,.5); }

/* —— faixa inferior: borda dourada + glow + wipe horizontal —— */
.sfd-foot{ display:flex; align-items:center; gap:15px; margin-top:20px; padding:14px 26px; font-size:19px; color:var(--soft);
    border-radius:14px; position:relative; overflow:hidden;
    background:linear-gradient(155deg, rgba(243,177,60,.1), rgba(6,15,30,.34));
    border:1px solid rgba(243,177,60,.34); box-shadow:0 0 26px rgba(243,177,60,.08), inset 0 1px 0 rgba(255,212,121,.08);
    clip-path:inset(0 100% 0 0); opacity:0; }
.sfd.visible .sfd-foot{ animation:sfdFootWipe .95s var(--ease) forwards; animation-delay:.82s; }
@keyframes sfdFootWipe{ 0%{ clip-path:inset(0 100% 0 0); opacity:0; } 28%{ opacity:1; } 100%{ clip-path:inset(0 0 0 0); opacity:1; } }
.sfd-foot b{ color:var(--gold-2); }
.sfd-foot-ico{ width:34px; height:34px; flex:0 0 auto; display:grid; place-items:center; border-radius:9px;
    color:var(--gold); background:rgba(243,177,60,.12); border:1px solid rgba(243,177,60,.3); }
.sfd-foot-ico svg{ width:19px; height:19px; }
/* sheen dourado lento atravessando a faixa */
.sfd-foot::after{ content:""; position:absolute; top:0; bottom:0; width:40%; pointer-events:none;
    background:linear-gradient(100deg, transparent, rgba(255,212,121,.1), transparent);
    animation:sfdSheen 6.5s ease-in-out 1.6s infinite; }
@keyframes sfdSheen{ 0%{ left:-45%; } 55%,100%{ left:120%; } }

/* —— modo de revisão estática (?still): congela em estado final —— */
.still .sfd .src-item, .still .sfd .zt-row, .still .sfd-foot{ opacity:1!important; transform:none!important;
    clip-path:none!important; animation:none!important; }
.still .sfd .zt-row::before, .still .sfd .src-tag, .still .sfd-card::before,
.still .sfd-card::after, .still .cnt-dot, .still .sfd-foot::after{ animation:none!important; }

.todo{ color:var(--gold-2); border-bottom:1px dashed rgba(255,212,121,.55); font-style:normal; }

/* ============================================================================
   === SLIDE 5 — MATRIZ O-D · DASHBOARD CIENTÍFICO (classe .s4.odm) ===
   Faixa metodológica (4 etapas) + painel: KPI/mini-cards/gráfico P×A + heatmap.
   Heatmap e barras desenhados via JS (setupSlide5). Sem print bruto.
   ============================================================================ */
.odm .slide-inner{ display:flex; flex-direction:column; padding:42px 76px 78px; }
.odm .slide-title{ margin-top:10px; }
.odm .slide-lead{ margin-top:9px; max-width:1500px; font-size:20px; }

/* —— BLOCO B: faixa metodológica —— */
.odm-flow{ display:flex; align-items:stretch; gap:10px; margin-top:15px; }
.odm-step{ flex:1; display:flex; align-items:flex-start; gap:13px; position:relative; overflow:hidden;
    background:linear-gradient(155deg, rgba(15,32,58,.5), rgba(6,14,28,.36)); border:1px solid rgba(120,160,220,.18);
    border-radius:15px; padding:15px 17px; backdrop-filter:blur(6px); -webkit-backdrop-filter:blur(6px);
    transition:transform .4s var(--ease), box-shadow .4s var(--ease), border-color .4s var(--ease); }
.odm-step::before{ content:""; position:absolute; inset:0; border-radius:15px; padding:1px; pointer-events:none;
    background:linear-gradient(130deg, rgba(243,177,60,0) 36%, rgba(243,177,60,.45) 50%, rgba(243,177,60,0) 64%);
    background-size:300% 300%; -webkit-mask:linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
    -webkit-mask-composite:xor; mask:linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); mask-composite:exclude;
    opacity:.5; animation:sfdShimmer 9s linear infinite; }
.odm-step:nth-child(3)::before{ animation-delay:-2.2s; } .odm-step:nth-child(5)::before{ animation-delay:-4.4s; } .odm-step:nth-child(7)::before{ animation-delay:-6.6s; }
.odm-step:hover{ transform:translateY(-4px); border-color:rgba(243,177,60,.4);
    box-shadow:0 22px 48px rgba(0,0,0,.45), 0 0 26px rgba(243,177,60,.12); }
.os-ico{ width:38px; height:38px; flex:0 0 auto; display:grid; place-items:center; border-radius:11px; color:var(--gold);
    background:rgba(243,177,60,.1); border:1px solid rgba(243,177,60,.28); box-shadow:0 0 14px rgba(243,177,60,.14); }
.os-ico svg{ width:21px; height:21px; }
.os-tx{ position:relative; z-index:1; }
.os-n{ font-family:var(--mono); font-size:12px; letter-spacing:.14em; color:var(--gold-2); opacity:.8; }
.os-tx b{ display:block; font-size:18px; font-weight:700; color:var(--white); margin-top:1px; line-height:1.12; }
.os-tx p{ font-size:13px; color:var(--dim); margin-top:5px; line-height:1.32; }
.odm-arrow{ flex:0 0 auto; align-self:center; width:26px; height:26px; display:grid; place-items:center; color:var(--gold);
    animation:odmArrow 2.4s ease-in-out infinite; }
.odm-arrow:nth-of-type(4){ animation-delay:.5s; } .odm-arrow:nth-of-type(6){ animation-delay:1s; }
.odm-arrow svg{ width:22px; height:22px; filter:drop-shadow(0 0 6px rgba(243,177,60,.5)); }
@keyframes odmArrow{ 0%,100%{ opacity:.35; transform:translateX(-2px); } 50%{ opacity:1; transform:translateX(2px); } }

/* —— BLOCO C: painel —— */
.odm-panel{ display:grid; grid-template-columns:1fr 660px; gap:24px; margin-top:14px; flex:1; min-height:0; align-items:stretch; }
.odm-left{ display:flex; flex-direction:column; gap:16px; min-width:0; }

/* card base (glass) reutilizável */
.odm-kpiblock, .odm-chart, .odm-right{ position:relative; border-radius:18px; overflow:hidden;
    background:linear-gradient(155deg, rgba(15,32,58,.5), rgba(6,14,28,.38)); border:1px solid rgba(120,160,220,.18);
    box-shadow:0 16px 40px rgba(0,0,0,.38), inset 0 1px 0 rgba(160,200,255,.05);
    backdrop-filter:blur(7px); -webkit-backdrop-filter:blur(7px); }

/* KPI + mini-cards */
.odm-kpiblock{ display:flex; align-items:center; gap:22px; padding:18px 22px; }
.odm-kpi{ flex:0 0 auto; display:flex; flex-direction:column; padding-right:22px; border-right:1px solid var(--line); }
.odm-kpi b{ font-family:var(--mono); font-weight:700; font-size:72px; line-height:.88; font-variant-numeric:tabular-nums;
    background:linear-gradient(100deg, var(--gold), var(--gold-2)); -webkit-background-clip:text; background-clip:text; color:transparent;
    filter:drop-shadow(0 0 22px rgba(243,177,60,.28)); }
.odm-kpi span{ font-size:15px; color:var(--soft); margin-top:7px; line-height:1.25; }
.odm-mini-grid{ flex:1; display:grid; grid-template-columns:1fr 1fr; gap:9px; min-width:0; }
.odm-mini{ background:rgba(10,22,42,.5); border:1px solid rgba(120,160,220,.14); border-radius:11px; padding:9px 12px;
    display:flex; flex-direction:column; gap:3px; transition:border-color .3s, box-shadow .3s, transform .3s; }
.odm-mini:hover{ transform:translateY(-2px); border-color:rgba(57,214,232,.36); box-shadow:0 0 18px rgba(57,214,232,.12); }
.om-l{ font-family:var(--mono); font-size:10.5px; letter-spacing:.04em; text-transform:uppercase; color:var(--dim); }
.om-v{ font-size:17px; font-weight:700; color:var(--white); line-height:1.12; }
.om-v.sm{ font-size:13px; line-height:1.22; } .om-v.gold{ font-family:var(--mono); color:var(--gold-2); }
.om-v.cyan{ font-family:var(--mono); color:var(--cyan); }
.om-v.ok{ color:var(--green); display:flex; align-items:center; gap:7px; }
.ok-dot{ width:8px; height:8px; border-radius:50%; background:var(--green); box-shadow:0 0 10px var(--green); animation:cntDot 1.9s ease-in-out infinite; }

/* gráfico P × A */
.odm-chart{ flex:1; display:flex; flex-direction:column; padding:14px 20px 10px; min-height:0; }
.oc-head{ display:flex; align-items:center; justify-content:space-between; margin-bottom:6px; }
.oc-head b{ font-size:16px; color:var(--white); font-weight:700; }
.oc-leg{ display:flex; align-items:center; gap:8px; font-family:var(--mono); font-size:11px; color:var(--dim); }
.oc-leg .lg{ width:11px; height:11px; border-radius:3px; display:inline-block; }
.oc-leg .lg.prod{ background:linear-gradient(160deg, var(--gold), var(--gold-2)); margin-left:4px; }
.oc-leg .lg.attr{ background:linear-gradient(160deg, var(--cyan), #8fecf4); margin-left:10px; }
.oc-bars{ flex:1; display:flex; align-items:flex-end; gap:0; min-height:0; padding-top:14px; }
.ocg{ flex:1; height:100%; display:flex; flex-direction:column; align-items:center; justify-content:flex-end; gap:6px;
    border-radius:8px 8px 0 0; transition:background .25s; cursor:default; }
.ocg:hover{ background:rgba(57,214,232,.06); }
.ocg-bars{ flex:1; width:100%; display:flex; align-items:flex-end; justify-content:center; gap:5px; min-height:0; }
.ocb{ width:15px; height:0; border-radius:5px 5px 0 0; position:relative; align-self:flex-end;
    transition:height 1.05s var(--ease), filter .25s; transition-delay:var(--bd,0s); }
.ocb.prod{ background:linear-gradient(180deg, var(--gold-2), var(--gold)); box-shadow:0 0 10px rgba(243,177,60,.25); }
.ocb.attr{ background:linear-gradient(180deg, #8fecf4, var(--cyan)); box-shadow:0 0 10px rgba(57,214,232,.25); }
.ocb i{ position:absolute; top:-15px; left:50%; transform:translateX(-50%); font-family:var(--mono); font-size:9.5px;
    font-style:normal; color:var(--soft); white-space:nowrap; opacity:0; transition:opacity .3s; }
.odm.visible .ocb i{ opacity:.9; transition-delay:1s; }
.ocg:hover .ocb{ filter:brightness(1.18); }
.ocg:hover .ocb i{ opacity:1; color:var(--white); }
.ocg-x{ font-family:var(--mono); font-size:10.5px; color:var(--dim); letter-spacing:.02em; transition:color .25s; }
.ocg:hover .ocg-x{ color:var(--gold-2); }
.odm.visible .ocb{ height:var(--h); }

/* —— heatmap (lado direito) —— */
.odm-right{ display:flex; flex-direction:column; padding:14px 18px 16px; }
.oh-head{ display:flex; align-items:center; justify-content:space-between; margin-bottom:10px; }
.oh-head b{ font-size:16px; color:var(--white); font-weight:700; } .oh-head b span{ color:var(--dim); font-weight:400; font-size:13px; }
.oh-leg{ display:flex; align-items:center; gap:7px; font-family:var(--mono); font-size:10.5px; color:var(--dim); }
.oh-grad{ width:84px; height:9px; border-radius:5px; display:inline-block;
    background:linear-gradient(90deg, #0c1c33, #7a3a1e 38%, #d56a20 66%, #ffc861); }
.odm-heat{ flex:1; display:grid; gap:3px; min-height:0;
    grid-template-columns:44px repeat(9, 1fr); grid-auto-rows:1fr; }
.hcorner{ }
.hcol, .hrow{ font-family:var(--mono); font-size:10.5px; color:var(--soft); display:flex; align-items:center; justify-content:center; transition:color .25s; }
.hcol{ padding-bottom:2px; } .hrow{ justify-content:flex-end; padding-right:7px; color:var(--gold-2); }
.hc{ border-radius:5px; position:relative; display:flex; align-items:center; justify-content:center; cursor:default;
    font-family:var(--mono); font-size:10px; font-variant-numeric:tabular-nums; line-height:1;
    opacity:0; transform:scale(.6); }
.odm.visible .hc{ animation:hcIn .5s var(--ease) forwards; animation-delay:calc(.95s + var(--ci) * .012s); }
@keyframes hcIn{ to{ opacity:1; transform:scale(1); } }
/* foco: realça linha + coluna ao passar o mouse */
.odm-heat.focus .hc{ opacity:.28; }
.odm-heat.focus .hc.keep{ opacity:1; box-shadow:0 0 0 1px rgba(255,212,121,.45) inset; }
.odm-heat.focus .hcol.keep, .odm-heat.focus .hrow.keep{ color:var(--gold); text-shadow:0 0 10px rgba(243,177,60,.5); }

/* —— faixa de insight —— */
.odm-insight{ display:flex; align-items:center; gap:14px; margin-top:13px; padding:12px 24px; font-size:18px; color:var(--soft);
    border-radius:14px; position:relative; overflow:hidden;
    background:linear-gradient(155deg, rgba(243,177,60,.1), rgba(6,15,30,.34)); border:1px solid rgba(243,177,60,.32);
    box-shadow:0 0 24px rgba(243,177,60,.07), inset 0 1px 0 rgba(255,212,121,.08); clip-path:inset(0 100% 0 0); opacity:0; }
.odm.visible .odm-insight{ animation:sfdFootWipe 1s var(--ease) forwards; animation-delay:1.35s; }
.odm-insight b{ color:var(--gold-2); } .odm-insight b.cy{ color:var(--cyan); }
.oi-ico{ width:34px; height:34px; flex:0 0 auto; display:grid; place-items:center; border-radius:9px; color:var(--gold);
    background:rgba(243,177,60,.12); border:1px solid rgba(243,177,60,.3); }
.oi-ico svg{ width:20px; height:20px; }

/* —— modo de revisão estática (?still) —— */
.still .odm .hc{ opacity:1!important; transform:none!important; animation:none!important; }
.still .odm .ocb{ transition:none!important; }
.still .odm .ocb i{ opacity:.9!important; transition:none!important; }
.still .odm-insight{ opacity:1!important; clip-path:none!important; animation:none!important; }
.still .odm-step::before, .still .odm-arrow, .still .ok-dot{ animation:none!important; }

/* ============================================================================
   === SLIDE 6 — IMPACTO: do atraso ao investimento (classe .s5.imp) ===
   Faixa-fórmula (conta montada passo a passo) → custo → obra/payback →
   mapas antes/depois (PN01 em conflito → viaduto) → insight.
   ============================================================================ */
.imp .slide-inner{ display:flex; flex-direction:column; padding:42px 76px 72px; }
.imp .slide-title{ margin-top:9px; } .imp .slide-lead{ margin-top:8px; font-size:20px; }

/* —— faixa-fórmula —— */
.imp-calc{ display:flex; align-items:stretch; gap:9px; margin-top:17px; }
.imp-factor{ flex:1 1 0; min-width:0; display:flex; flex-direction:column; align-items:center; justify-content:center;
    text-align:center; padding:12px 12px; border-radius:14px; position:relative; overflow:hidden;
    background:linear-gradient(155deg, rgba(15,32,58,.5), rgba(6,14,28,.38)); border:1px solid rgba(120,160,220,.18);
    box-shadow:0 14px 34px rgba(0,0,0,.34), inset 0 1px 0 rgba(160,200,255,.05); backdrop-filter:blur(6px);
    transition:transform .4s var(--ease), border-color .4s var(--ease), box-shadow .4s var(--ease); }
.imp-factor:hover{ transform:translateY(-3px); border-color:rgba(243,177,60,.4); box-shadow:0 20px 44px rgba(0,0,0,.45), 0 0 22px rgba(243,177,60,.12); }
.imp-factor b{ font-family:var(--mono); font-weight:700; font-size:29px; color:var(--gold-2); font-variant-numeric:tabular-nums;
    line-height:1; text-shadow:0 0 18px rgba(243,177,60,.3); }
.imp-factor span{ font-size:12.5px; color:var(--soft); margin-top:7px; line-height:1.3; } .imp-factor span i{ color:var(--dim); font-style:normal; }
.imp-op{ flex:0 0 auto; align-self:center; font-family:var(--mono); font-size:22px; color:var(--dim); }
.imp-eq{ flex:0 0 auto; align-self:center; font-family:var(--mono); font-size:30px; font-weight:700; color:var(--gold);
    text-shadow:0 0 14px rgba(243,177,60,.5); padding:0 2px; }
.imp-result{ flex:0 0 396px; display:flex; align-items:center; gap:14px; padding:12px 20px; border-radius:15px; position:relative; overflow:hidden;
    background:linear-gradient(150deg, rgba(243,177,60,.2), rgba(6,15,30,.42)); border:1px solid rgba(243,177,60,.5);
    box-shadow:0 16px 40px rgba(0,0,0,.4), 0 0 30px rgba(243,177,60,.16), inset 0 1px 0 rgba(255,212,121,.12); }
.imp-result::after{ content:""; position:absolute; top:0; bottom:0; width:36%; pointer-events:none;
    background:linear-gradient(100deg, transparent, rgba(255,212,121,.14), transparent); animation:sfdSheen 6s ease-in-out 2.4s infinite; }
.ir-ico{ width:46px; height:46px; flex:0 0 auto; display:grid; place-items:center; border-radius:13px; color:var(--gold);
    background:rgba(243,177,60,.14); border:1px solid rgba(243,177,60,.34); box-shadow:0 0 18px rgba(243,177,60,.2); }
.ir-ico svg{ width:25px; height:25px; }
.ir-lab{ font-family:var(--mono); font-size:11.5px; letter-spacing:.06em; text-transform:uppercase; color:var(--gold-2); }
.ir-tx b{ display:block; font-family:var(--mono); font-weight:700; font-size:32px; line-height:1.04; margin-top:3px; color:var(--gold);
    letter-spacing:-.01em; white-space:nowrap; font-variant-numeric:tabular-nums; text-shadow:0 0 24px rgba(243,177,60,.4); }

/* —— consequência —— */
.imp-consq{ display:flex; justify-content:flex-end; gap:13px; margin-top:11px; }
.imp-cq{ display:flex; align-items:center; gap:13px; padding:10px 18px; border-radius:13px; min-width:300px;
    background:linear-gradient(155deg, rgba(15,32,58,.5), rgba(6,14,28,.36)); border:1px solid rgba(120,160,220,.18);
    box-shadow:0 12px 30px rgba(0,0,0,.32); transition:transform .35s var(--ease), border-color .35s; }
.imp-cq:hover{ transform:translateY(-2px); }
.imp-cq.hl{ border-color:rgba(243,177,60,.45); background:linear-gradient(150deg, rgba(243,177,60,.14), rgba(6,15,30,.4)); }
.cq-ico{ width:38px; height:38px; flex:0 0 auto; display:grid; place-items:center; border-radius:11px; color:var(--soft);
    background:rgba(120,160,220,.1); border:1px solid rgba(120,160,220,.2); }
.imp-cq.hl .cq-ico{ color:var(--gold); background:rgba(243,177,60,.12); border-color:rgba(243,177,60,.3); }
.cq-ico svg{ width:21px; height:21px; }
.cq-lab{ font-family:var(--mono); font-size:11px; letter-spacing:.06em; text-transform:uppercase; color:var(--dim); }
.imp-cq b{ display:block; font-family:var(--mono); font-weight:700; font-size:27px; line-height:1.05; color:var(--white); font-variant-numeric:tabular-nums; }
.imp-cq.hl b{ color:var(--gold-2); }
.imp-cq i{ font-style:normal; font-size:11.5px; color:var(--dim); }

/* —— mapas antes → depois —— */
.imp-maps{ display:grid; grid-template-columns:1fr auto 1fr; gap:14px; align-items:stretch; margin-top:15px; flex:1; min-height:0; }
.imp-map{ position:relative; border-radius:16px; overflow:hidden; min-height:0; margin:0;
    border:1px solid rgba(120,160,220,.2); box-shadow:0 16px 40px rgba(0,0,0,.4);
    transition:transform .4s var(--ease), box-shadow .4s var(--ease), border-color .4s var(--ease); }
.imp-map.atual{ border-color:rgba(255,70,94,.34); } .imp-map.sol{ border-color:rgba(57,214,232,.36); }
.imp-map:hover{ transform:translateY(-3px); }
.imp-map.atual:hover{ box-shadow:0 22px 50px rgba(0,0,0,.5), 0 0 26px rgba(255,70,94,.16); }
.imp-map.sol:hover{ box-shadow:0 22px 50px rgba(0,0,0,.5), 0 0 26px rgba(57,214,232,.18); }
.im-air{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; display:block;
    filter:saturate(.62) brightness(.46) contrast(1.06); }
.im-scrim{ position:absolute; inset:0; pointer-events:none; }
.im-scrim.red{ background:radial-gradient(70% 80% at 50% 56%, rgba(255,70,94,.32), transparent 70%), linear-gradient(180deg, rgba(4,8,18,.55), rgba(4,8,18,.2)); }
.im-scrim.cy{ background:radial-gradient(70% 80% at 50% 50%, rgba(57,214,232,.28), transparent 70%), linear-gradient(180deg, rgba(4,8,18,.5), rgba(4,8,18,.2)); }
.im-svg{ position:absolute; inset:0; width:100%; height:100%; }

/* atual — conflito */
.im-road{ fill:none; stroke:rgba(57,214,232,.45); stroke-width:5; stroke-linecap:round; }
.im-rail{ fill:none; stroke:var(--rail); stroke-width:5; stroke-linecap:round; stroke-dasharray:2 12;
    filter:drop-shadow(0 0 6px rgba(255,90,126,.7)); }
.im-rail.calm{ stroke:rgba(255,90,126,.7); filter:drop-shadow(0 0 4px rgba(255,90,126,.4)); }
.im-queue circle{ fill:var(--red); opacity:0; filter:drop-shadow(0 0 5px rgba(255,70,94,.8)); }
.imp.visible .atual .im-queue circle{ animation:imQueue 2.6s ease-in-out infinite; }
.imp.visible .atual .im-queue circle:nth-child(2){ animation-delay:.2s; }
.imp.visible .atual .im-queue circle:nth-child(3){ animation-delay:.4s; }
.imp.visible .atual .im-queue circle:nth-child(4){ animation-delay:.6s; }
@keyframes imQueue{ 0%,100%{ opacity:.25; } 50%{ opacity:.95; } }
.im-node.red{ fill:rgba(255,70,94,.22); stroke:var(--red); stroke-width:3; transform-origin:404px 196px;
    filter:drop-shadow(0 0 10px rgba(255,70,94,.8)); }
.imp.visible .atual .im-node.red{ animation:imNode 1.8s ease-in-out infinite; }
@keyframes imNode{ 0%,100%{ transform:scale(.86); opacity:.85; } 50%{ transform:scale(1.12); opacity:1; } }
.im-x{ stroke:#fff; stroke-width:4; stroke-linecap:round; filter:drop-shadow(0 0 4px rgba(255,70,94,.9)); }

/* solução — viaduto */
.im-pillars path{ fill:none; stroke:rgba(57,214,232,.5); stroke-width:3; stroke-linecap:round; opacity:0; }
.imp.visible .sol .im-pillars path{ animation:imFade .5s ease forwards 1.05s; }
@keyframes imFade{ to{ opacity:1; } }
.im-via{ fill:none; stroke:var(--cyan); stroke-width:6; stroke-linecap:round; stroke-linejoin:round;
    filter:drop-shadow(0 0 8px rgba(57,214,232,.7)); stroke-dasharray:1100; stroke-dashoffset:1100; }
.imp.visible .sol .im-via{ animation:imDraw 1.5s ease .35s forwards; }
@keyframes imDraw{ to{ stroke-dashoffset:0; } }
.im-flow{ fill:var(--cyan); filter:drop-shadow(0 0 7px rgba(57,214,232,.9)); opacity:0; }
.imp.visible .sol .im-flow{ animation:imFade .4s ease forwards 1.7s; }
.im-check{ fill:none; stroke:var(--green); stroke-width:5; stroke-linecap:round; stroke-linejoin:round;
    filter:drop-shadow(0 0 6px rgba(55,224,126,.8)); stroke-dasharray:70; stroke-dashoffset:70; }
.imp.visible .sol .im-check{ animation:imDraw .5s ease 1.85s forwards; }

/* legendas + tags dos mapas */
.im-cap{ position:absolute; top:12px; left:14px; z-index:3; display:flex; align-items:center; gap:8px;
    font-family:var(--mono); font-size:13px; letter-spacing:.04em; color:var(--white);
    background:rgba(3,8,18,.6); padding:6px 12px; border-radius:9px; backdrop-filter:blur(4px); }
.im-cap .dot{ width:9px; height:9px; border-radius:50%; }
.im-cap .dot.red{ background:var(--red); box-shadow:0 0 10px var(--red); } .im-cap .dot.cy{ background:var(--cyan); box-shadow:0 0 10px var(--cyan); }
.im-tag{ position:absolute; z-index:3; font-family:var(--mono); font-size:11px; letter-spacing:.02em; padding:4px 10px; border-radius:8px;
    background:rgba(3,8,18,.62); backdrop-filter:blur(3px); white-space:nowrap; }
.im-tag.t-rail{ top:13px; right:14px; color:var(--rail); border:1px solid rgba(255,90,126,.4); }
.im-tag.t-ret{ bottom:48px; left:26px; color:#ffd0d8; border:1px solid rgba(255,70,94,.45); background:rgba(60,8,16,.6); }
.im-tag.t-conf{ bottom:14px; left:14px; color:#fff; border:1px solid rgba(255,70,94,.55); background:rgba(120,18,30,.6); box-shadow:0 0 16px rgba(255,70,94,.25); }
.im-tag.t-blue{ top:13px; right:14px; color:var(--cyan); border:1px solid rgba(57,214,232,.42); }
.im-tag.t-ok{ bottom:14px; left:14px; color:#dffaff; border:1px solid rgba(57,214,232,.55); background:rgba(8,52,64,.62); box-shadow:0 0 16px rgba(57,214,232,.25); }
.imp-arrow{ flex:0 0 auto; align-self:center; width:40px; display:grid; place-items:center; color:var(--cyan);
    animation:odmArrow 2.2s ease-in-out infinite; }
.imp-arrow svg{ width:36px; height:24px; filter:drop-shadow(0 0 7px rgba(57,214,232,.6)); }

/* —— insight —— */
.imp-insight{ display:flex; align-items:center; gap:14px; margin-top:14px; padding:12px 24px; font-size:18px; color:var(--soft);
    border-radius:14px; position:relative; overflow:hidden;
    background:linear-gradient(155deg, rgba(57,214,232,.1), rgba(6,15,30,.34)); border:1px solid rgba(57,214,232,.3);
    box-shadow:0 0 24px rgba(57,214,232,.07), inset 0 1px 0 rgba(160,230,255,.08); clip-path:inset(0 100% 0 0); opacity:0; }
.imp.visible .imp-insight{ animation:sfdFootWipe 1s var(--ease) forwards; animation-delay:1.95s; }
.imp-insight b{ color:var(--gold-2); } .imp-insight b.cy{ color:var(--cyan); }
.ii-ico{ width:34px; height:34px; flex:0 0 auto; display:grid; place-items:center; border-radius:9px; color:var(--cyan);
    background:rgba(57,214,232,.12); border:1px solid rgba(57,214,232,.3); }
.ii-ico svg{ width:21px; height:21px; }

/* —— modo de revisão estática (?still) —— */
.still .imp .im-queue circle, .still .imp .im-node.red, .still .imp .im-pillars path, .still .imp .im-flow{ animation:none!important; opacity:1!important; }
.still .imp .im-via, .still .imp .im-check{ animation:none!important; stroke-dashoffset:0!important; }
.still .imp-insight{ opacity:1!important; clip-path:none!important; animation:none!important; }
.still .imp-result::after, .still .imp-arrow{ animation:none!important; }

/* ============================================================================
   === SLIDE 7 — O QUE É O ALIME (classe .s6) ===
   ============================================================================ */
.s6 .slide-inner{ display:flex; flex-direction:column; justify-content:center; }
.s6-grid{ display:grid; grid-template-columns:1fr 770px; gap:50px; margin-top:24px; align-items:center; }
.s6-left .lead{ margin-top:0; } .s6-left .lead b{ color:var(--white); }
.s6-feats{ display:flex; flex-direction:column; gap:13px; margin-top:24px; }
.s6-feat{ display:flex; align-items:flex-start; gap:15px; padding:15px 18px; border-radius:14px; position:relative; overflow:hidden;
    background:linear-gradient(155deg, rgba(15,32,58,.5), rgba(6,14,28,.36)); border:1px solid rgba(120,160,220,.18);
    box-shadow:0 12px 30px rgba(0,0,0,.3); transition:transform .4s var(--ease), border-color .4s var(--ease), box-shadow .4s var(--ease); }
.s6-feat:hover{ transform:translateX(4px); border-color:rgba(243,177,60,.4); box-shadow:0 18px 40px rgba(0,0,0,.42), 0 0 22px rgba(243,177,60,.1); }
.sf-ico{ width:42px; height:42px; flex:0 0 auto; display:grid; place-items:center; border-radius:12px; color:var(--gold);
    background:rgba(243,177,60,.1); border:1px solid rgba(243,177,60,.28); box-shadow:0 0 14px rgba(243,177,60,.14); }
.sf-ico.cy{ color:var(--cyan); background:rgba(57,214,232,.1); border-color:rgba(57,214,232,.28); box-shadow:0 0 14px rgba(57,214,232,.14); }
.sf-ico.bl{ color:var(--blue); background:rgba(59,130,246,.12); border-color:rgba(59,130,246,.32); box-shadow:0 0 14px rgba(59,130,246,.16); }
.sf-ico svg{ width:23px; height:23px; }
.s6-feat b{ display:block; font-size:19px; font-weight:700; color:var(--white); line-height:1.1; }
.s6-feat p{ font-size:15.5px; color:var(--soft); margin-top:4px; line-height:1.36; }
.s6-stack{ display:flex; flex-wrap:wrap; align-items:center; gap:9px; margin-top:20px; }
.stk-l{ font-family:var(--mono); font-size:11px; letter-spacing:.1em; text-transform:uppercase; color:var(--dim); margin-right:4px; }
.stk{ font-family:var(--mono); font-size:13px; color:var(--cyan); padding:5px 13px; border-radius:999px;
    background:rgba(57,214,232,.08); border:1px solid rgba(57,214,232,.24); transition:all .3s; }
.stk:hover{ background:rgba(57,214,232,.16); box-shadow:0 0 14px rgba(57,214,232,.25); color:var(--white); }
.s6-seal{ display:flex; align-items:center; gap:11px; margin-top:20px; padding:11px 16px; border-radius:12px; font-size:15.5px; color:var(--soft);
    background:linear-gradient(155deg, rgba(243,177,60,.09), rgba(6,15,30,.3)); border:1px solid rgba(243,177,60,.28); }
.s6-seal b{ color:var(--gold-2); }
.ss-ic{ width:26px; height:26px; flex:0 0 auto; display:grid; place-items:center; border-radius:50%; color:#06210f;
    background:linear-gradient(135deg, var(--green), #7df0a8); box-shadow:0 0 12px rgba(55,224,126,.4); } .ss-ic svg{ width:15px; height:15px; }

/* —— MOCKUP DO SIMULADOR (moldura premium · sintético, não é print) —— */
.al-mock{ position:relative; border-radius:18px; overflow:hidden; backdrop-filter:blur(7px);
    background:linear-gradient(160deg, rgba(10,22,44,.9), rgba(4,10,22,.92)); border:1px solid rgba(120,160,220,.22);
    box-shadow:0 26px 64px rgba(0,0,0,.55), inset 0 1px 0 rgba(160,200,255,.06);
    transition:box-shadow .45s var(--ease), transform .45s var(--ease); }
.al-mock::before{ content:""; position:absolute; inset:0; border-radius:18px; padding:1px; pointer-events:none; z-index:5;
    background:linear-gradient(130deg, rgba(57,214,232,0) 32%, rgba(57,214,232,.55) 50%, rgba(243,177,60,.3) 60%, rgba(57,214,232,0) 70%); background-size:300% 300%;
    -webkit-mask:linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); -webkit-mask-composite:xor;
    mask:linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); mask-composite:exclude; opacity:.6; animation:sfdShimmer 9s linear infinite; }
.s6-right:hover .al-mock{ transform:translateY(-3px); box-shadow:0 32px 72px rgba(0,0,0,.6), 0 0 36px rgba(57,214,232,.14); }
.alm-bar{ display:flex; align-items:center; gap:11px; padding:11px 16px; border-bottom:1px solid rgba(120,160,220,.16);
    background:rgba(5,12,24,.7); font-family:var(--mono); font-size:13.5px; position:relative; z-index:2; }
.alm-bar b{ color:var(--gold); letter-spacing:.08em; } .alm-mut{ color:var(--dim); }
.alm-dots{ display:flex; gap:6px; } .alm-dots i{ width:10px; height:10px; border-radius:50%; }
.alm-dots i:nth-child(1){ background:#ff5f57; } .alm-dots i:nth-child(2){ background:#febc2e; } .alm-dots i:nth-child(3){ background:#28c840; }
.alm-live{ margin-left:auto; display:flex; align-items:center; gap:6px; font-size:11px; color:var(--green); letter-spacing:.04em; }
.alm-live i{ width:7px; height:7px; border-radius:50%; background:var(--green); box-shadow:0 0 9px var(--green); animation:cntDot 1.8s ease-in-out infinite; }
.alm-body{ display:grid; grid-template-columns:1fr 188px; position:relative; z-index:2; }
.alm-main{ display:flex; flex-direction:column; min-width:0; padding:13px; gap:11px; }
.alm-map{ position:relative; flex:1; min-height:330px; border-radius:12px; overflow:hidden; border:1px solid rgba(120,160,220,.14);
    background:radial-gradient(120% 100% at 50% 40%, rgba(20,42,74,.6), rgba(4,10,22,.9)),
        repeating-radial-gradient(circle at 46% 44%, rgba(120,160,220,.05) 0, rgba(120,160,220,.05) 1px, transparent 1px, transparent 26px); }
.alm-svg{ position:absolute; inset:0; width:100%; height:100%; animation:s3Drift 26s ease-in-out infinite; }
.ln{ stroke-width:1.6; fill:none; }
.ln.in{ stroke:rgba(57,214,232,.5); filter:drop-shadow(0 0 3px rgba(57,214,232,.4)); }
.ln.ext{ stroke:rgba(243,177,60,.55); filter:drop-shadow(0 0 3px rgba(243,177,60,.4)); }
.ln.faint{ stroke:rgba(120,160,220,.25); }
.s6.visible .ln{ opacity:0; animation:imFade .6s ease forwards; }
.s6.visible .ln:nth-child(odd){ animation-delay:.55s; } .s6.visible .ln:nth-child(even){ animation-delay:.7s; }
.alm-dot.gold{ fill:var(--gold-2); filter:drop-shadow(0 0 6px rgba(243,177,60,.9)); }
.alm-dot.cy{ fill:var(--cyan); filter:drop-shadow(0 0 6px rgba(57,214,232,.9)); }
.nd circle{ fill:rgba(10,24,44,.92); stroke:var(--cyan); stroke-width:2; }
.nd text{ fill:var(--white); font-family:var(--mono); font-size:11px; font-weight:700; text-anchor:middle; }
.nd.ext circle{ stroke:var(--gold); } .nd.ext text{ fill:var(--gold-2); }
.nd.hub circle{ fill:var(--cyan); stroke:#fff; filter:drop-shadow(0 0 10px rgba(57,214,232,.9)); }
.nd.hub .hub-ring{ fill:none; stroke:rgba(57,214,232,.5); stroke-width:1.4; animation:mkPulse 2.4s ease-out infinite; }
.s6.visible .nd{ opacity:0; transform-box:fill-box; transform-origin:center; animation:hcIn .5s var(--ease) forwards; animation-delay:calc(.7s + var(--ci) * .07s); }
.alm-area{ position:absolute; top:12px; left:13px; z-index:2; line-height:1.2; }
.alm-area b{ display:block; font-size:14px; color:var(--white); } .alm-area span{ font-family:var(--mono); font-size:11px; color:var(--cyan); }
.alm-hubtag{ position:absolute; left:50%; top:calc(168/330*100%); transform:translate(-50%, 16px); z-index:2;
    font-family:var(--mono); font-size:10.5px; color:var(--white); background:rgba(5,12,24,.7); padding:2px 8px; border-radius:6px; white-space:nowrap; pointer-events:none; }
.alm-legend{ position:absolute; left:13px; bottom:12px; z-index:2; display:flex; flex-direction:column; gap:5px;
    background:rgba(5,12,24,.62); padding:9px 12px; border-radius:9px; border:1px solid rgba(120,160,220,.14); }
.alm-legend span{ display:flex; align-items:center; gap:8px; font-size:11px; color:var(--soft); }
.alm-legend .lg{ width:13px; height:5px; border-radius:3px; flex:0 0 auto; }
.alm-legend .lg.in{ background:var(--cyan); } .alm-legend .lg.ext{ background:var(--gold); } .alm-legend .lg.conn{ background:linear-gradient(90deg,var(--cyan),var(--gold-2)); }
.alm-mods{ display:grid; grid-template-columns:repeat(4,1fr); gap:9px; position:relative; }
.alm-mods::before{ content:""; position:absolute; top:50%; left:6%; right:6%; height:2px; transform:translateY(-50%); z-index:0;
    background:linear-gradient(90deg, rgba(57,214,232,.5), rgba(243,177,60,.5)); opacity:.4; }
.alm-mods::after{ content:""; position:absolute; top:50%; left:6%; width:14px; height:14px; transform:translateY(-50%); border-radius:50%; z-index:1;
    background:radial-gradient(circle, var(--cyan), transparent 70%); animation:almFlow 4.5s linear infinite; }
@keyframes almFlow{ 0%{ left:6%; opacity:0; } 12%,88%{ opacity:1; } 100%{ left:91%; opacity:0; } }
.alm-mod{ position:relative; z-index:2; display:flex; flex-direction:column; align-items:flex-start; gap:7px; padding:10px 11px; border-radius:11px;
    background:linear-gradient(155deg, rgba(15,32,58,.9), rgba(6,14,28,.9)); border:1px solid rgba(120,160,220,.2);
    transition:transform .3s var(--ease), border-color .3s, box-shadow .3s; }
.alm-mod:hover{ transform:translateY(-3px); border-color:rgba(57,214,232,.5); box-shadow:0 12px 26px rgba(0,0,0,.4), 0 0 20px rgba(57,214,232,.16); }
.alm-mod.gold{ border-color:rgba(243,177,60,.32); } .alm-mod.gold:hover{ border-color:rgba(243,177,60,.55); box-shadow:0 12px 26px rgba(0,0,0,.4), 0 0 20px rgba(243,177,60,.18); }
.amm-th{ width:36px; height:27px; flex:0 0 auto; display:grid; place-items:center; border-radius:7px; color:var(--cyan);
    background:rgba(57,214,232,.08); border:1px solid rgba(57,214,232,.2); }
.amm-th svg{ width:30px; height:20px; fill:var(--cyan); } .alm-mod[data-mod=graph] .amm-th svg, .alm-mod[data-mod=scen] .amm-th svg{ fill:none; }
.amm-th.rs{ font-family:var(--mono); font-weight:700; font-size:15px; color:var(--gold); background:rgba(243,177,60,.1); border-color:rgba(243,177,60,.26); }
.alm-mod b{ display:block; font-size:12.5px; color:var(--white); line-height:1.05; white-space:nowrap; }
.alm-mod i{ font-style:normal; font-size:10px; color:var(--dim); line-height:1.25; display:block; }
.s6.visible .alm-mod{ opacity:0; animation:sfdItemIn .5s var(--ease) forwards; animation-delay:calc(1.25s + var(--mi) * .12s); }
.alm-side{ border-left:1px solid rgba(120,160,220,.16); padding:12px 11px; display:flex; flex-direction:column; gap:5px; background:rgba(4,10,22,.4); }
.alm-step{ display:flex; align-items:center; gap:9px; font-size:12.5px; color:var(--soft); padding:7px 10px; border-radius:9px;
    border:1px solid transparent; transition:all .3s; cursor:default; }
.alm-step b{ font-family:var(--mono); color:var(--dim); font-weight:700; }
.as-ic{ width:22px; height:22px; flex:0 0 auto; display:grid; place-items:center; color:var(--dim); } .as-ic svg{ width:16px; height:16px; }
.alm-step:not(.on):hover{ background:rgba(120,160,220,.06); border-color:rgba(120,160,220,.18); color:var(--white); }
.alm-step.on{ color:#06121f; background:linear-gradient(135deg, var(--gold), var(--gold-2)); font-weight:700; box-shadow:0 0 16px rgba(243,177,60,.3); }
.alm-step.on b, .alm-step.on .as-ic{ color:#06121f; }
.s6.visible .alm-step{ opacity:0; animation:sfdItemIn .45s var(--ease) forwards; animation-delay:calc(.85s + var(--si) * .08s); }
/* ?still: congela mockup no estado final */
.still .s6 .ln, .still .s6 .nd, .still .s6 .alm-mod, .still .s6 .alm-step{ opacity:1!important; transform:none!important; animation:none!important; }
.still .al-mock::before, .still .alm-mods::after, .still .alm-live i, .still .nd.hub .hub-ring, .still .alm-svg{ animation:none!important; }

/* ============================================================================
   === SLIDE 8 — QUATRO ETAPAS (classe .s7) ===
   ============================================================================ */
.s7 .slide-inner{ display:flex; flex-direction:column; justify-content:center; }
.s7 .slide-inner{ display:flex; flex-direction:column; justify-content:center; }

/* ===== fluxo horizontal: Entrada → 4 etapas → Saída ===== */
.m4-flow{ position:relative; display:flex; align-items:stretch; gap:8px; margin-top:26px; }
.m4-line{ position:absolute; left:20px; right:20px; top:50%; height:2px; transform:translateY(-1px); z-index:0; border-radius:2px;
    background:linear-gradient(90deg, rgba(57,214,232,0), rgba(57,214,232,.5) 11%, rgba(57,214,232,.5) 89%, rgba(57,214,232,0));
    box-shadow:0 0 13px rgba(57,214,232,.35); transition:box-shadow .4s; }
.m4-spark{ position:absolute; top:50%; left:0; width:11px; height:11px; margin:-5.5px 0 0 -5.5px; border-radius:50%;
    background:radial-gradient(circle, #ddfbff, var(--cyan) 55%, transparent 72%); box-shadow:0 0 16px var(--cyan); animation:m4Spark 4.8s linear infinite; }
.m4-flow:has(.m4-card:hover) .m4-line{ box-shadow:0 0 22px rgba(57,214,232,.6); }

/* endpoints (Entrada / Saída) */
.m4-end{ flex:0 0 138px; z-index:1; align-self:center; border-radius:14px; padding:15px 15px; display:flex; flex-direction:column; gap:8px;
    background:linear-gradient(160deg, rgba(13,28,52,.62), rgba(6,14,28,.42)); border:1px dashed rgba(120,160,220,.34);
    box-shadow:0 12px 30px rgba(0,0,0,.3); }
.me-ico{ width:34px; height:34px; display:grid; place-items:center; border-radius:10px; color:var(--cyan);
    background:rgba(57,214,232,.1); border:1px solid rgba(57,214,232,.3); box-shadow:0 0 12px rgba(57,214,232,.14); }
.me-ico svg{ width:20px; height:20px; }
.m4-end b{ font-size:16.5px; color:var(--cyan); font-weight:700; }
.m4-end p{ font-size:13px; color:var(--soft); line-height:1.32; }
.m4-end.out{ border-style:dashed; }
.m4-end.out .me-ico{ color:var(--gold); background:rgba(243,177,60,.1); border-color:rgba(243,177,60,.3); box-shadow:0 0 12px rgba(243,177,60,.14); }
.m4-end.out b{ color:var(--gold-2); }

/* cards de processamento */
.m4-card{ flex:1 1 0; min-width:0; z-index:1; position:relative; overflow:hidden; border-radius:16px; padding:18px 14px 15px; text-align:center;
    display:flex; flex-direction:column; align-items:center; cursor:pointer; font:inherit; color:inherit; appearance:none; -webkit-appearance:none;
    background:linear-gradient(160deg, rgba(15,32,58,.58), rgba(6,14,28,.4)); border:1px solid rgba(120,160,220,.2);
    box-shadow:0 16px 38px rgba(0,0,0,.36), inset 0 1px 0 rgba(160,200,255,.05); backdrop-filter:blur(6px);
    transition:transform .4s var(--ease), border-color .4s var(--ease), box-shadow .4s var(--ease); }
.m4-card:focus{ outline:none; }
.m4-card::before{ content:""; position:absolute; inset:0; border-radius:16px; padding:1px; pointer-events:none;
    background:linear-gradient(130deg, rgba(57,214,232,0) 36%, rgba(57,214,232,.45) 50%, rgba(57,214,232,0) 64%); background-size:300% 300%;
    -webkit-mask:linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); -webkit-mask-composite:xor;
    mask:linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); mask-composite:exclude; opacity:.5; animation:sfdShimmer 8.5s linear infinite; }
.m4-card.gd::before{ background:linear-gradient(130deg, rgba(243,177,60,0) 36%, rgba(243,177,60,.45) 50%, rgba(243,177,60,0) 64%); background-size:300% 300%; animation-delay:-2.4s; }
.m4-card:hover{ transform:translateY(-6px); border-color:rgba(57,214,232,.45); box-shadow:0 26px 54px rgba(0,0,0,.48), 0 0 28px rgba(57,214,232,.14); }
.m4-card.gd:hover{ border-color:rgba(243,177,60,.45); box-shadow:0 26px 54px rgba(0,0,0,.48), 0 0 28px rgba(243,177,60,.14); }
.mc-ring{ width:50px; height:50px; display:grid; place-items:center; border-radius:50%; color:var(--cyan);
    background:rgba(57,214,232,.09); border:1.5px solid rgba(57,214,232,.45); box-shadow:0 0 16px rgba(57,214,232,.18), inset 0 0 14px rgba(57,214,232,.06); }
.mc-ring svg{ width:25px; height:25px; }
.m4-card.gd .mc-ring{ color:var(--gold); background:rgba(243,177,60,.09); border-color:rgba(243,177,60,.45); box-shadow:0 0 16px rgba(243,177,60,.18), inset 0 0 14px rgba(243,177,60,.06); }
.mc-q{ display:block; font-family:var(--mono); font-size:13.5px; color:var(--cyan); margin-top:12px; }
.m4-card.gd .mc-q{ color:var(--gold-2); }
.m4-card b{ display:block; font-size:21px; color:var(--white); font-weight:700; margin-top:5px; line-height:1.1; }
.m4-card p{ font-size:13.5px; color:var(--soft); margin-top:7px; line-height:1.34; }
.mc-num{ display:block; font-family:var(--mono); font-size:13px; letter-spacing:.18em; margin-top:11px; }
.m4-card.cy .mc-num{ color:var(--cyan); opacity:.72; } .m4-card.gd .mc-num{ color:var(--gold); opacity:.78; }
.m4-card.lit{ transform:translateY(-6px); }
.m4-card.cy.lit{ border-color:var(--cyan); box-shadow:0 26px 54px rgba(0,0,0,.5), 0 0 36px rgba(57,214,232,.32); }
.m4-card.gd.lit{ border-color:var(--gold); box-shadow:0 26px 54px rgba(0,0,0,.5), 0 0 36px rgba(243,177,60,.32); }

.m4-arrow{ flex:0 0 auto; align-self:center; z-index:1; width:22px; height:22px; display:grid; place-items:center; color:var(--cyan);
    animation:odmArrow 2.6s ease-in-out infinite; transition:color .3s, transform .3s; }
.m4-arrow svg{ width:20px; height:20px; filter:drop-shadow(0 0 6px rgba(57,214,232,.5)); transition:filter .3s, transform .3s; }
.m4-card:hover + .m4-arrow{ color:var(--gold-2); }
.m4-card:hover + .m4-arrow svg{ filter:drop-shadow(0 0 9px rgba(255,212,121,.7)); transform:scale(1.18); }

/* ===== painel de impacto modal ===== */
.m4-panel{ margin-top:20px; border-radius:18px; padding:19px 26px 20px; position:relative; overflow:hidden; backdrop-filter:blur(7px);
    background:linear-gradient(160deg, rgba(15,32,58,.52), rgba(6,14,28,.38)); border:1px solid rgba(120,160,220,.2);
    box-shadow:0 18px 44px rgba(0,0,0,.4), inset 0 1px 0 rgba(160,200,255,.05); }
.mp-head{ display:flex; align-items:flex-start; gap:14px; margin-bottom:15px; }
.mp-ico{ width:38px; height:38px; flex:0 0 auto; display:grid; place-items:center; border-radius:11px; color:var(--rail);
    background:rgba(255,90,126,.1); border:1px solid rgba(255,90,126,.32); box-shadow:0 0 14px rgba(255,90,126,.14); }
.mp-ico svg{ width:22px; height:22px; }
.mp-head b{ display:block; font-size:19px; color:var(--white); font-weight:700; line-height:1.2; }
.mp-head span{ display:block; font-size:14.5px; color:var(--soft); margin-top:4px; line-height:1.34; }
.mp-cols,.mp-row{ display:grid; grid-template-columns:240px 1fr 1fr 140px; align-items:center; gap:20px; }
.mp-cols{ padding:0 4px 8px; }
.mp-cols span{ font-size:13px; color:var(--dim); font-family:var(--mono); }
.mp-cols span i{ font-style:normal; opacity:.65; }
.mp-cols .mp-cv{ text-align:right; }
.mp-row{ padding:11px 4px; border-radius:10px; transition:background .3s; }
.mp-row + .mp-row{ border-top:1px solid var(--line); }
.mp-row:hover{ background:rgba(120,160,220,.05); }
.mp-lab{ display:flex; align-items:center; gap:10px; font-size:16.5px; color:var(--white); }
.mdot{ width:11px; height:11px; border-radius:3px; flex:0 0 auto; }
.mdot.cy{ background:var(--cyan); box-shadow:0 0 9px var(--cyan); } .mdot.gd{ background:var(--gold); box-shadow:0 0 9px var(--gold); }
.mp-cell{ display:flex; align-items:center; gap:12px; }
.mp-track{ flex:1 1 0; height:18px; border-radius:9px; background:rgba(120,160,220,.1); overflow:hidden; border:1px solid var(--line); }
.mp-track i{ display:block; height:100%; width:0; border-radius:9px; background:var(--c,var(--gold));
    transition:width 1.3s var(--ease); box-shadow:0 0 12px rgba(255,255,255,.12); }
.mp-val{ flex:0 0 auto; width:60px; text-align:right; font-family:var(--mono); font-weight:700; font-size:18px; color:var(--white); font-variant-numeric:tabular-nums; }
.mp-val.bad{ color:var(--rail); } .mp-val.warn{ color:var(--gold-2); }
.mp-delta{ justify-self:end; font-family:var(--mono); font-size:13.5px; font-weight:700; padding:6px 13px; border-radius:999px; white-space:nowrap; }
.mp-delta.bad{ color:#ffd0d8; background:rgba(255,90,126,.14); border:1px solid rgba(255,90,126,.42); }
.mp-delta.warn{ color:var(--gold-2); background:rgba(243,177,60,.13); border:1px solid rgba(243,177,60,.42); }
.s7.visible .mp-delta{ animation:mpBadge .6s var(--ease) both; }
.s7.visible .mp-row[data-mrow="coletivo"] .mp-delta{ animation-delay:2.1s; }
.s7.visible .mp-row[data-mrow="individual"] .mp-delta{ animation-delay:2.3s; }

/* ===== frase de síntese ===== */
.m4-synth{ display:flex; align-items:center; gap:14px; margin-top:16px; padding:13px 24px; font-size:18px; color:var(--soft);
    border-radius:14px; background:linear-gradient(155deg, rgba(243,177,60,.1), rgba(6,15,30,.34)); border:1px solid rgba(243,177,60,.3);
    box-shadow:0 0 24px rgba(243,177,60,.06); }
.m4-synth b{ color:var(--gold-2); }
.ms-ico{ width:34px; height:34px; flex:0 0 auto; display:grid; place-items:center; border-radius:10px; color:var(--gold-2);
    background:rgba(243,177,60,.12); border:1px solid rgba(243,177,60,.3); } .ms-ico svg{ width:20px; height:20px; }

@keyframes m4Spark{ 0%{ left:0; opacity:0; } 6%{ opacity:1; } 92%{ opacity:1; } 100%{ left:100%; opacity:0; } }
@keyframes mpBadge{ 0%{ opacity:0; transform:scale(.7); } 60%{ opacity:1; transform:scale(1.09); } 100%{ opacity:1; transform:scale(1); } }

/* ============================================================================
   === SLIDE 9 — GRAFOS / DIJKSTRA (classe .s8) ===
   ============================================================================ */
.s8 .slide-inner{ display:flex; flex-direction:column; justify-content:center; }
.s8-grid{ display:grid; grid-template-columns:640px 1fr; gap:34px; margin-top:14px; align-items:stretch; }

/* ===== painel de grafo ===== */
.s8-graph{ position:relative; border-radius:18px; padding:14px 16px 12px; overflow:hidden; backdrop-filter:blur(7px);
    background:radial-gradient(120% 95% at 28% 18%, rgba(34,66,108,.42), transparent 58%),
        radial-gradient(110% 85% at 82% 92%, rgba(46,32,74,.34), transparent 55%),
        repeating-linear-gradient(0deg, rgba(120,160,220,.05) 0 1px, transparent 1px 34px),
        repeating-linear-gradient(90deg, rgba(120,160,220,.05) 0 1px, transparent 1px 34px),
        linear-gradient(155deg, rgba(11,24,46,.92), rgba(5,12,26,.95));
    border:1px solid rgba(120,160,220,.2); box-shadow:0 20px 50px rgba(0,0,0,.46), inset 0 1px 0 rgba(160,200,255,.05);
    transition:box-shadow .45s var(--ease); }
.s8-graph::before{ content:""; position:absolute; inset:0; border-radius:18px; padding:1px; pointer-events:none; z-index:3;
    background:linear-gradient(130deg, rgba(57,214,232,0) 36%, rgba(57,214,232,.45) 50%, rgba(57,214,232,0) 64%); background-size:300% 300%;
    -webkit-mask:linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); -webkit-mask-composite:xor;
    mask:linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); mask-composite:exclude; opacity:.5; animation:sfdShimmer 8s linear infinite; }
.gsvg{ width:100%; height:auto; display:block; position:relative; z-index:1; }
.g-compass{ color:var(--soft); opacity:.66; } .g-comp-t{ fill:var(--soft); font-size:12px; font-family:var(--mono); text-anchor:middle; }
.g-river{ fill:#6f9bd8; font-size:11.5px; font-style:italic; opacity:.66; }

/* arestas */
.edge{ fill:none; stroke:var(--cyan); stroke-width:2; opacity:.5; stroke-linecap:round; transition:opacity .35s, stroke-width .35s, stroke .35s, filter .35s; }
.edge.faint{ opacity:.3; }
.edge.draw{ stroke-dasharray:1; stroke-dashoffset:1; }
.s8.visible .edge.draw{ animation:gDraw .9s var(--ease) var(--ed,.5s) forwards; }
.edge.min{ stroke:var(--gold); stroke-width:3.6; opacity:.95; filter:drop-shadow(0 0 4px rgba(243,177,60,.55)); }
.s8.visible .edge.min{ animation:gDraw .9s var(--ease) var(--ed) forwards, gMinGlow 3.4s ease-in-out calc(var(--ed) + 1s) infinite; }
.edge.pen{ stroke:var(--rail); stroke-width:2.6; stroke-dasharray:8 6; opacity:0; filter:drop-shadow(0 0 4px rgba(255,90,126,.5)); }
.s8.visible .edge.pen{ animation:gFade .6s ease var(--ed) forwards, penPulse 2.6s ease-in-out calc(var(--ed) + .6s) infinite; }
.gspark{ fill:#fff6e0; filter:drop-shadow(0 0 6px var(--gold)); opacity:.9; }

/* avisos de PN */
.gwarn{ opacity:0; }
.gwarn path{ fill:rgba(255,70,94,.22); stroke:var(--rail); stroke-width:1.4; stroke-linejoin:round; }
.gwarn line{ stroke:#ffd9df; stroke-width:1.6; stroke-linecap:round; } .gwarn circle{ fill:#ffd9df; stroke:none; }
.s8.visible .gwarn{ animation:gFade .5s ease var(--ed) forwards, warnBlink 2.2s ease-in-out calc(var(--ed) + .5s) infinite; }

/* nós */
.gnode{ transform-box:fill-box; transform-origin:center; }
.gnode circle{ fill:rgba(7,17,34,.92); stroke-width:2.4; }
.gnode text{ fill:var(--white); font-family:var(--mono); font-size:13px; font-weight:700; text-anchor:middle; dominant-baseline:central; }
.gnode.cy circle{ stroke:var(--cyan); filter:drop-shadow(0 0 5px rgba(57,214,232,.6)); }
.gnode.hub circle{ stroke-width:2.9; filter:drop-shadow(0 0 8px rgba(57,214,232,.7)); }
.gnode.ext circle{ stroke:var(--gold); filter:drop-shadow(0 0 5px rgba(243,177,60,.5)); } .gnode.ext text{ font-size:10.5px; fill:#ffe6b0; }
.gnode.crit circle{ stroke:var(--rail); stroke-width:3; filter:drop-shadow(0 0 9px rgba(255,90,126,.75)); }
.s8.visible .gnode{ animation:gNodeIn .5s var(--ease) var(--gi,.6s) backwards; }
.s8.visible .gnode.crit{ animation:gNodeIn .5s var(--ease) var(--gi) backwards, critNodePulse 2.2s ease-in-out calc(var(--gi) + .5s) infinite; }

/* legenda */
.g-legend{ display:flex; gap:24px; margin-top:8px; font-size:13.5px; color:var(--soft); padding-left:6px; position:relative; z-index:1; flex-wrap:wrap; }
.g-legend i.d{ display:inline-block; width:15px; height:4px; border-radius:3px; margin-right:8px; vertical-align:3px; }
.g-legend i.d.gold{ background:var(--gold); box-shadow:0 0 9px var(--gold); }
.g-legend i.d.cyan{ background:var(--cyan); box-shadow:0 0 9px var(--cyan); }
.g-legend i.d.pen{ background:repeating-linear-gradient(90deg, var(--rail) 0 5px, transparent 5px 9px); box-shadow:0 0 8px rgba(255,90,126,.5); }

/* hover do grafo (classes injetadas por JS a partir dos cards) */
.s8-graph.hl-crit #eCrit{ stroke-width:4.2; opacity:1; filter:drop-shadow(0 0 11px rgba(255,90,126,.95)); }
.s8-graph.hl-crit .gwarn path{ fill:rgba(255,70,94,.45); } .s8-graph.hl-crit .edge:not(.pen){ opacity:.16; } .s8-graph.hl-crit .edge.min{ opacity:.32; }
.s8-graph.hl-affected .edge.pen{ stroke-width:3.6; opacity:1; } .s8-graph.hl-affected .edge.faint{ opacity:.85; stroke:var(--gold-2); }
.s8-graph.hl-all{ box-shadow:0 20px 50px rgba(0,0,0,.46), 0 0 40px rgba(57,214,232,.3); }
.s8-graph.hl-all .edge:not(.pen):not(.min){ opacity:.82; } .s8-graph.hl-all .gnode.cy circle{ filter:drop-shadow(0 0 9px rgba(57,214,232,.85)); }

/* ===== cards de impacto ===== */
.s8-right{ display:flex; flex-direction:column; }
.s8-stats{ flex:1; display:flex; flex-direction:column; gap:14px; justify-content:space-between; }
.s8-stats .st{ display:flex; align-items:center; gap:16px; border-radius:15px; padding:16px 22px; position:relative; overflow:hidden;
    background:linear-gradient(155deg, rgba(15,32,58,.5), rgba(6,14,28,.36)); border:1px solid rgba(120,160,220,.18);
    box-shadow:0 14px 34px rgba(0,0,0,.32); transition:transform .4s var(--ease), border-color .4s var(--ease), box-shadow .4s var(--ease); }
.s8-stats .st:hover{ transform:translateX(4px); border-color:rgba(57,214,232,.42); box-shadow:0 20px 44px rgba(0,0,0,.44), 0 0 22px rgba(57,214,232,.12); }
.st-ic{ width:46px; height:46px; flex:0 0 auto; display:grid; place-items:center; border-radius:13px; color:var(--cyan);
    background:rgba(57,214,232,.1); border:1px solid rgba(57,214,232,.28); box-shadow:0 0 14px rgba(57,214,232,.14); }
.st-ic svg{ width:25px; height:25px; }
.st-ic.red{ color:var(--rail); background:rgba(255,90,126,.1); border-color:rgba(255,90,126,.32); box-shadow:0 0 14px rgba(255,90,126,.16); }
.s8-stats .st > div{ flex:1 1 auto; min-width:0; }
.st-t{ display:block; font-size:13.5px; color:var(--soft); font-weight:600; letter-spacing:.01em; }
.s8-stats .st b{ font-family:var(--mono); font-size:29px; color:var(--white); display:block; line-height:1; margin-top:3px; white-space:nowrap; font-variant-numeric:tabular-nums; }
.st-d{ display:block; font-size:13.5px; color:var(--dim); margin-top:5px; line-height:1.3; }
.st-d i{ color:var(--soft); font-style:normal; } .st-d em{ color:var(--rail); font-style:normal; font-weight:700; }
.s8-stats .st.crit{ border-color:rgba(255,90,126,.42); box-shadow:0 14px 34px rgba(0,0,0,.32), 0 0 22px rgba(255,90,126,.1); } .s8-stats .st.crit b{ color:var(--rail); }
.s8-stats .st.crit:hover{ border-color:rgba(255,90,126,.65); box-shadow:0 20px 44px rgba(0,0,0,.44), 0 0 30px rgba(255,90,126,.2); }

/* ===== faixa-fórmula ===== */
.s8-formula{ display:flex; align-items:center; gap:13px; margin-top:16px; padding:12px 22px; border-radius:13px;
    background:linear-gradient(155deg, rgba(15,32,58,.46), rgba(6,14,28,.32)); border:1px solid var(--line); }
.fx-ico{ width:32px; height:32px; flex:0 0 auto; display:grid; place-items:center; border-radius:9px; color:var(--cyan);
    background:rgba(57,214,232,.1); border:1px solid rgba(57,214,232,.28); } .fx-ico svg{ width:18px; height:18px; }
.fx{ font-family:var(--mono); font-size:17px; color:var(--soft); }
.fx b{ color:var(--white); } .fx i{ color:var(--dim); font-style:normal; padding:0 3px; }
.fx em{ color:var(--rail); font-style:normal; font-weight:700; text-shadow:0 0 14px rgba(255,90,126,.35); }

/* ===== frase final ===== */
.s8-insight{ display:flex; align-items:center; gap:14px; margin-top:14px; padding:13px 24px; font-size:18px; color:var(--soft);
    border-radius:14px; background:linear-gradient(155deg, rgba(57,214,232,.1), rgba(6,15,30,.34)); border:1px solid rgba(57,214,232,.3);
    box-shadow:0 0 24px rgba(57,214,232,.07); } .s8-insight b{ color:var(--gold-2); } .s8-insight b:first-of-type{ color:var(--cyan); }

@keyframes gDraw{ from{ stroke-dashoffset:1; } to{ stroke-dashoffset:0; } }
@keyframes gFade{ from{ opacity:0; } to{ opacity:.92; } }
@keyframes gMinGlow{ 0%,100%{ filter:drop-shadow(0 0 4px rgba(243,177,60,.5)); } 50%{ filter:drop-shadow(0 0 10px rgba(243,177,60,.9)); } }
@keyframes penPulse{ 0%,100%{ opacity:.9; stroke-width:2.6; } 50%{ opacity:1; stroke-width:3.4; } }
@keyframes warnBlink{ 0%,100%{ opacity:.8; } 50%{ opacity:1; } }
@keyframes gNodeIn{ from{ opacity:0; transform:scale(.3); } to{ opacity:1; transform:scale(1); } }
@keyframes critNodePulse{ 0%,100%{ transform:scale(1); } 50%{ transform:scale(1.07); } }

/* ============================================================================
   === SLIDE 10 — CENÁRIOS (classe .s9) ===
   ============================================================================ */
.s9 .slide-inner{ display:flex; flex-direction:column; justify-content:center; }
.grad-rail,.grad-green{ -webkit-background-clip:text; background-clip:text; color:transparent; }
.s9-cols{ display:grid; grid-template-columns:1fr 128px 1fr; gap:18px; margin-top:18px; align-items:stretch; }
.s9c{ border-radius:18px; padding:18px 24px 20px; position:relative; overflow:hidden; backdrop-filter:blur(6px);
    background:linear-gradient(155deg, rgba(15,32,58,.5), rgba(6,14,28,.38)); border:1px solid rgba(120,160,220,.2);
    box-shadow:0 18px 44px rgba(0,0,0,.4), inset 0 1px 0 rgba(160,200,255,.05);
    transition:transform .4s var(--ease), box-shadow .4s var(--ease); }
.s9c.bad{ border-color:rgba(255,90,126,.38); box-shadow:0 18px 44px rgba(0,0,0,.4), 0 0 26px rgba(255,90,126,.08), inset 0 1px 0 rgba(160,200,255,.05); }
.s9c.bad:hover{ transform:translateY(-3px); box-shadow:0 24px 52px rgba(0,0,0,.5), 0 0 30px rgba(255,90,126,.16); }
.s9c.good{ border-color:rgba(55,224,126,.38); box-shadow:0 18px 44px rgba(0,0,0,.4), 0 0 26px rgba(55,224,126,.08), inset 0 1px 0 rgba(160,200,255,.05); }
.s9c.good:hover{ transform:translateY(-3px); box-shadow:0 24px 52px rgba(0,0,0,.5), 0 0 30px rgba(55,224,126,.18); }

/* cabeçalho do cenário */
.sc-head{ display:flex; align-items:flex-start; justify-content:space-between; gap:12px; }
.sc-ttl b{ display:block; font-size:19px; font-weight:700; line-height:1.18; } .s9c.bad .sc-ttl b{ color:#ff7d96; } .s9c.good .sc-ttl b{ color:#5fe6a0; }
.sc-ttl i{ display:block; font-size:13px; color:var(--dim); font-style:normal; margin-top:3px; }
.sc-seal{ flex:0 0 auto; font-family:var(--mono); font-size:12.5px; font-weight:700; letter-spacing:.04em; padding:6px 12px; border-radius:999px; white-space:nowrap; }
.sc-seal.bad{ color:var(--rail); background:rgba(255,90,126,.12); border:1px solid rgba(255,90,126,.45); }
.sc-seal.good{ color:var(--green); background:rgba(55,224,126,.12); border:1px solid rgba(55,224,126,.45); }

/* visual (ícone + mini-mapa) */
.sc-vis{ display:flex; align-items:center; gap:14px; margin:14px 0 6px; }
.sc-ico{ width:78px; height:78px; flex:0 0 auto; display:grid; place-items:center; border-radius:50%; }
.sc-ico svg{ width:40px; height:40px; }
.sc-ico.bad{ color:var(--rail); background:radial-gradient(circle at 50% 40%, rgba(255,90,126,.14), rgba(255,90,126,.04)); border:1.5px solid rgba(255,90,126,.45); box-shadow:0 0 20px rgba(255,90,126,.18), inset 0 0 16px rgba(255,90,126,.08); }
.sc-ico.good{ color:var(--green); background:radial-gradient(circle at 50% 40%, rgba(55,224,126,.14), rgba(55,224,126,.04)); border:1.5px solid rgba(55,224,126,.45); box-shadow:0 0 20px rgba(55,224,126,.18), inset 0 0 16px rgba(55,224,126,.08); }
.sc-map{ flex:1 1 0; height:108px; border-radius:13px; overflow:hidden; position:relative;
    background:repeating-linear-gradient(0deg, rgba(120,160,220,.05) 0 1px, transparent 1px 26px), repeating-linear-gradient(90deg, rgba(120,160,220,.05) 0 1px, transparent 1px 26px), linear-gradient(155deg, rgba(8,18,36,.7), rgba(5,12,26,.6)); border:1px solid var(--line); }
.sc-map svg{ width:100%; height:100%; display:block; }
.sc-map .road{ fill:none; stroke:rgba(130,165,215,.16); stroke-width:1.4; }
.sc-map.bad .rail{ fill:none; stroke:var(--rail); stroke-width:2.2; stroke-dasharray:7 5; opacity:.9; filter:drop-shadow(0 0 5px rgba(255,90,126,.5)); }
.sc-map.bad .xmk path{ stroke:#ffd0d8; stroke-width:2.4; stroke-linecap:round; }
.sc-map.bad .xmk{ filter:drop-shadow(0 0 5px rgba(255,90,126,.7)); }
.s9.visible .sc-map.bad .xmk{ animation:warnBlink 2.4s ease-in-out infinite; }
.sc-map.bad .xmk:nth-of-type(3){ animation-delay:.4s; } .sc-map.bad .xmk:nth-of-type(4){ animation-delay:.8s; } .sc-map.bad .xmk:nth-of-type(5){ animation-delay:1.2s; }
.sc-map.bad .rdot{ fill:var(--rail); opacity:.55; }
.sc-map.good .flow{ fill:none; stroke:var(--green); stroke-width:2.2; opacity:.9; filter:drop-shadow(0 0 5px rgba(55,224,126,.55)); }
.sc-map.good .flow.faint{ stroke:rgba(57,214,232,.4); stroke-width:1.4; filter:none; }
.sc-map.good .fdots circle{ fill:#7df0b4; opacity:.7; }
.sc-map.good .gnodeA{ fill:#0a1f16; stroke:var(--green); stroke-width:2; filter:drop-shadow(0 0 5px rgba(55,224,126,.6)); }
.sc-map.good .gspark2{ fill:#d9fff0; filter:drop-shadow(0 0 6px var(--green)); }

/* barras por família */
.sc-bars{ margin-top:4px; }
.fam{ display:flex; align-items:center; gap:14px; padding:11px 0; border-top:1px solid var(--line); transition:background .3s; border-radius:8px; }
.fam:first-child{ border-top:none; }
.fam:hover{ background:rgba(120,160,220,.05); }
.fl{ width:178px; flex:0 0 auto; font-size:15px; color:var(--soft); }
.fbar{ flex:1 1 0; height:15px; border-radius:8px; background:rgba(120,160,220,.1); overflow:hidden; border:1px solid var(--line); }
.fbar i{ display:block; height:100%; width:0; border-radius:8px; background:var(--c,var(--gold)); transition:width 1.2s var(--ease) var(--bd,0s);
    box-shadow:0 0 10px rgba(255,255,255,.1); }
.fam b{ font-family:var(--mono); font-size:22px; color:var(--white); width:66px; flex:0 0 auto; text-align:right; font-variant-numeric:tabular-nums; }
.fd{ flex:0 0 auto; font-family:var(--mono); font-size:12.5px; font-weight:700; padding:3px 9px; border-radius:999px; white-space:nowrap; }
.fd.good{ color:var(--green); background:rgba(55,224,126,.12); border:1px solid rgba(55,224,126,.36); }
.s9.visible .fd{ animation:mpBadge .55s var(--ease) both; animation-delay:var(--fdd,2s); }

/* corredor / OAE */
.s9-mid{ display:flex; flex-direction:column; gap:9px; align-items:center; justify-content:center; }
.s9-arrow{ width:108px; }
.s9-arrow svg{ width:100%; height:auto; display:block; }
.ar-body{ fill:url(#s9arr); filter:drop-shadow(0 0 8px rgba(57,214,232,.45)); animation:odmArrow 2.6s ease-in-out infinite; }
.ar-spark{ fill:#eafcff; filter:drop-shadow(0 0 6px var(--cyan)); }
.s9-ml{ font-family:var(--mono); font-size:16px; color:var(--cyan); font-weight:700; text-align:center; }
.s9-ms{ font-size:12.5px; color:var(--dim); text-align:center; line-height:1.25; }

/* faixa final */
.s9-final{ display:flex; align-items:center; gap:18px; margin-top:16px; padding:14px 24px;
    border-radius:14px; background:linear-gradient(155deg, rgba(15,32,58,.5), rgba(6,15,30,.36)); border:1px solid var(--card-bd);
    box-shadow:0 12px 32px rgba(0,0,0,.3); }
.sf-ico{ width:54px; height:54px; flex:0 0 auto; display:grid; place-items:center; border-radius:50%; color:var(--cyan);
    background:rgba(57,214,232,.08); border:1px solid rgba(57,214,232,.3); box-shadow:0 0 18px rgba(57,214,232,.12); }
.sf-ico svg{ width:36px; height:36px; }
.sf-tx b{ display:block; font-size:20px; color:var(--white); font-weight:700; line-height:1.25; }
.sf-tx b .rd{ color:#ff7d96; text-shadow:0 0 16px rgba(255,90,126,.45); } .sf-tx b .gr{ color:#5fe6a0; text-shadow:0 0 16px rgba(55,224,126,.45); }
.sf-tx > span{ display:block; font-size:14.5px; color:var(--dim); margin-top:5px; } .sf-tx > span i{ color:var(--soft); font-style:normal; font-weight:700; } .sf-tx > span b{ display:inline; color:var(--soft); font-weight:700; }

/* ============================================================================
   === SLIDE 11 — DECISÃO / PRIORIZAÇÃO (classe .s10) ===
   ============================================================================ */
.s10 .slide-inner{ display:flex; flex-direction:column; justify-content:center; }
.dec-grid{ display:grid; grid-template-columns:0.92fr 1.08fr; gap:28px; margin-top:14px; align-items:start; }
.dec-right{ display:flex; flex-direction:column; gap:14px; }
.dec-rank h4,.dec-cmp h4{ display:flex; align-items:center; gap:11px; font-size:17px; color:var(--white); margin-bottom:12px; font-weight:700; }
.dec-rank h4 .mut{ color:var(--dim); font-weight:400; font-family:var(--mono); font-size:13px; }
.h4-ic{ width:32px; height:32px; flex:0 0 auto; display:grid; place-items:center; border-radius:9px; color:var(--green);
    background:rgba(55,224,126,.1); border:1px solid rgba(55,224,126,.3); } .h4-ic svg{ width:18px; height:18px; }
.h4-ic.gold{ color:var(--gold); background:rgba(243,177,60,.1); border-color:rgba(243,177,60,.3); }

/* ranking */
.rank{ display:flex; align-items:center; gap:13px; padding:11px 15px; border-radius:13px; margin-bottom:9px;
    background:linear-gradient(155deg, rgba(15,32,58,.5), rgba(6,14,28,.36)); border:1px solid rgba(120,160,220,.16);
    transition:transform .35s var(--ease), border-color .35s, box-shadow .35s; }
.rank:hover{ transform:translateX(4px); border-color:rgba(120,160,220,.32); box-shadow:0 12px 30px rgba(0,0,0,.3); }
.s10.visible .rank{ animation:rankIn .5s var(--ease) backwards; animation-delay:calc(.34s + var(--ri,0)*.1s); }
.rk{ width:28px; height:28px; flex:0 0 auto; display:grid; place-items:center; border-radius:8px; font-family:var(--mono); font-size:14px; font-weight:700;
    color:var(--dim); background:rgba(120,160,220,.08); border:1px solid var(--line); }
.rk-body{ flex:1; min-width:0; display:flex; flex-direction:column; gap:2px; }
.rk-body .rn{ font-family:var(--mono); font-size:14.5px; color:var(--soft); }
.rk-seal{ font-family:var(--mono); font-size:11.5px; font-weight:700; color:var(--green); letter-spacing:.02em; }
.rank b{ font-family:var(--mono); font-size:15.5px; color:var(--white); white-space:nowrap; flex:0 0 auto; }
.rank.top{ border-color:rgba(55,224,126,.5); background:linear-gradient(155deg, rgba(55,224,126,.16), rgba(6,15,30,.42));
    box-shadow:0 0 22px rgba(55,224,126,.1); }
.rank.top .rk{ color:#06210f; background:linear-gradient(135deg, var(--green), #7df0a8); border-color:transparent; box-shadow:0 0 14px rgba(55,224,126,.4); }
.rank.top .rk-body .rn{ color:var(--white); }
.rank.top .rb{ display:flex; align-items:center; gap:7px; color:var(--green); font-size:13px; padding:5px 11px; border-radius:999px;
    background:rgba(55,224,126,.14); border:1px solid rgba(55,224,126,.4); }
.rb-dot{ width:7px; height:7px; border-radius:50%; background:var(--green); box-shadow:0 0 10px var(--green); animation:cntDot 1.9s ease-in-out infinite; }
.dec-note{ display:flex; align-items:flex-start; gap:11px; font-size:14.5px; color:var(--dim); margin-top:13px; line-height:1.4; } .dec-note b{ color:var(--green); }
.dn-ic{ width:26px; height:26px; flex:0 0 auto; display:grid; place-items:center; border-radius:7px; color:var(--green); background:rgba(55,224,126,.08); border:1px solid rgba(55,224,126,.24); } .dn-ic svg{ width:16px; height:16px; }

/* comparação dos cálculos */
.dec-cmp{ border-radius:16px; padding:16px 20px 18px; position:relative; overflow:hidden;
    background:linear-gradient(155deg, rgba(15,32,58,.42), rgba(6,14,28,.3)); border:1px solid var(--card-bd); }
.cmp2{ display:grid; grid-template-columns:1fr 96px 1fr; gap:10px; align-items:stretch; }
.cc{ border-radius:14px; padding:15px 17px; position:relative; overflow:hidden; display:flex; flex-direction:column;
    background:linear-gradient(155deg, rgba(15,32,58,.55), rgba(6,14,28,.42)); border:1px solid rgba(120,160,220,.2);
    box-shadow:0 14px 34px rgba(0,0,0,.34); }
.cc .cl{ font-size:14px; color:var(--soft); font-weight:600; } .cc .cl i{ font-style:normal; color:var(--dim); }
.cc .cv{ display:block; font-family:var(--mono); font-weight:700; font-size:25px; margin-top:7px; color:var(--white); font-variant-numeric:tabular-nums; white-space:nowrap; }
.cc .cdesc{ font-size:12.5px; color:var(--dim); margin-top:7px; line-height:1.34; flex:1 1 auto; } .cc .cdesc b{ color:var(--soft); }
.cc .cpb{ font-size:14px; color:var(--soft); margin-top:9px; } .cc .cpb b{ color:var(--gold-2); }
.cc.hot{ border-color:rgba(243,177,60,.55); background:linear-gradient(150deg, rgba(243,177,60,.16), rgba(6,15,30,.44));
    box-shadow:0 16px 40px rgba(0,0,0,.4), 0 0 30px rgba(243,177,60,.16); }
.cc.hot::after{ content:""; position:absolute; top:0; bottom:0; width:36%; pointer-events:none;
    background:linear-gradient(100deg, transparent, rgba(255,212,121,.12), transparent); animation:sfdSheen 6s ease-in-out 1.5s infinite; }
.cc.hot .cv{ color:var(--gold); text-shadow:0 0 22px rgba(243,177,60,.35); } .cc.hot .cpb b{ color:var(--green); }
.cc-mid{ display:flex; flex-direction:column; align-items:center; justify-content:center; gap:7px; }
.cc-arrow{ flex:0 0 auto; display:grid; place-items:center; color:var(--gold); animation:odmArrow 2.2s ease-in-out infinite; } .cc-arrow svg{ width:26px; height:26px; filter:drop-shadow(0 0 6px rgba(243,177,60,.5)); }
.cc-al{ font-family:var(--mono); font-size:10.5px; color:var(--cyan); text-align:center; line-height:1.35; }
.dec-mininote{ font-size:13px; color:var(--dim); margin-top:12px; line-height:1.4; } .dec-mininote b{ color:var(--soft); }

/* links / QR */
.dec-links{ display:grid; grid-template-columns:1fr 1fr; gap:13px; }
.link-card{ display:flex; align-items:center; gap:13px; padding:13px 15px; border-radius:14px; text-decoration:none; position:relative; overflow:hidden;
    background:linear-gradient(155deg, rgba(15,32,58,.5), rgba(6,14,28,.38)); border:1px solid rgba(120,160,220,.2);
    box-shadow:0 14px 32px rgba(0,0,0,.32); transition:transform .35s var(--ease), border-color .35s, box-shadow .35s; }
a.link-card,button.link-card{ cursor:pointer; appearance:none; -webkit-appearance:none; font:inherit; color:inherit; text-align:left; width:100%; }
button.link-card:focus{ outline:none; }
.link-card.sim:hover{ transform:translateY(-3px); border-color:rgba(57,214,232,.45); box-shadow:0 22px 46px rgba(0,0,0,.46), 0 0 26px rgba(57,214,232,.14); }
.link-card.art:hover{ transform:translateY(-3px); border-color:rgba(243,177,60,.45); box-shadow:0 22px 46px rgba(0,0,0,.46), 0 0 26px rgba(243,177,60,.14); }
.lc-hint{ display:block; font-family:var(--mono); font-size:10.5px; color:var(--gold-2); font-style:normal; margin-top:5px; }
.lc-play{ width:46px; height:46px; flex:0 0 auto; display:grid; place-items:center; border-radius:11px; color:var(--gold-2);
    background:rgba(243,177,60,.08); border:1px solid rgba(243,177,60,.26); transition:.25s; } .lc-play svg{ width:25px; height:25px; }
.link-card.art:hover .lc-play{ background:rgba(243,177,60,.16); box-shadow:0 0 16px rgba(243,177,60,.18); }
.lc-ico{ width:42px; height:42px; flex:0 0 auto; display:grid; place-items:center; border-radius:11px; }
.lc-ico svg{ width:23px; height:23px; }
.lc-ico.pdf{ color:var(--gold); background:rgba(243,177,60,.1); border:1px solid rgba(243,177,60,.28); }
.lc-ico.sim{ color:var(--cyan); background:rgba(57,214,232,.1); border:1px solid rgba(57,214,232,.28); }
.lc-tx{ flex:1 1 auto; min-width:0; } .lc-tx b{ display:block; font-size:15px; color:var(--white); font-weight:700; } .lc-tx > span{ display:block; font-size:12.5px; color:var(--dim); margin-top:2px; }
.lc-url{ display:block; font-family:var(--mono); font-size:10.5px; color:var(--cyan); font-style:normal; margin-top:5px; word-break:break-all; opacity:.85; }
.lc-todo{ display:inline-block; font-family:var(--mono); font-size:10.5px; color:var(--gold-2); font-style:normal; margin-top:5px; padding:2px 8px; border-radius:999px; background:rgba(243,177,60,.1); border:1px solid rgba(243,177,60,.3); }
.qr.sm{ width:58px; height:58px; flex:0 0 auto; background:#fff; border-radius:9px; padding:4px; display:flex; align-items:center; justify-content:center; box-shadow:0 0 16px rgba(57,214,232,.16); }
.qr.sm img{ width:100%; height:100%; image-rendering:pixelated; }
.qr-slot{ width:58px; height:58px; flex:0 0 auto; display:grid; place-items:center; border-radius:9px; color:var(--dim);
    background:rgba(120,160,220,.06); border:1.5px dashed rgba(120,160,220,.35); } .qr-slot svg{ width:30px; height:30px; }

/* faixa de fechamento */
.dec-final{ display:flex; align-items:center; gap:18px; margin-top:16px; padding:15px 26px; border-radius:14px;
    background:linear-gradient(155deg, rgba(243,177,60,.1), rgba(6,15,30,.36)); border:1px solid rgba(243,177,60,.3);
    box-shadow:0 0 26px rgba(243,177,60,.07); }
.df-ico{ width:52px; height:52px; flex:0 0 auto; display:grid; place-items:center; border-radius:50%; color:var(--gold-2);
    background:rgba(243,177,60,.1); border:1px solid rgba(243,177,60,.32); box-shadow:0 0 18px rgba(243,177,60,.14); animation:cntDot 2.6s ease-in-out infinite; }
.df-ico svg{ width:32px; height:32px; }
.df-tx b{ display:block; font-size:19px; color:var(--white); font-weight:700; line-height:1.3; }
.df-tx b .hl{ color:var(--gold-2); text-shadow:0 0 16px rgba(243,177,60,.3); } .df-tx b .muted{ color:var(--rail); }
.df-tx > span{ display:block; font-size:14px; color:var(--dim); margin-top:5px; } .df-tx > span i{ color:var(--gold-2); font-style:normal; font-weight:700; }

/* rodapé autores */
.s10-foot{ display:flex; justify-content:space-between; margin-top:14px;
    font-family:var(--mono); font-size:12.5px; color:var(--dim); letter-spacing:.06em; } .s10-foot b{ color:var(--soft); }

/* fallback / placeholder do QR (link a definir) — cinza p/ sinalizar inativo */
.qr.placeholder{ display:grid; grid-template-columns:repeat(11,1fr); grid-template-rows:repeat(11,1fr); gap:0; background:#dde4ef; box-shadow:0 0 16px rgba(120,160,220,.12); }
.qr.placeholder i{ background:transparent; } .qr.placeholder i.on{ background:#586a86; }

@keyframes rankIn{ from{ opacity:0; transform:translateX(-18px); } to{ opacity:1; transform:none; } }

/* ============================================================================
   === VISUALIZADOR DE PDF (modal global) ===
   ============================================================================ */
.pdf-modal{ position:fixed; inset:0; z-index:9999; display:flex; align-items:center; justify-content:center;
    background:rgba(3,8,18,.82); backdrop-filter:blur(8px); animation:pdfFade .25s var(--ease); }
.pdf-modal[hidden]{ display:none; }
.pdf-card{ width:min(1180px,92vw); height:90vh; display:flex; flex-direction:column; border-radius:16px; overflow:hidden;
    background:#0a1426; border:1px solid rgba(120,160,220,.28); box-shadow:0 40px 120px rgba(0,0,0,.6), 0 0 44px rgba(57,214,232,.1);
    animation:pdfPop .3s var(--ease); }
.pdf-bar{ display:flex; align-items:center; gap:14px; padding:11px 16px; flex:0 0 auto;
    background:linear-gradient(180deg, rgba(15,32,58,.92), rgba(8,16,30,.92)); border-bottom:1px solid rgba(120,160,220,.2); }
.pdf-title{ display:flex; align-items:center; gap:10px; font-size:15px; color:var(--soft); flex:1 1 auto; min-width:0; }
.pdf-title b{ color:var(--white); font-weight:700; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.pdf-title svg{ width:20px; height:20px; flex:0 0 auto; color:var(--gold); }
.pdf-open{ flex:0 0 auto; font-family:var(--mono); font-size:13px; color:var(--cyan); text-decoration:none; padding:6px 12px; border-radius:8px; border:1px solid rgba(57,214,232,.3); transition:.2s; }
.pdf-open:hover{ background:rgba(57,214,232,.12); }
.pdf-x{ width:34px; height:34px; flex:0 0 auto; display:grid; place-items:center; border-radius:9px; cursor:pointer; font-size:15px; color:#ffd0d8;
    background:rgba(255,90,126,.12); border:1px solid rgba(255,90,126,.34); transition:.2s; }
.pdf-x:hover{ background:rgba(255,90,126,.24); color:#fff; }
.pdf-frame{ flex:1 1 auto; width:100%; border:0; background:#1f1f24; }
@keyframes pdfFade{ from{ opacity:0; } to{ opacity:1; } }
@keyframes pdfPop{ from{ opacity:0; transform:translateY(14px) scale(.985); } to{ opacity:1; transform:none; } }
