/* ============================================================================
   LiveGuru Studio — PROTÓTIPO DE MESCLAGEM (layout AutoLive × funções LiveGuru)
   ----------------------------------------------------------------------------
   Autocontido. Sem build, sem framework. Cores = tokens LiveGuru (copiados de
   renderer/styles/tokens.css). Roxo = eixo da marca; esmeralda = confirmação;
   vermelho = ao vivo/perigo; âmbar = subindo/aviso. NÃO tudo roxo.
   ============================================================================ */

/* Fontes: carregadas por <link rel="preconnect"> + <link rel="stylesheet"> no index.html.
   A regra de importação daqui encadeava HTML -> app.css inteiro -> fonts.googleapis -> fontes. */

/* ==== TOKENS DE COR (copiados de renderer/styles/tokens.css — F1) ========== */
:root {
  /* fundos — camadas de profundidade */
  --bg:        #08090F;
  --bg-alt:    #0A0B14;
  --bg-card:   #0F1017;
  --bg-raise:  #14151E;

  /* acento — ROXO (marca) */
  --accent:       #8B5CF6;
  --accent-dark:  #6D28D9;
  --accent-hover: #7C3AED;
  --accent-soft:  rgba(139, 92, 246, 0.10);
  --brand:        var(--accent);

  /* confirmação — ESMERALDA */
  --emerald:      #10B981;
  --emerald-dark: #059669;
  --emerald-soft: rgba(16, 185, 129, 0.10);

  /* ao vivo / perigo — VERMELHO */
  --live:       #EF4444;
  --live-dark:  #DC2626;
  --live-soft:  rgba(239, 68, 68, 0.10);
  --danger:      var(--live);
  --danger-soft: var(--live-soft);

  /* transição — ÂMBAR */
  --warn:      #F59E0B;
  --warn-soft: rgba(245, 158, 11, 0.10);

  /* gatilho do guia — DOURADO/AMARELO (só o botão-livro + acentos do guia) */
  --gold:      #F5C542;
  --gold-2:    #E0A80D;
  --gold-soft: rgba(245, 197, 66, 0.12);
  --grad-gold: linear-gradient(145deg, #FCD667 0%, #E0A80D 100%);
  --glow-gold: rgba(245, 197, 66, 0.45);

  /* texto — 3 níveis */
  --text:   #FFFFFF;
  --text-2: #94A3B8;
  --text-3: #64748B;

  /* bordas */
  --border:         rgba(139, 92, 246, 0.15);
  --border-card:    rgba(139, 92, 246, 0.10);
  --border-soft:    rgba(148, 163, 184, 0.08);
  --border-neutral: rgba(148, 163, 184, 0.13);

  /* superfícies / gradientes */
  --surface:     linear-gradient(180deg, #13141E 0%, #0D0E15 100%);
  --grad-hero:   linear-gradient(135deg, #08090F 0%, #0F0A1A 100%);
  --grad-accent: linear-gradient(135deg, #8B5CF6 0%, #6D28D9 100%);
  --grad-live:   linear-gradient(135deg, #EF4444 0%, #DC2626 100%);
  --grad-ok:     linear-gradient(135deg, #10B981 0%, #059669 100%);

  /* sombras / glow */
  --shadow-card: 0 1px 2px rgba(0, 0, 0, 0.30), 0 6px 20px rgba(0, 0, 0, 0.28);
  --shadow-pop:  0 24px 60px -12px rgba(0, 0, 0, 0.65), 0 0 0 1px rgba(139, 92, 246, 0.10);
  --shadow-glow: 0 0 40px rgba(139, 92, 246, 0.15);
  --glow:        rgba(139, 92, 246, 0.30);
  --glow-live:   rgba(239, 68, 68, 0.30);
  --glow-ok:     rgba(16, 185, 129, 0.30);

  /* raios / transição / fontes */
  --r-card: 14px;
  --r-btn:  10px;
  --r-pill: 999px;

  /* escala de espaçamento — base 4 (aplicada na Comunidade; estender ao resto) */
  --sp-1: 4px;  --sp-2: 8px;  --sp-3: 12px; --sp-4: 16px;
  --sp-5: 20px; --sp-6: 24px; --sp-8: 32px; --sp-12: 48px;

  /* escala tipográfica — passos com contraste real (sem meio-pixel) */
  --fs-meta: 12px;  /* metadados: tempo, contagens */
  --fs-sm:   13px;  /* labels, chips */
  --fs-body: 15px;  /* corpo de post */
  --fs-lg:   17px;  /* título de sugestão / degrau médio */

  /* superfícies neutras da Comunidade (neutros com leve tinta fria, não roxo) */
  --avatar-bg:     #171922;
  --avatar-border: rgba(148, 163, 184, 0.18);
  --avatar-text:   #B7C0D0;
  --t: all 0.18s ease;
  --font-head: 'Space Grotesk', 'Segoe UI', system-ui, sans-serif;
  --font-body: 'Inter', 'Segoe UI', system-ui, sans-serif;
  /* P1-16 — token de monoespaçada (.lgs-msg/.lgs-skip da splash e demais mono).
     Sem ele o var(--font-mono) caía no fallback/Inter. */
  --font-mono: ui-monospace, 'SF Mono', 'JetBrains Mono', Menlo, Consolas, monospace;
  --e:   cubic-bezier(.22, 1, .36, 1);
  --pop: cubic-bezier(.34, 1.4, .64, 1);

  /* aliases usados pelo Estúdio (video-engine) — resolvem para tokens acima */
  --ve-ac:       var(--accent);
  --ve-ac-solid: var(--accent);
  --ve-live:     var(--live);
  --ve-warn:     var(--warn);

  /* dock persistente — altura reservada (empurra content/cockpit p/ cima) */
  --dock-h: 68px;
}

/* ==== RESET ================================================================ */
* { box-sizing: border-box; }
html, body { height: 100%; margin: 0; }
body {
  font-family: var(--font-body);
  color: var(--text);
  background:
    radial-gradient(110vw 70vh at 15% -12%, rgba(139,92,246,0.055), transparent 55%),
    var(--bg);
  -webkit-font-smoothing: antialiased;
  overflow: hidden;
}
button, input, textarea, select { font-family: inherit; color: inherit; }
h1, h2, h3, h4 { font-family: var(--font-head); margin: 0; letter-spacing: -0.02em; }
a { color: inherit; }
::-webkit-scrollbar { width: 9px; height: 9px; }
::-webkit-scrollbar-thumb { background: var(--border-neutral); border-radius: 99px; border: 2px solid transparent; background-clip: content-box; }
.hidden { display: none !important; }
.mono { font-variant-numeric: tabular-nums; }

/* ============================================================================
   LOGIN (stub) — entrada estilo AutoLive, sem tela "Liberar acesso"
   ============================================================================ */
/* Fundo da entrada = ARTE (o espião no laptop, o letreiro LIVE, o drone). Cobre a
   viewport toda em `cover`; por cima só um véu escuro leve (.30 → .48) — o bastante
   pra o card de login ter contraste sem apagar a cena. O --grad-hero fica como
   última camada (fail-safe se a imagem não carregar). */
#login {
  position: fixed; inset: 0; z-index: 200;
  display: grid; place-items: center;
  background-color: #08090F;
  background-image:
    linear-gradient(180deg, rgba(6,5,12,0.30), rgba(6,5,12,0.48)),
    url("assets/login-bg.jpg"),
    var(--grad-hero);
  background-size: cover, cover, cover;
  background-position: center, center, center;
  background-repeat: no-repeat, no-repeat, no-repeat;
}
/* Orbes do login: eram halos radiais para dar profundidade a um fundo liso. Com a
   arte no lugar eles só sujavam a cena (roxo por cima do roxo do letreiro), então
   ficam desligados. Os <i class="login-orb"> seguem no DOM — zero paint, zero risco. */
.login-orb { display: none; }
.login-card {
  position: relative; width: min(400px, 92vw);
  background: var(--surface); border: 1px solid var(--border);
  border-radius: 22px; padding: 40px 34px 30px;
  box-shadow: var(--shadow-pop);
}
/* ==========================================================================
   Logo oficial LiveGuru (var --lg-logo) — usada como MARCA e como AVATAR.
   .lg-brandlogo → marca (topbar/splash/login) com leve destaque roxo (glow).
   .lg-avatar    → foto de perfil na Comunidade, SEM glow.
   ========================================================================== */
.lg-brandlogo {
  background-image: var(--lg-logo);
  background-size: contain;
  background-position: center;
  background-repeat: no-repeat;
  color: transparent; /* neutraliza qualquer glifo remanescente */
  filter: drop-shadow(0 2px 8px rgba(139,92,246,.45));
}

.login-logo { display: flex; align-items: center; gap: 11px; justify-content: center; margin-bottom: 6px; }
.login-logo .mark { width: 48px; height: 48px; flex: 0 0 auto; }
.login-logo b { font-family: var(--font-head); font-size: 24px; font-weight: 700; }
.login-logo b span { color: var(--accent); }
.login-sub { text-align: center; color: var(--text-3); font-size: 12.5px; margin: 4px 0 26px; }
.field { margin-bottom: 14px; }
.field label { display: block; font-size: 11px; letter-spacing: .04em; color: var(--text-2); margin-bottom: 6px; font-weight: 600; }
.field input {
  width: 100%; height: 46px; padding: 0 14px; border-radius: 11px;
  background: var(--bg-raise); border: 1px solid var(--border-neutral); color: var(--text); font-size: 14px;
  transition: var(--t);
}
.field input:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-soft); }
.btn-login {
  width: 100%; height: 48px; margin-top: 8px; border: 0; border-radius: 12px;
  background: var(--grad-accent); color: #fff; font-family: var(--font-head); font-weight: 600; font-size: 15px;
  cursor: pointer; transition: var(--t); box-shadow: 0 8px 24px rgba(139,92,246,0.30);
}
.btn-login:hover { transform: translateY(-1px); box-shadow: 0 12px 30px rgba(139,92,246,0.42); }
.btn-login.btn-google {
  display: flex; align-items: center; justify-content: center; gap: 10px;
  background: #fff; color: #1f2430; box-shadow: 0 8px 24px rgba(0,0,0,0.18);
}
.btn-login.btn-google:hover { box-shadow: 0 12px 30px rgba(0,0,0,0.26); }
.btn-login.btn-google svg { flex: 0 0 auto; }
.login-alt a[role="button"] { cursor: pointer; }
.login-alt { text-align: center; margin-top: 16px; }
.login-alt a { color: var(--text-3); font-size: 12px; text-decoration: none; }
.login-alt a:hover { color: var(--accent); }
.login-note { margin-top: 22px; text-align: center; color: var(--text-3); font-size: 10.5px; }

/* ============================================================================
   SHELL — topbar + sidebar + conteúdo
   ============================================================================ */
#app { display: grid; grid-template-columns: 244px 1fr; grid-template-rows: 56px 1fr 28px; height: 100%; }

/* ---- Topbar (glass) ---- */
.topbar {
  grid-column: 1 / -1; display: flex; align-items: center; gap: 16px; padding: 0 18px;
  background: rgba(20,21,30,0.72); backdrop-filter: blur(20px);
  border-bottom: 1px solid var(--border-soft); z-index: 30;
}
.tb-logo { display: flex; align-items: center; gap: 9px; width: 226px; }
.tb-logo .mark { width: 26px; height: 26px; flex: 0 0 auto; }
.tb-logo b { font-family: var(--font-head); font-size: 17px; }
.tb-logo b span { color: var(--accent); }
.tb-home { color: var(--text-2); font-size: 13px; font-weight: 600; cursor: pointer; padding: 6px 10px; border-radius: 8px; transition: var(--t); }
.tb-home:hover { background: var(--accent-soft); color: var(--text); }
.state-badge {
  display: inline-flex; align-items: center; gap: 8px; padding: 6px 13px; border-radius: 999px;
  font-size: 11px; font-weight: 700; letter-spacing: .04em;
  border: 1px solid var(--border-neutral); background: var(--bg-raise); color: var(--text-3);
}
.state-badge i { width: 8px; height: 8px; border-radius: 50%; background: var(--text-3); transition: var(--t); }
.state-badge.live { color: var(--live); border-color: rgba(239,68,68,0.35); background: var(--live-soft); }
.state-badge.live i { background: var(--live); box-shadow: 0 0 10px var(--live); animation: pulse 1.4s var(--e) infinite; }
@keyframes pulse { 0%,100% { opacity: 1; transform: scale(1); } 50% { opacity: .4; transform: scale(.8); } }
.tb-spacer { flex: 1; }
.tb-right { display: flex; align-items: center; gap: 14px; }
.tb-toggle { display: flex; align-items: center; gap: 7px; font-size: 11.5px; color: var(--text-3); cursor: pointer; user-select: none; }
.tb-mini-switch { width: 34px; height: 18px; border-radius: 99px; background: var(--bg-raise); border: 1px solid var(--border-neutral); position: relative; transition: var(--t); }
.tb-mini-switch i { position: absolute; width: 12px; height: 12px; border-radius: 50%; background: var(--text-3); top: 2px; left: 2px; transition: var(--t); }
.tb-toggle.on .tb-mini-switch { background: var(--accent-soft); border-color: var(--accent); }
.tb-toggle.on .tb-mini-switch i { left: 18px; background: var(--accent); }
.tb-exit { font-size: 12px; color: var(--text-3); cursor: pointer; padding: 6px 10px; border-radius: 8px; }
.tb-exit:hover { color: var(--live); background: var(--live-soft); }
/* Mobile: a topbar cabia em 390px por pouco e empurrava a página (scroll lateral
   de ~54px em TODAS as telas). Logo perde a largura fixa, o rótulo do toggle sai
   e nada estoura o viewport. */
@media (max-width: 720px) {
  .topbar { gap: 10px; padding: 0 12px; overflow: hidden; }
  .tb-logo { width: auto; min-width: 0; flex: 0 1 auto; }
  .tb-logo b { font-size: 15px; }
  .tb-right { gap: 8px; min-width: 0; flex: 0 1 auto; }
  .tb-toggle > span:first-child { display: none; }   /* fica só o switch */
  .tb-exit { padding: 6px; }
}

/* ---- Sidebar (ícone + texto, topificada) ---- */
.sidebar {
  grid-row: 2 / -1; display: flex; flex-direction: column; padding: 14px 12px 10px;
  background: linear-gradient(180deg, rgba(15,16,23,0.6), rgba(8,9,15,0.9));
  border-right: 1px solid var(--border-soft); overflow-y: auto;
}
.side-group { font-size: 10px; letter-spacing: .14em; text-transform: uppercase; color: var(--text-3); font-weight: 700; padding: 14px 12px 7px; }
.side-item {
  display: flex; align-items: center; gap: 11px; padding: 9px 12px; border-radius: 10px;
  color: var(--text-2); font-size: 13.5px; font-weight: 500; cursor: pointer; position: relative;
  transition: var(--t); margin-bottom: 2px;
  width: 100%; text-align: left; background: transparent; border: 0; font-family: inherit;
}
.side-item svg { width: 18px; height: 18px; flex: 0 0 auto; opacity: .85; }
.side-item:hover { background: var(--border-soft); color: var(--text); }
/* 7.11 — item ATIVO da sidebar com glow NEON ROXO */
.side-item.active { background: var(--accent-soft); color: var(--text); box-shadow: inset 0 0 0 1px rgba(139,92,246,0.25), 0 0 18px rgba(139,92,246,0.20); }
.side-item.active::before { content: ''; position: absolute; left: -12px; top: 8px; bottom: 8px; width: 3px; border-radius: 0 3px 3px 0; background: var(--accent); box-shadow: 0 0 10px var(--accent); }
.side-item.active svg { opacity: 1; color: var(--accent); }
.side-item.hero svg { color: var(--accent); opacity: 1; filter: drop-shadow(0 0 6px var(--glow)); }
.side-item .live-dot { margin-left: auto; width: 8px; height: 8px; border-radius: 50%; background: var(--live); box-shadow: 0 0 8px var(--live); animation: pulse 1.4s var(--e) infinite; }
.side-foot { margin-top: auto; padding: 14px 12px 6px; }
.side-foot small { color: var(--text-3); font-size: 10.5px; }
.side-foot small b { color: var(--text-2); }
.side-hairline { height: 3px; border-radius: 3px; margin-top: 10px; background: linear-gradient(90deg, var(--accent), var(--emerald) 45%, var(--warn) 72%, var(--live)); opacity: .8; }

/* ---- Área de conteúdo ---- */
/* o comando rápido virou card flutuante (FAB) — sem barra fixa reservando espaço */
.content { grid-row: 2 / 3; overflow-y: auto; padding: 30px 34px 40px; }

/* ============================================================================
   COMANDO RÁPIDO — os perfis saem da barra fixa e viram um CARD agrupado que
   só abre pelo FAB circular (acima do FAB dourado do guia). Sobrevive ao
   navigate (irmão de #content).
   ============================================================================ */
.dock-pop {
  position: fixed; right: 24px; bottom: 164px; z-index: 138;
  width: min(400px, calc(100vw - 48px));
  animation: dockPopIn .18s var(--pop);
}
.dock-pop[hidden] { display: none; }
@keyframes dockPopIn { from { opacity: 0; transform: translateY(10px) scale(.97); } to { opacity: 1; transform: translateY(0) scale(1); } }
.dock {
  display: flex; flex-direction: column; gap: 10px; padding: 14px;
  background: rgba(14,15,22,0.96); backdrop-filter: blur(22px);
  border: 1px solid var(--border-soft); border-radius: 16px;
  box-shadow: 0 24px 60px -18px rgba(0,0,0,0.8), 0 0 0 1px rgba(139,92,246,0.06);
}
/* FAB do comando rápido — circular, roxo (marca), empilhado ACIMA do guia */
.dock-fab {
  position: fixed; right: 24px; bottom: 94px; z-index: 139; width: 58px; height: 58px;
  border-radius: 50%; border: none; cursor: pointer; display: grid; place-items: center;
  color: #fff; background: linear-gradient(135deg, var(--accent), #6d28d9);
  box-shadow: 0 10px 30px -8px rgba(139,92,246,.55), 0 0 0 1px rgba(255,255,255,.18) inset;
  transition: transform .18s var(--pop), box-shadow .2s var(--e);
}
.dock-fab svg { width: 24px; height: 24px; }
.dock-fab:hover { transform: translateY(-3px) scale(1.05); box-shadow: 0 16px 38px -8px rgba(139,92,246,.7), 0 0 0 1px rgba(255,255,255,.25) inset; }
.dock-fab:active { transform: translateY(-1px) scale(1.0); }
.dock-fab-badge {
  position: absolute; top: -3px; right: -3px; min-width: 20px; height: 20px; padding: 0 5px;
  border-radius: 99px; display: grid; place-items: center;
  background: var(--live); color: #fff; font-size: 11px; font-weight: 700;
  box-shadow: 0 0 0 2px var(--bg); font-variant-numeric: tabular-nums;
}
.dock-fab-badge[hidden] { display: none; }
body:has(#modalRoot > *) .dock-fab, body:has(#modalRoot > *) .dock-pop { display: none; }

/* cap esquerdo — mestre global (2 modos) */
.dock-master {
  flex: 0 0 auto; display: flex; flex-direction: column; align-items: flex-start; justify-content: center;
  gap: 1px; min-width: 132px; height: 46px; padding: 0 16px; border-radius: 12px; cursor: pointer;
  border: 1px solid var(--border-neutral); background: var(--bg-raise); color: var(--text);
  font-family: inherit; transition: var(--t); position: relative;
}
.dock-master b { font-size: 13px; font-weight: 700; }
.dock-master small { font-size: 10px; color: var(--text-3); letter-spacing: .02em; }
.dock-master .dm-dot { position: absolute; top: 10px; right: 12px; width: 8px; height: 8px; border-radius: 50%; background: var(--text-3); }
.dock-master.start:hover { border-color: var(--accent); box-shadow: 0 0 16px var(--accent-soft); }
.dock-master.stop { border-color: rgba(239,68,68,0.4); background: var(--live-soft); }
.dock-master.stop .dm-dot.live { background: var(--live); box-shadow: 0 0 10px var(--live); animation: pulse 1.4s var(--e) infinite; }
.dock-master.stop:hover { background: rgba(239,68,68,0.18); }

/* chips — TODOS os perfis, rolagem horizontal se transbordar */
.dock-chips { display: flex; flex-direction: column; align-items: stretch; gap: 8px; overflow-y: auto; overflow-x: hidden; max-height: 42vh; padding: 2px; scrollbar-width: thin; }
.dock-empty { color: var(--text-3); font-size: 12px; padding: 0 8px; }
.dock-chip {
  flex: 0 0 auto; display: flex; align-items: center; gap: 8px; height: 46px; padding: 0 8px 0 6px;
  border-radius: 12px; border: 1px solid var(--border-neutral); background: var(--bg-card);
  cursor: pointer; transition: var(--t); max-width: 100%;
}
.dock-chip .dock-chip-tx { flex: 1 1 auto; }
.dock-chip .dock-chip-tx b { max-width: none; }
.dock-chip:hover { border-color: var(--accent); transform: translateY(-1px); }
.dock-chip:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.dock-chip-av { width: 30px; height: 30px; flex: 0 0 auto; border-radius: 8px; display: grid; place-items: center; color: #fff; font-weight: 700; font-size: 13px; font-family: var(--font-head); }
.dock-chip-tx { display: flex; flex-direction: column; min-width: 0; }
.dock-chip-tx b { font-size: 12.5px; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 116px; }
.dock-chip-tx small { font-size: 10px; color: var(--text-3); letter-spacing: .02em; }
.dock-chip-x {
  flex: 0 0 auto; width: 26px; height: 26px; border-radius: 8px; cursor: pointer;
  border: 1px solid var(--border-neutral); background: var(--bg-raise); color: var(--text-2);
  font-size: 12px; line-height: 1; display: grid; place-items: center; transition: var(--t);
}
.dock-chip-x.start:hover { border-color: var(--accent); color: var(--accent); }
.dock-chip-x.stop { border-color: rgba(239,68,68,0.4); color: var(--live); }
.dock-chip-x.warn { border-color: rgba(245,158,11,0.4); color: var(--warn); }
.dock-chip-x:disabled { opacity: .5; cursor: default; }
/* estado do perfil — barrinha à esquerda do avatar */
.dock-chip.st-live { box-shadow: inset 3px 0 0 var(--live); }
.dock-chip.st-rising { box-shadow: inset 3px 0 0 var(--warn); }
.dock-chip.st-error { box-shadow: inset 3px 0 0 var(--live); }
/* coloração por GRAVIDADE do alerta (sobrepõe o realce) */
.dock-chip.sev-crit { border-color: rgba(239,68,68,0.55); background: var(--live-soft); }
.dock-chip.sev-warn { border-color: rgba(245,158,11,0.45); background: var(--warn-soft); }
.dock-chip.sev-op   { border-color: var(--border-neutral); }

/* ============================================================================
   FUNIL DA LIVE (Weave) — as 3 telas isoladas em iframes (uma visível por vez)
   ============================================================================ */
.funil-frames { position: relative; margin-top: 14px; }
.funil-frame { display: none; width: 100%; height: calc(100vh - 260px); min-height: 540px;
  border: 1px solid var(--border-soft); border-radius: 14px; background: #08090F; }
.funil-frame.active { display: block; }

/* cap direito — "próxima em" */
.dock-next { flex: 0 0 auto; display: flex; flex-direction: column; align-items: flex-end; justify-content: center; min-width: 92px; padding-left: 6px; }
.dock-next small { font-size: 10px; color: var(--text-3); letter-spacing: .02em; }
.dock-next b { font-size: 14px; font-weight: 700; font-variant-numeric: tabular-nums; }

/* ============================================================================
   CENTRAL DE COMANDO — Fila de Ação + mosaico de lives
   ============================================================================ */
/* Fila de Ação */
.cmd-fila { margin: 4px 0 26px; border: 1px solid var(--border-card); border-radius: 16px; background: var(--bg-card); overflow: hidden; }
.cmd-fila-h { display: flex; align-items: center; gap: 10px; padding: 13px 16px; border-bottom: 1px solid var(--border-soft); }
.cmd-fila-h b { font-family: var(--font-head); font-size: 14px; }
.cmd-fila-n { font-size: 11px; font-weight: 800; min-width: 20px; height: 20px; padding: 0 6px; border-radius: 99px; display: inline-flex; align-items: center; justify-content: center; background: var(--bg-raise); color: var(--text-3); }
.cmd-fila-n.on { background: var(--live); color: #fff; box-shadow: 0 0 12px var(--live-soft); }
.cmd-fila-row { display: flex; align-items: center; gap: 12px; padding: 12px 16px; border-bottom: 1px solid var(--border-soft); }
.cmd-fila-row:last-child { border-bottom: 0; }
.cmd-fila-dot { width: 9px; height: 9px; border-radius: 50%; flex: 0 0 auto; }
.cmd-fila-row.sev-crit .cmd-fila-dot { background: var(--live); box-shadow: 0 0 10px var(--live); }
.cmd-fila-row.sev-warn .cmd-fila-dot { background: var(--warn); box-shadow: 0 0 10px var(--warn); }
.cmd-fila-row.sev-crit { background: linear-gradient(90deg, var(--live-soft), transparent 40%); }
.cmd-fila-row.sev-warn { background: linear-gradient(90deg, var(--warn-soft), transparent 40%); }
.cmd-fila-av { width: 34px; height: 34px; flex: 0 0 auto; border-radius: 9px; display: grid; place-items: center; color: #fff; font-weight: 700; font-family: var(--font-head); font-size: 14px; }
.cmd-fila-tx { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; }
.cmd-fila-tx b { font-size: 13.5px; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cmd-fila-tx small { font-size: 12px; color: var(--text-2); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cmd-fila-gmv { flex: 0 0 auto; display: flex; flex-direction: column; align-items: flex-end; font-size: 13px; font-weight: 700; color: var(--emerald); }
.cmd-fila-gmv i { font-style: normal; font-size: 9.5px; font-weight: 600; color: var(--text-3); letter-spacing: .04em; text-transform: uppercase; }
.cmd-fila-btns { flex: 0 0 auto; display: flex; align-items: center; gap: 8px; }
.cmd-fila-act { height: 34px; padding: 0 14px; border-radius: 9px; border: 1px solid var(--accent); background: var(--accent-soft); color: var(--text); font-weight: 700; font-size: 12px; cursor: pointer; font-family: inherit; transition: var(--t); }
.cmd-fila-act:hover { background: var(--accent); color: #fff; }
.cmd-fila-snz { height: 34px; padding: 0 10px; border-radius: 9px; border: 1px solid var(--border-neutral); background: transparent; color: var(--text-3); font-size: 11.5px; cursor: pointer; font-family: inherit; }
.cmd-fila-snz:hover { color: var(--text); border-color: var(--text-3); }
.cmd-fila-ok { display: flex; align-items: center; gap: 10px; padding: 20px 16px; color: var(--text-2); font-size: 13px; }
.cmd-fila-ok .cmd-ok-ic { width: 26px; height: 26px; border-radius: 50%; display: grid; place-items: center; background: var(--emerald-soft); color: var(--emerald); font-weight: 800; }

/* cabeçalho do mosaico */
.cmd-mosaico-h { display: flex; align-items: baseline; gap: 10px; margin: 0 0 14px; }
.cmd-mosaico-h b { font-family: var(--font-head); font-size: 15px; }
.cmd-mosaico-h span { font-size: 12px; color: var(--text-3); }
/* copy honesta do custo: mosaico = miniatura, movimento só no foco */
.cmd-mosaico-nota { margin-left: auto; font-size: 11px; color: var(--text-3); text-align: right; }

/* mosaico — tiles por perfil */
.cmd-mosaico { display: grid; grid-template-columns: repeat(auto-fill, minmax(268px, 1fr)); gap: 16px; }
.cmd-tile { border: 1px solid var(--border-card); border-radius: 16px; background: var(--bg-card); overflow: hidden; cursor: pointer; transition: var(--t); }
.cmd-tile:hover { border-color: var(--accent); transform: translateY(-2px); box-shadow: var(--shadow-card); }
.cmd-tile.sev-crit { border-color: rgba(239,68,68,0.5); }
.cmd-tile.sev-warn { border-color: rgba(245,158,11,0.4); }
/* prévia honesta — placeholder, NUNCA "AO VIVO" sobre estático */
.cmd-tile-video { position: relative; height: 132px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 6px;
  background: repeating-linear-gradient(135deg, rgba(148,163,184,0.04) 0 12px, rgba(148,163,184,0.07) 12px 24px), var(--bg-alt);
  border-bottom: 1px solid var(--border-soft); color: var(--text-3); }
.cmd-tile-ph-ic { font-size: 24px; opacity: .6; }
.cmd-tile-ph-tx { font-size: 11px; letter-spacing: .02em; text-align: center; padding: 0 12px; }
/* placeholder ganha um tom da identidade do perfil — NÃO é quadro de vídeo */
.cmd-tile-video.placeholder::before { content: ""; position: absolute; inset: 0; pointer-events: none;
  background: radial-gradient(120% 90% at 50% 0%, var(--pc, #8B5CF6) 0%, transparent 64%); opacity: .13; }
.cmd-tile-video.placeholder > .cmd-tile-ph-ic,
.cmd-tile-video.placeholder > .cmd-tile-ph-tx { position: relative; }
/* miniatura (thumb) — imagem estática gerada localmente; sem timer, sem rede */
.cmd-tile-video.thumb, .cmd-tile-video.stream { background: #0b0b11; }
.cmd-tile-thumb { position: absolute; inset: 0; background-size: cover; background-position: center; }
.cmd-tile-stream { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; background: #0b0b11; }
/* selo honesto do que a imagem é ("demo" / "▶ ao vivo no app") */
.cmd-tile-seal { position: absolute; top: 10px; right: 10px; font-size: 9.5px; font-weight: 800; letter-spacing: .05em; text-transform: uppercase;
  padding: 3px 7px; border-radius: 99px; background: rgba(11,11,17,.72); color: rgba(255,255,255,.78); border: 1px solid rgba(255,255,255,.14); }
.cmd-tile-seal.demo { color: rgba(255,255,255,.62); }
/* botão de foco — pedir vídeo em movimento custa CPU, então é explícito e é 1 só */
.cmd-tile-foco { position: absolute; bottom: 10px; right: 10px; font-family: inherit; font-size: 10.5px; font-weight: 700;
  padding: 5px 9px; border-radius: 99px; cursor: pointer; transition: var(--t);
  background: rgba(11,11,17,.72); color: rgba(255,255,255,.82); border: 1px solid rgba(255,255,255,.16); }
.cmd-tile-foco:hover { border-color: var(--accent); color: #fff; }
.cmd-tile-foco.on { background: var(--accent); border-color: var(--accent); color: #fff; }
.cmd-tile.foco { border-color: var(--accent); }
.cmd-tile-video.foco { box-shadow: inset 0 0 0 2px var(--accent); }
/* badge de status: LIVE é PREENCHIDO (vermelho sólido + texto branco + pontinho);
   os demais status ficam discretos (contornados) para o ar não competir com eles. */
.cmd-tile-badge { position: absolute; top: 10px; left: 10px; display: inline-flex; align-items: center; gap: 5px; font-size: 10px; font-weight: 800; letter-spacing: .05em; padding: 4px 9px; border-radius: 99px; background: var(--live); color: #fff; border: 1px solid var(--live); box-shadow: 0 4px 14px rgba(239,68,68,0.38); }
.cmd-tile-badge.off { background: rgba(10,10,16,0.62); color: var(--text-3); border-color: var(--border-neutral); box-shadow: none; -webkit-backdrop-filter: blur(4px); backdrop-filter: blur(4px); }
.cmd-tile.st-error .cmd-tile-badge.off { color: var(--live); border-color: rgba(239,68,68,0.45); }
.cmd-tile-badge .rc-bdot { width: 6px; height: 6px; border-radius: 50%; background: #fff; box-shadow: 0 0 8px rgba(255,255,255,0.9); animation: pulse 1.4s var(--e) infinite; }
.cmd-tile-body { padding: 12px 14px 14px; display: flex; flex-direction: column; gap: 12px; }
.cmd-tile-head { display: flex; align-items: center; gap: 10px; }
.cmd-tile-av { width: 34px; height: 34px; flex: 0 0 auto; border-radius: 9px; display: grid; place-items: center; color: #fff; font-weight: 700; font-family: var(--font-head); font-size: 14px; }
.cmd-tile-id { display: flex; flex-direction: column; min-width: 0; flex: 1 1 auto; }
.cmd-tile-id b { font-size: 13.5px; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cmd-tile-id small { font-size: 11px; color: var(--text-3); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cmd-tile-head .rc-termo { flex: 0 0 auto; }
/* sub-linha de INFRA do perfil: Cloud/Local · proxy · estado do robô */
.cmd-tile-sub { display: flex; align-items: center; flex-wrap: wrap; gap: 2px 4px; margin-top: -4px; font-size: 11px; color: var(--text-3); min-width: 0; }
.cmd-tile-orig { display: inline-flex; align-items: center; gap: 4px; font-weight: 700; font-size: 10px; letter-spacing: .03em; padding: 2px 7px; border-radius: 99px; background: var(--bg-raise); border: 1px solid var(--border-neutral); color: var(--text-2); }
.cmd-tile-orig.cloud { color: var(--accent); border-color: rgba(139,92,246,0.42); background: var(--accent-soft); }
.cmd-tile-robo { margin-left: auto; display: inline-flex; align-items: center; gap: 5px; font-size: 10px; font-weight: 700; letter-spacing: .02em; color: var(--text-3); }
.cmd-tile-robo::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: var(--border-neutral); }
.cmd-tile-robo.on { color: var(--emerald); }
.cmd-tile-robo.on::before { background: var(--emerald); box-shadow: 0 0 8px var(--emerald); }
.cmd-tile-metrics { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; }
.cmd-tile-metrics > div { display: flex; flex-direction: column; gap: 1px; padding: 7px 8px; border-radius: 10px; background: var(--bg-raise); }
.cmd-tile-metrics b { font-size: 13px; }
.cmd-tile-metrics span { font-size: 9.5px; color: var(--text-3); letter-spacing: .02em; }
.cmd-tile-ctrl { display: flex; align-items: stretch; gap: 8px; }
/* botão do componente liveControls dentro do tile (cls "cmd-b") — sem o botão do
   robô (opts.semAuto), então a linha comporta o "⋯" ao lado. */
.cmd-tile-ctrl .cmd-b { flex: 1 1 auto; min-width: 0; height: 38px; border-radius: 10px; border: 1px solid var(--border-neutral); background: var(--bg-raise); color: var(--text); font-weight: 700; font-size: 12.5px; cursor: pointer; font-family: inherit; transition: var(--t); }
.cmd-tile-ctrl .cmd-b:hover { border-color: var(--accent); }
.cmd-tile-ctrl .cmd-b.accent { border-color: var(--accent); background: var(--accent-soft); }
.cmd-tile-ctrl .cmd-b.accent:hover { background: var(--accent); color: #fff; }
.cmd-tile-ctrl .cmd-b.live { border-color: rgba(239,68,68,0.4); background: var(--live-soft); color: var(--live); }
.cmd-tile-ctrl .cmd-b.warn { border-color: rgba(245,158,11,0.4); background: var(--warn-soft); color: var(--warn); }
.cmd-tile-ctrl .cmd-b.blocked { border-color: rgba(245,158,11,0.4); background: var(--warn-soft); color: var(--warn); }
.cmd-tile-ctrl .cmd-b.ghost { color: var(--text-3); }
.cmd-tile-ctrl .cmd-b:disabled { opacity: .55; cursor: default; }
/* "⋯" — todas as ações secundárias do perfil (cockpit, produtos, estúdio,
   configurar, histórico, ver live, copiar, fixar, excluir) num menu só. */
.cmd-tile-more { flex: 0 0 auto; width: 38px; height: 38px; border-radius: 10px; border: 1px solid var(--border-neutral); background: var(--bg-raise); color: var(--text-2); font-size: 15px; font-weight: 800; line-height: 1; cursor: pointer; font-family: inherit; transition: var(--t); }
.cmd-tile-more:hover { border-color: var(--accent); color: var(--text); }
.cmd-tile-more.on { border-color: var(--accent); background: var(--accent-soft); color: #fff; }
.cmd-tile-menu { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; padding: 10px; border-radius: 12px; background: var(--bg-raise); border: 1px solid var(--border-soft); animation: tileMenuIn .16s var(--e) both; }
.cmd-tile-mi { height: 32px; padding: 0 8px; border-radius: 8px; border: 1px solid transparent; background: transparent; color: var(--text-2); font-family: inherit; font-size: 11.5px; font-weight: 600; text-align: left; cursor: pointer; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; transition: var(--t); }
.cmd-tile-mi:hover { background: var(--bg-card); border-color: var(--border-neutral); color: var(--text); }
.cmd-tile-mi.on { color: var(--accent); }
.cmd-tile-mi.danger { grid-column: 1 / -1; color: var(--live); }
.cmd-tile-mi.danger:hover { background: var(--live-soft); border-color: rgba(239,68,68,0.4); color: var(--live); }
@keyframes tileMenuIn { from { opacity: 0; transform: translateY(-4px); } to { opacity: 1; transform: none; } }

/* ── TIMER DE ENCERRAMENTO ────────────────────────────────────────────────────
   Chip no tile (duração sugerida quando parada · countdown quando no ar) e o
   popover ancorado no botão que sobe. Gêmeo visual do .cmd-tile-menu. */
.cmd-tile-timer { display: inline-flex; align-items: center; gap: 3px; font-size: 11px; color: var(--text-3); font-variant-numeric: tabular-nums; }
.cmd-tile-timer.btn-chip { border: 1px solid var(--border-neutral); background: transparent; border-radius: 99px; padding: 1px 8px; font-family: inherit; font-weight: 700; color: var(--text-2); cursor: pointer; transition: var(--t); }
.cmd-tile-timer.btn-chip:hover { border-color: var(--accent); color: var(--text); }
.cmd-tile-timer.btn-chip.sug { color: var(--text-3); border-style: dashed; }
.cmd-tile-timer.live { color: var(--text-2); font-weight: 700; }
.cmd-tile-timer-inf { color: var(--accent, #8B5CF6); font-weight: 700; }
/* limiares pintados pelo tickTimers — só classe, só texto */
.rc-timer.warn { color: var(--warn); font-weight: 700; }
.rc-timer.crit { color: var(--live); font-weight: 800; }

.cmd-timer-pop { padding: 12px; border-radius: 12px; background: var(--bg-raise); border: 1px solid var(--border-soft); animation: tileMenuIn .16s var(--e) both; }
.cmd-timer-h { font-size: 11.5px; font-weight: 800; color: var(--text-2); margin-bottom: 8px; }
.cmd-timer-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 6px; }
.cmd-timer-opt { height: 30px; border-radius: 8px; border: 1px solid var(--border-neutral); background: transparent; color: var(--text-2); font-family: inherit; font-size: 11.5px; font-weight: 700; cursor: pointer; font-variant-numeric: tabular-nums; transition: var(--t); }
.cmd-timer-opt:hover { border-color: var(--accent); color: var(--text); }
.cmd-timer-opt.on { border-color: var(--accent); background: var(--accent-soft); color: #fff; }
.cmd-timer-inf { width: 100%; margin-top: 8px; height: 32px; border-radius: 8px; border: 1px dashed var(--border-neutral); background: transparent; color: var(--text-3); font-family: inherit; font-size: 11px; font-weight: 700; cursor: pointer; transition: var(--t); }
.cmd-timer-inf:hover { border-color: var(--warn); color: var(--warn); }
.cmd-timer-inf.on { border-style: solid; border-color: var(--warn); background: rgba(245,158,11,.12); color: var(--warn); }
.cmd-timer-go { width: 100%; margin-top: 10px; height: 36px; border-radius: 9px; border: 0; background: var(--accent, #8B5CF6); color: #fff; font-family: inherit; font-size: 12.5px; font-weight: 800; cursor: pointer; }
.cmd-timer-go:hover { filter: brightness(1.08); }
.cmd-timer-note { margin: 8px 0 0; font-size: 10.5px; line-height: 1.5; color: var(--text-3); }
.cmd-timer-note.inf { color: var(--accent, #8B5CF6); }
.cmd-timer-note.warn { color: var(--warn); }
.cmd-timer-note.sm { font-size: 10px; }
.cmd-timer-fix { border: 0; background: transparent; color: var(--warn); font-family: inherit; font-size: 10.5px; font-weight: 800; text-decoration: underline; cursor: pointer; padding: 0; }
.ck-timer-rest { color: var(--text-3); font-variant-numeric: tabular-nums; }

/* ---- popover "Antes de subir": resumo + duração + testar/subir ---- */
.cmd-antes-pop { max-height: 68vh; overflow-y: auto; overscroll-behavior: contain; }
.cmd-antes-lista { list-style: none; margin: 0 0 12px; padding: 0; display: flex; flex-direction: column; gap: 6px; }
.cmd-antes-li { display: flex; gap: 7px; align-items: flex-start; font-size: 11.5px; line-height: 1.45; color: var(--text-2); }
.cmd-antes-ic { flex: 0 0 auto; font-size: 12px; line-height: 1.35; }
.cmd-antes-sub { font-size: 11.5px; font-weight: 800; color: var(--text-2); margin-bottom: 8px; padding-top: 10px; border-top: 1px solid var(--border-soft); }
.cmd-antes-selo { display: block; margin-top: 10px; font-size: 10.5px; font-weight: 700; line-height: 1.5; color: var(--text-3); }
.cmd-antes-selo.ok { color: var(--emerald); }
.cmd-antes-selo.warn { color: var(--warn); }
.cmd-antes-acoes { display: flex; gap: 8px; align-items: stretch; margin-top: 10px; flex-wrap: wrap; }
.cmd-antes-acoes .cmd-timer-go { margin-top: 0; flex: 1 1 130px; min-width: 0; }
.cmd-antes-acoes .cmd-timer-go.sec { background: transparent; border: 1px solid var(--border-neutral); color: var(--text-2); }
.cmd-antes-acoes .cmd-timer-go.sec:hover { border-color: var(--accent); color: var(--text); filter: none; }
.cmd-antes-acoes .cmd-timer-go:disabled { opacity: .45; cursor: not-allowed; filter: none; }
.cmd-antes-testar { flex: 1 1 110px; min-width: 0; height: 36px; border-radius: 9px; border: 1px solid var(--border-neutral); background: transparent; color: var(--text-2); font-family: inherit; font-size: 12.5px; font-weight: 800; cursor: pointer; transition: var(--t); }
.cmd-antes-testar:hover { border-color: var(--accent); color: var(--text); }
.cmd-antes-testar.primary { border-color: transparent; background: var(--accent, #8B5CF6); color: #fff; }
.cmd-antes-testar.primary:hover { filter: brightness(1.08); }
@media (max-width: 760px) { .cmd-antes-acoes { flex-direction: column; } .cmd-antes-acoes .cmd-timer-go, .cmd-antes-testar { flex: 1 1 auto; width: 100%; } }
@media (max-width: 760px) { .cmd-timer-grid { grid-template-columns: repeat(2, 1fr); } }
/* estreito: a Fila manda os botões pra 2ª linha em vez de espremer o texto */
@media (max-width: 760px) {
  .cmd-fila-row { flex-wrap: wrap; row-gap: 10px; padding: 12px 13px; gap: 10px; }
  .cmd-fila-tx { flex: 1 1 80px; }
  .cmd-fila-btns { flex: 1 1 100%; justify-content: flex-end; }
  .cmd-mosaico { grid-template-columns: 1fr; }
  .cmd-mosaico-nota { display: none; }   /* nota de CPU só cabe no desktop */
}
@media (prefers-reduced-motion: reduce) {
  .cmd-tile-menu { animation: none; }
  .cmd-tile:hover { transform: none; }
  .cmd-tile-badge .rc-bdot { animation: none; }
  .dock-master.stop .dm-dot.live { animation: none; }
}

/* ---- Bottombar leve (relógio + scans + status) ---- */
.bottombar {
  grid-column: 2 / -1; grid-row: 3; display: flex; align-items: center; gap: 22px;
  padding: 0 22px; font-size: 11px; color: var(--text-3);
  background: rgba(20,21,30,0.72); backdrop-filter: blur(20px);
  border-top: 1px solid var(--border-soft);
}
.bottombar .bb-cell { letter-spacing: .02em; }
.bottombar .bb-cell:last-child { margin-left: auto; font-weight: 700; letter-spacing: .08em; }
.bottombar #bbStatus.live { color: var(--live); }
.bottombar #bbStatus.live::before { content: ''; display: inline-block; width: 7px; height: 7px; border-radius: 50%; background: var(--live); box-shadow: 0 0 8px var(--live); margin-right: 6px; vertical-align: middle; animation: pulse 1.4s var(--e) infinite; }

.screen { display: none; animation: fade .25s var(--e); }
.screen.active { display: block; }
@keyframes fade { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }

/* headings */
.page-kicker { font-size: 11px; letter-spacing: .16em; text-transform: uppercase; color: var(--accent); font-weight: 700; }
.page-title { font-size: clamp(30px, 4vw, 46px); line-height: 1; margin: 8px 0 6px; font-weight: 700; }
.page-lead { color: var(--text-2); font-size: 14px; max-width: 620px; }
.page-head-row { display: flex; align-items: flex-end; justify-content: space-between; gap: 18px; flex-wrap: wrap; }

/* botões genéricos */
.btn { height: 40px; padding: 0 18px; border-radius: var(--r-btn); border: 1px solid var(--border-neutral); background: var(--bg-raise); color: var(--text); font-weight: 600; font-size: 13px; cursor: pointer; transition: var(--t); display: inline-flex; align-items: center; gap: 8px; }
.btn:hover { border-color: var(--accent); }
.btn-primary { background: var(--grad-accent); border: 0; color: #fff; box-shadow: 0 6px 18px rgba(139,92,246,0.3); position: relative; overflow: hidden; }
.btn-primary:hover { transform: translateY(-1px); box-shadow: 0 10px 26px rgba(139,92,246,0.42); }
.btn-primary::after { content: ''; position: absolute; inset: 0; background: linear-gradient(110deg, transparent 30%, rgba(255,255,255,0.25) 50%, transparent 70%); transform: translateX(-120%); transition: transform .6s var(--e); }
.btn-primary:hover::after { transform: translateX(120%); }
.btn-ok { background: var(--grad-ok); border: 0; color: #fff; box-shadow: 0 6px 18px rgba(16,185,129,0.28); }
.btn-ok:hover { transform: translateY(-1px); }
.btn-live { background: var(--grad-live); border: 0; color: #fff; }
.btn-warn { background: rgba(245,158,11,0.14); border: 1px solid rgba(245,158,11,0.4); color: var(--warn); cursor: not-allowed; }
.btn-ghost { background: transparent; border: 1px solid var(--border-neutral); color: var(--text-2); }
.btn.sm { height: 32px; padding: 0 12px; font-size: 12px; }
.btn-cta { height: 46px; padding: 0 22px; border-radius: 13px; font-size: 14px; font-weight: 700; letter-spacing: .01em; box-shadow: 0 8px 22px rgba(139,92,246,0.34), inset 0 1px 0 rgba(255,255,255,0.14); }
.btn-cta svg { opacity: .95; }
.btn-cta:hover { box-shadow: 0 12px 30px rgba(139,92,246,0.5), inset 0 1px 0 rgba(255,255,255,0.18); }

/* cards genéricos */
.card { background: var(--bg-card); border: 1px solid var(--border-card); border-radius: var(--r-card); padding: 18px; box-shadow: var(--shadow-card); }
.card h3 { font-size: 15px; margin-bottom: 4px; }
.card .card-sub { color: var(--text-3); font-size: 12px; }

/* ============================================================================
   CENTRAL DE PERFIS (★ hero multiconta)
   ============================================================================ */
.numbers-grid { display: grid; grid-template-columns: repeat(3, 1fr); margin: 28px 0 26px; border: 1px solid var(--border-card); border-radius: var(--r-card); overflow: hidden; background: var(--bg-card); }
.numbers-grid .num { padding: 22px 26px; position: relative; }
.numbers-grid .num + .num { border-left: 1px solid var(--border-soft); }
.num .n-label { font-size: 11px; letter-spacing: .12em; text-transform: uppercase; color: var(--text-3); font-weight: 700; }
.num .n-value { font-family: var(--font-head); font-size: 52px; font-weight: 700; line-height: 1; margin-top: 8px; font-variant-numeric: tabular-nums; }
/* 7.11 — 3 KPI do topo com neon sutil coerente (cada um mantém sua cor) */
.num.neutral .n-value { color: var(--text); text-shadow: 0 0 18px rgba(139,92,246,0.25); }
.num.emerald .n-value { color: var(--emerald); text-shadow: 0 0 18px rgba(16,185,129,0.35); }
.num.live .n-value { color: var(--live); text-shadow: 0 0 18px rgba(239,68,68,0.35); }
.num.live .n-label::after { content: ''; display: inline-block; width: 8px; height: 8px; border-radius: 50%; background: var(--live); box-shadow: 0 0 8px var(--live); margin-left: 8px; animation: pulse 1.4s var(--e) infinite; vertical-align: middle; }
/* a barra de stats agora abre a Central de Perfis: no estreito ela encolhe em vez
   de estourar (o .numbers-grid tem overflow:hidden e cortava o 3º número). */
@media (max-width: 760px) {
  .numbers-grid { margin: 20px 0 18px; }
  .numbers-grid .num { padding: 14px 12px; }
  .num .n-label { font-size: 9.5px; letter-spacing: .06em; }
  .num .n-value { font-size: 34px; margin-top: 4px; }
  .num.live .n-label::after { width: 6px; height: 6px; margin-left: 5px; }
}

.filters { display: flex; align-items: center; gap: 18px; margin-bottom: 18px; flex-wrap: wrap; }
.filters .f-label { font-size: 11px; letter-spacing: .1em; text-transform: uppercase; color: var(--text-3); font-weight: 700; }
.chip { padding: 6px 12px; border-radius: 99px; border: 1px solid var(--border-neutral); background: var(--bg-raise); font-size: 12px; color: var(--text-2); cursor: pointer; transition: var(--t); }
.chip.active { border-color: var(--accent); background: var(--accent-soft); color: var(--text); }
/* 7.10 — pills MOSTRAR (Online/Offline) e Ordenar com destaque NEON ROXO no ativo */
.filters .chip.active { border-color: var(--accent); box-shadow: 0 0 0 1px rgba(139,92,246,0.35), 0 0 14px rgba(139,92,246,0.30); }
.filters .chip.active b { color: var(--accent); }
/* Ordenar por — dropdown real (Nome / Status / GMV) */
.sort-select { padding: 6px 12px; border-radius: 99px; border: 1px solid var(--border-neutral); background: var(--bg-raise); font-size: 12px; color: var(--text); cursor: pointer; transition: var(--t); font-family: inherit; }
.sort-select:hover { border-color: var(--accent); }
.sort-select:focus-visible { outline: none; border-color: var(--accent); box-shadow: 0 0 0 1px rgba(139,92,246,0.35), 0 0 14px rgba(139,92,246,0.30); }

.group-label { font-size: 11px; letter-spacing: .12em; text-transform: uppercase; color: var(--text-3); font-weight: 700; margin: 22px 0 12px; }
.profiles-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 18px; align-items: start; }

/* ============================================================================
   CARD DE PERFIL VERTICAL E RICO (densidade AutoLive) — coluna alta
   ============================================================================ */
.feat-card.rich {
  position: relative; display: flex; flex-direction: column; gap: 12px;
  background: var(--bg-card); border: 1px solid var(--border-card);
  border-radius: var(--r-card); padding: 18px; overflow: hidden; transition: var(--t);
  --state: var(--border-neutral); --glow-state: var(--glow);
}
.feat-card.rich::before { content: ''; position: absolute; inset: 0; opacity: 0; transition: opacity .3s; background: radial-gradient(400px circle at var(--mx,50%) var(--my,0%), var(--accent-soft), transparent 40%); pointer-events: none; z-index: 0; }
.feat-card.rich:hover { transform: translateY(-2px); box-shadow: var(--shadow-card), var(--shadow-glow); }
.feat-card.rich:hover::before { opacity: 1; }
.feat-card.rich > * { position: relative; z-index: 1; }
/* faixa de status no topo */
.rc-strip { position: absolute; top: 0; left: 0; right: 0; height: 3px; background: var(--state); z-index: 2; border-radius: var(--r-card) var(--r-card) 0 0; }

/* estados — DIREÇÃO DE COR: a MOLDURA/glow do card é sempre ROXO NEON (marca);
   vermelho fica reservado à badge LIVE e a ações de parar/perigo (7.1). */
.feat-card.st-offline { --state: var(--border-neutral); }
/* subindo = mesma linguagem de halo, na cor âmbar (12) */
.feat-card.st-rising {
  --state: var(--warn);
  border-color: rgba(245,158,11,0.55);
  box-shadow:
    0 0 0 1px rgba(245,158,11,0.30),
    0 0 22px rgba(245,158,11,0.38),
    0 0 52px rgba(245,158,11,0.22),
    var(--shadow-card);
}
.feat-card.st-rising::after {
  content: ''; position: absolute; inset: 0; border-radius: var(--r-card); pointer-events: none; z-index: 2;
  box-shadow: inset 0 0 24px rgba(245,158,11,0.15); border: 1px solid rgba(245,158,11,0.35);
}
.feat-card.st-rising:hover {
  transform: translateY(-2px);
  box-shadow:
    0 0 0 1px rgba(245,158,11,0.52),
    0 0 30px rgba(245,158,11,0.54),
    0 0 70px rgba(245,158,11,0.34),
    var(--shadow-card);
}
/* live = moldura roxa MUITO destacada (halo neon claro/brilhante — 12) */
.feat-card.st-live {
  --state: var(--accent); --glow-state: var(--glow);
  border-color: rgba(167,139,250,0.85);
  box-shadow:
    0 0 0 1px rgba(139,92,246,0.55),
    0 0 24px rgba(139,92,246,0.58),
    0 0 64px rgba(139,92,246,0.40),
    var(--shadow-card);
}
.feat-card.st-live::after {
  content: ''; position: absolute; inset: 0; border-radius: var(--r-card); pointer-events: none; z-index: 2;
  box-shadow: inset 0 0 28px rgba(139,92,246,0.22); border: 1px solid rgba(167,139,250,0.50);
}
.feat-card.st-live:hover {
  transform: translateY(-2px);
  box-shadow:
    0 0 0 1px rgba(167,139,250,0.78),
    0 0 34px rgba(139,92,246,0.72),
    0 0 88px rgba(139,92,246,0.52),
    var(--shadow-card);
}
/* erro = perigo, moldura vermelha sutil (vermelho legítimo aqui) */
.feat-card.st-error   { --state: var(--live); border-color: rgba(239,68,68,0.25); }

/* 1) cabeçalho — avatar MENOR + @handle mascarado como identificador principal (7.6) */
.rc-head { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 11px; }
.rc-avatar { position: relative; width: 26px; height: 26px; border-radius: 50%; display: grid; place-items: center; font-family: var(--font-head); font-weight: 700; font-size: 12px; color: #fff; flex: 0 0 auto; }
.rc-status-dot { position: absolute; right: -2px; bottom: -2px; width: 10px; height: 10px; border-radius: 50%; background: var(--state); border: 2px solid var(--bg-card); }
.feat-card.st-live .rc-status-dot { animation: pulse 1.4s var(--e) infinite; box-shadow: 0 0 7px var(--accent); }
.rc-id { min-width: 0; }
.rc-handle-main { font-family: var(--font-head); font-weight: 600; font-size: 14.5px; color: var(--text); letter-spacing: -0.01em; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
/* 13b — abaixo do @handle, a ORIGEM (Cloud / Estúdio Externo / Sósia) */
.rc-origin-sub { font-size: 10.5px; letter-spacing: .04em; color: var(--text-3); text-transform: uppercase; font-weight: 700; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; margin-top: 2px; }
.rc-name { font-family: var(--font-head); font-weight: 600; font-size: 15px; color: var(--text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.rc-top-cluster { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; justify-content: flex-end; }
.rc-badge { display: inline-flex; align-items: center; padding: 3px 9px; border-radius: 99px; font-family: var(--font-body); font-size: 10px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: var(--text-3); background: var(--border-soft); }
/* 7.2 — LIVE = pill NEON VERMELHO FORTE (glow + dot pulsante). Só a badge é vermelha. */
.st-live .rc-badge { color: #fff; background: var(--grad-live); border: 1px solid rgba(239,68,68,0.65); box-shadow: 0 0 14px rgba(239,68,68,0.55); }
.st-rising .rc-badge { color: var(--warn); background: var(--warn-soft); }
.st-error .rc-badge { color: var(--live); background: var(--live-soft); }
.rc-bdot { display: inline-block; width: 6px; height: 6px; border-radius: 50%; background: #fff; box-shadow: 0 0 6px rgba(255,255,255,0.9); margin-right: 5px; vertical-align: middle; animation: pulse 1.4s var(--e) infinite; }
.rc-timer { font-size: 12px; color: var(--text-2); font-variant-numeric: tabular-nums; }
.rc-tools { display: inline-flex; gap: 4px; }
.rc-icon { width: 26px; height: 26px; border-radius: 8px; border: 1px solid transparent; background: transparent; color: var(--text-3); cursor: pointer; display: grid; place-items: center; transition: var(--t); }
.rc-icon:hover { color: var(--text); background: var(--border-soft); }
.rc-icon.on { color: var(--accent); }
.rc-icon svg { width: 15px; height: 15px; }

/* 2) @handle + micro-status */
.rc-handle { font-size: 12px; color: var(--text-2); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

/* 3) erro */
.rc-err { display: flex; align-items: center; gap: 8px; font-size: 12px; color: var(--live); background: var(--live-soft); border-left: 2px solid var(--live); border-radius: 8px; padding: 8px 10px; }
.rc-err svg { width: 15px; height: 15px; flex: 0 0 auto; }

/* 4-5) linhas técnicas (proxy / origem / caminho) */
.rc-line { display: flex; align-items: center; gap: 8px; font-size: 12px; color: var(--text-2); }
.rc-line svg { width: 14px; height: 14px; color: var(--text-3); flex: 0 0 auto; }
/* 7.7 — linha do Proxy com divisórias (hairline) em cima e embaixo, respiro próprio */
.rc-line.rc-proxy { border-top: 1px solid var(--border-soft); border-bottom: 1px solid var(--border-soft); padding: 9px 0; margin: 1px 0; }
.rc-proxy-k { color: var(--text-3); font-size: 11px; }
/* 7.8 — à direita só o valor mascarado */
.rc-proxy-val { color: var(--text-2); letter-spacing: .12em; }
.rc-proxy-on { display: inline-flex; align-items: center; gap: 6px; margin-left: auto; color: var(--text-2); }
.rc-proxy-off, .rc-proxy-warn { display: inline-flex; align-items: center; gap: 6px; margin-left: auto; }
.rc-proxy-off { color: var(--text-3); }
.rc-proxy-warn { color: var(--warn); }
.rc-pdot { width: 8px; height: 8px; border-radius: 50%; background: var(--text-3); }
.rc-pdot.on { background: var(--emerald); box-shadow: 0 0 6px var(--emerald); }
.rc-cloud-tag { position: absolute; top: 12px; right: 14px; font-size: 9px; letter-spacing: .1em; font-weight: 800; color: var(--accent); opacity: .6; z-index: 3; }

/* 6) botões de automação */
.rc-actions { display: flex; flex-wrap: wrap; gap: 8px; }
/* 13a — mais baixos (26px), full-width empilhados (grow), com mais neon */
.rc-b { height: 26px; padding: 0 11px; border-radius: var(--r-btn); border: 1px solid transparent; font-family: var(--font-body); font-weight: 700; font-size: 12px; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; gap: 6px; transition: var(--t); flex: 1 1 auto; min-width: 0; }
.rc-b.grow { flex-basis: 100%; }
/* 7.4 — botões de automação: roxo = ligar · vermelho = parar/LIVE · âmbar = reiniciar.
   Gradiente sutil + hover com leve elevação e glow coerente com a cor de cada ação. */
.rc-b.accent { background: var(--grad-accent); color: #fff; box-shadow: 0 0 0 1px rgba(139,92,246,0.55), 0 3px 10px rgba(139,92,246,0.34), 0 0 22px rgba(139,92,246,0.55); }
.rc-b.accent:hover { transform: translateY(-1px); box-shadow: 0 0 0 1px rgba(167,139,250,0.70), 0 6px 16px rgba(139,92,246,0.44), 0 0 28px rgba(139,92,246,0.62); filter: brightness(1.06); }
.rc-b.live { background: var(--grad-live); color: #fff; box-shadow: 0 0 0 1px rgba(239,68,68,0.55), 0 3px 10px rgba(239,68,68,0.32), 0 0 22px rgba(239,68,68,0.55); }
.rc-b.live:hover { transform: translateY(-1px); box-shadow: 0 0 0 1px rgba(239,68,68,0.72), 0 6px 16px rgba(239,68,68,0.44), 0 0 28px rgba(239,68,68,0.62); filter: brightness(1.06); }
.rc-b.warn { background: linear-gradient(135deg, rgba(245,158,11,0.24), rgba(245,158,11,0.12)); border-color: rgba(245,158,11,0.55); color: var(--warn); box-shadow: 0 0 0 1px rgba(245,158,11,0.30), 0 0 20px rgba(245,158,11,0.42); }
.rc-b.warn:hover { transform: translateY(-1px); background: linear-gradient(135deg, rgba(245,158,11,0.32), rgba(245,158,11,0.18)); box-shadow: 0 0 0 1px rgba(245,158,11,0.60), 0 6px 16px rgba(245,158,11,0.30), 0 0 26px rgba(245,158,11,0.52); }
.rc-b.ghost { background: var(--bg-raise); border-color: var(--border-neutral); color: var(--text-3); }
.rc-b.ghost:hover { border-color: var(--accent); color: var(--text-2); }
.rc-b.blocked { background: var(--warn-soft); border-color: rgba(245,158,11,0.4); color: var(--warn); cursor: not-allowed; }
.rc-b[disabled] { cursor: not-allowed; opacity: .85; }

/* 7.3) 5 métricas no idioma dos .stat-tile do Dashboard — tiles soltos, número
   grande font-head, label uppercase pequeno, respiro, borda/raio suaves, cor semântica.
   Escala menor que o Dashboard (cabe no card), elegante — não o grid apertado. */
.rc-metric { background: var(--bg-raise); border: 1px solid var(--border-soft); border-radius: 11px; padding: 10px 11px; text-align: left; }
.rc-mv { font-family: var(--font-head); font-size: 19px; font-weight: 700; color: var(--text); line-height: 1; font-variant-numeric: tabular-nums; }
.rc-mk { font-size: 8.5px; letter-spacing: .08em; text-transform: uppercase; color: var(--text-3); font-weight: 700; margin-top: 6px; line-height: 1.25; }
.rc-metric.ok .rc-mv { color: var(--emerald); }
.rc-metric.conv .rc-mv { color: var(--accent); }

/* 8) GMV atribuído */
/* 13e — mini-gráfico "GMV atribuído por hora" (sparkline holográfico/neon) */
.rc-spark { --spark: var(--text-3); border-radius: 12px; padding: 9px 11px 3px; background: var(--bg-raise); border: 1px solid var(--border-soft); }
.rc-spark.has { --spark: var(--emerald); border-color: rgba(16,185,129,0.30);
  background: linear-gradient(180deg, rgba(16,185,129,0.06), rgba(16,185,129,0)); }
.rc-spark-head { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; margin-bottom: 4px; }
.rc-spark-head span:first-child { font-size: 9.5px; letter-spacing: .07em; text-transform: uppercase; font-weight: 700; color: var(--text-3); }
.rc-spark.has .rc-spark-head span:first-child { color: var(--emerald); }
.rc-spark-tag { font-size: 9px; color: var(--text-3); flex: 0 0 auto; }
.rc-spark-svg { display: block; width: 100%; height: 38px; }
.rc-spark.has .rc-spark-line { filter: drop-shadow(0 0 4px rgba(16,185,129,0.75)); }

/* 9) fixado */
.rc-pinline { display: flex; align-items: center; gap: 7px; font-size: 12px; color: var(--text-2); }
.rc-pinline svg { width: 14px; height: 14px; color: var(--text-3); flex: 0 0 auto; }
.rc-pinline span { color: var(--text-3); }
.rc-pinline b { color: var(--text); font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

/* 10 / 7.9) rodapé com sub-abas segmented "Comentários | Log" */
.rc-cmts { border-top: 1px solid var(--border-soft); padding-top: 12px; }
.rc-seg { display: inline-flex; gap: 3px; padding: 3px; margin-bottom: 10px; border-radius: 99px; background: var(--bg-raise); border: 1px solid var(--border-soft); }
.rc-seg-b { display: inline-flex; align-items: center; gap: 6px; height: 26px; padding: 0 11px; border: 0; background: transparent; color: var(--text-3); font-family: inherit; font-size: 11.5px; font-weight: 600; cursor: pointer; border-radius: 99px; transition: var(--t); }
.rc-seg-b svg { width: 13px; height: 13px; }
.rc-seg-b:hover { color: var(--text-2); }
.rc-seg-b.active { background: var(--accent-soft); color: var(--accent); box-shadow: 0 0 0 1px rgba(139,92,246,0.4), 0 0 12px rgba(139,92,246,0.25); }
.rc-cmt-n { color: var(--text-3); font-weight: 700; }
.rc-seg-b.active .rc-cmt-n { color: var(--accent); }
/* 13f — bloco Comentários|Log com altura FIXA (não cresce) + scroll interno */
.rc-feed { height: 138px; max-height: 138px; overflow-y: auto; display: flex; flex-direction: column; gap: 5px; }
.rc-cmt { display: flex; gap: 8px; font-size: 12px; line-height: 1.4; }
.rc-ct { color: var(--text-3); font-size: 11px; flex: 0 0 auto; }
.rc-cx { color: var(--text-2); }
.rc-cmt-empty { color: var(--text-3); font-style: italic; }

/* rodapé de ações secundárias */
.rc-foot { display: flex; gap: 8px; border-top: 1px solid var(--border-soft); padding-top: 10px; }
.rc-foot-btn { flex: 1; height: 32px; border-radius: 8px; border: 1px solid var(--border-neutral); background: transparent; color: var(--text-3); font-family: var(--font-body); font-size: 12px; font-weight: 600; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; gap: 6px; transition: var(--t); }
.rc-foot-btn svg { width: 14px; height: 14px; }
.rc-foot-btn:hover { color: var(--text); border-color: var(--accent); }
.rc-foot-btn.danger:hover { color: var(--live); border-color: var(--live); }

.plan-alert { display: flex; align-items: center; gap: 12px; margin-top: 20px; padding: 14px 18px; border-radius: 12px; background: var(--warn-soft); border: 1px solid rgba(245,158,11,0.3); color: color-mix(in srgb, var(--warn) 86%, #fff 14%); font-size: 13px; }
.plan-alert a { color: var(--warn); font-weight: 700; text-decoration: none; }

/* ============================================================================
   DASHBOARD
   ============================================================================ */
.dash-grid { display: grid; grid-template-columns: 2fr 1fr; gap: 18px; margin-top: 26px; }
.gmv-card { background: var(--bg-card); border: 1px solid var(--border-card); border-radius: var(--r-card); padding: 26px; position: relative; overflow: hidden; }
.gmv-card::after { content: ''; position: absolute; top: -40px; right: -40px; width: 200px; height: 200px; background: radial-gradient(circle, var(--accent-soft), transparent 70%); }
.gmv-label { font-size: 12px; letter-spacing: .12em; text-transform: uppercase; color: var(--text-3); font-weight: 700; }
.gmv-value { font-family: var(--font-head); font-size: clamp(44px, 6vw, 72px); font-weight: 700; line-height: 1; margin: 10px 0; }
.gmv-value span { color: var(--text-3); font-size: 40%; }
.gmv-commission { color: var(--emerald); font-size: 15px; font-weight: 600; }
.gmv-commission b { font-family: var(--font-head); font-size: 22px; }
.period-row { display: flex; gap: 8px; margin-top: 18px; }
.mstats { display: flex; flex-direction: column; gap: 10px; }
.mstat { display: flex; align-items: center; justify-content: space-between; padding: 14px 16px; background: var(--bg-card); border: 1px solid var(--border-card); border-radius: 12px; }
.mstat .m-k { color: var(--text-2); font-size: 13px; }
.mstat .m-v { font-family: var(--font-head); font-weight: 600; font-size: 20px; font-variant-numeric: tabular-nums; }
.bracket { position: relative; }
.rank-list { display: flex; flex-direction: column; gap: 8px; margin-top: 14px; }
.rank-row { display: flex; align-items: center; gap: 12px; font-size: 13px; }
.rank-row .r-n { width: 22px; height: 22px; border-radius: 6px; background: var(--accent-soft); color: var(--accent); display: grid; place-items: center; font-weight: 700; font-size: 11px; }
.rank-row .r-name { flex: 1; color: var(--text-2); }
.rank-row .r-val { font-family: var(--font-head); font-weight: 600; font-variant-numeric: tabular-nums; }
.hours-chart { display: flex; align-items: flex-end; gap: 4px; height: 90px; margin-top: 14px; }
.hours-chart .bar { flex: 1; background: linear-gradient(180deg, var(--accent), var(--accent-dark)); border-radius: 3px 3px 0 0; opacity: .8; }

.live-status { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-top: 18px; }
.ls-cell { background: var(--bg-raise); border: 1px solid var(--border-soft); border-radius: 10px; padding: 12px 14px; }
.ls-cell .k { font-size: 10px; letter-spacing: .1em; text-transform: uppercase; color: var(--text-3); }
.ls-cell .v { font-weight: 600; margin-top: 4px; font-size: 14px; }
.ls-cell.ok .v { color: var(--emerald); }
.ls-cell.live .v { color: var(--live); }

/* ============================================================================
   TABELAS (Proxies / Histórico) + Cloud + Meus dados + Config + Tutoriais
   ============================================================================ */
/* wrapper de rolagem — evita overflow horizontal da página em telas estreitas
   (a tabela rola dentro do próprio contêiner, botões nunca ficam cortados) */
.tbl-wrap { margin-top: 20px; overflow-x: auto; border-radius: var(--r-card); }
.tbl { width: 100%; min-width: 560px; border-collapse: collapse; background: var(--bg-card); border: 1px solid var(--border-card); border-radius: var(--r-card); overflow: hidden; }
.tbl-wrap .tbl { margin-top: 0; }
.tbl th { text-align: left; font-size: 10.5px; letter-spacing: .08em; text-transform: uppercase; color: var(--text-3); font-weight: 700; padding: 13px 16px; border-bottom: 1px solid var(--border-soft); }
.tbl td { padding: 14px 16px; font-size: 13px; border-bottom: 1px solid var(--border-soft); color: var(--text-2); }
.tbl tr:last-child td { border-bottom: 0; }
.tbl .ok { color: var(--emerald); font-weight: 600; }
/* "No ar" / "Violação" = ao-vivo/perigo → vermelho (mesmo token da badge LIVE e do tile) */
.tbl .live { color: var(--live); font-weight: 600; }
.tbl .badge-br { display: inline-block; padding: 2px 8px; border-radius: 6px; background: var(--emerald-soft); color: var(--emerald); font-size: 11px; font-weight: 700; }
.tbl-actions { display: flex; gap: 6px; flex-wrap: nowrap; }
.tbl-actions .btn { white-space: nowrap; flex: 0 0 auto; }

/* Barra de abas deslizante: sem overflow-x o flex vazava 221px na Admin a 390px e
   arrastava o #content inteiro pro scroll horizontal. */
.subtabs { display: flex; gap: 6px; margin: 22px 0 4px; border-bottom: 1px solid var(--border-soft);
  overflow-x: auto; scrollbar-width: none; -webkit-overflow-scrolling: touch; }
.subtabs::-webkit-scrollbar { display: none; }
.subtab { padding: 10px 16px; font-size: 13px; font-weight: 600; color: var(--text-3); cursor: pointer; border: 0; background: transparent; -webkit-appearance: none; appearance: none; font-family: inherit; border-bottom: 2px solid transparent; margin-bottom: -1px; transition: color .15s; flex: 0 0 auto; white-space: nowrap; }
.subtab:hover { color: var(--text-2); }
.subtab.active { color: var(--text); border-bottom-color: var(--accent); }

.info-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 16px; margin-top: 24px; }
.stat-tile { background: var(--bg-card); border: 1px solid var(--border-card); border-radius: 14px; padding: 20px; }
.stat-tile .t-k { font-size: 11px; letter-spacing: .1em; text-transform: uppercase; color: var(--text-3); font-weight: 700; }
.stat-tile .t-v { font-family: var(--font-head); font-size: 34px; font-weight: 700; margin-top: 8px; }
.stat-tile.emerald .t-v { color: var(--emerald); }
.stat-tile.live .t-v { color: var(--live); }
.stat-tile.warn .t-v { color: var(--warn); }

.price-tag { color: var(--emerald); font-family: var(--font-head); font-weight: 700; }

/* ===== PROXIES — loja (revenda) + gestão ===== */
.px-body { margin-top: 4px; }
.px-name { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.px-badge { display: inline-block; padding: 2px 8px; border-radius: 6px; font-size: 10.5px; font-weight: 700; letter-spacing: .02em; }
.px-badge.res { background: var(--accent-soft); color: var(--accent); }
.px-badge.mov { background: var(--emerald-soft); color: var(--emerald); }
.px-addr { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 11.5px; color: var(--text-3); margin-top: 4px; letter-spacing: .02em; }
.px-status { font-size: 12px; font-weight: 600; white-space: nowrap; }
.px-status.ativo { color: var(--emerald); }
.px-status.expirando { color: var(--warn); }
.px-status.esgotado { color: var(--live); }
.px-assigned { display: inline-flex; align-items: center; gap: 8px; font-weight: 600; color: var(--text-2); }
.px-dot { width: 9px; height: 9px; border-radius: 50%; flex: 0 0 auto; }
.uso-txt { font-size: 11.5px; color: var(--text-3); }
.uso-wrap { min-width: 118px; }
.uso-bar { height: 6px; border-radius: 99px; background: var(--bg-raise); border: 1px solid var(--border-soft); overflow: hidden; margin-top: 5px; }
.uso-fill { height: 100%; border-radius: 99px; background: var(--emerald); transition: width .35s var(--e); }
.uso-fill.warn { background: var(--warn); }
.uso-fill.empty { background: var(--live); }
.px-manual-card { margin-top: 20px; max-width: 520px; }

/* loja — cards de plano */
.px-store { display: grid; grid-template-columns: repeat(auto-fill, minmax(258px, 1fr)); gap: 16px; margin-top: 22px; }
.plan-card { background: var(--bg-card); border: 1px solid var(--border-card); border-radius: 14px; padding: 20px; display: flex; flex-direction: column; gap: 11px; position: relative; box-shadow: var(--shadow-card); }
.plan-card.pop { border-color: var(--accent); }
.plan-pop { position: absolute; top: -10px; right: 14px; font-size: 9.5px; font-weight: 700; text-transform: uppercase; letter-spacing: .08em; padding: 3px 10px; border-radius: 99px; background: var(--accent); color: #fff; }
.plan-nome { font-size: 15px; margin: 2px 0 0; }
.plan-price { font-family: var(--font-head); font-size: 28px; font-weight: 700; color: var(--emerald); }
.plan-price small { font-size: 13px; color: var(--text-3); font-weight: 600; margin-left: 2px; }
.plan-specs { list-style: none; padding: 0; margin: 2px 0 0; display: flex; flex-direction: column; gap: 7px; }
.plan-specs li { font-size: 12.5px; color: var(--text-2); display: flex; gap: 8px; align-items: flex-start; }
.plan-specs li::before { content: "✓"; color: var(--emerald); font-weight: 700; }
.plan-buy { margin-top: auto; }

/* modal — escolher perfil para atribuir */
.px-assign-list { display: flex; flex-direction: column; gap: 7px; margin: 4px 0 4px; }
/* ---- escolha da rota de saída (proxy dedicado × internet local) ---- */
.rede-opts { display: flex; flex-direction: column; gap: 10px; margin-top: 4px; }
.rede-opt { display: flex; align-items: center; gap: 11px; width: 100%; padding: 12px 13px; border: 1px solid var(--border-neutral); border-radius: 11px; background: var(--bg-raise); color: var(--text); font-family: inherit; text-align: left; cursor: pointer; transition: var(--t); }
.rede-opt:hover { border-color: var(--accent); background: var(--accent-soft); }
.rede-opt-ic { flex: 0 0 auto; font-size: 20px; line-height: 1; }
.rede-opt-tx { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.rede-opt-tx b { font-size: 13.5px; font-weight: 700; }
.rede-opt-tx small { font-size: 11.5px; line-height: 1.45; color: var(--text-2); }
.rede-opt-tag { flex: 0 0 auto; font-size: 10.5px; font-weight: 800; letter-spacing: .02em; padding: 3px 8px; border-radius: 999px; border: 1px solid var(--border-neutral); color: var(--text-3); }
.rede-opt-tag.ok { color: var(--emerald); border-color: var(--emerald-soft); background: var(--emerald-soft); }
.rede-opt-tag.warn { color: var(--warn); border-color: rgba(245,158,11,.35); background: rgba(245,158,11,.12); }
.rede-cloud { margin: 0; }
.rede-conf-acts { flex-wrap: wrap; }
@media (max-width: 640px) {
  .rede-opt { flex-wrap: wrap; row-gap: 8px; }
  .rede-opt-tag { order: 3; }
  .rede-conf-acts .btn { flex: 1 1 100%; }
}

/* ---- escolher em qual LICENÇA trabalhar (cliente com 2+ assinaturas) ----
   Mesma linguagem visual da escolha de rota acima: uma lista de cartões
   clicáveis, rótulo leigo (plano + final da chave). Nunca mostra id. */
.lic-opts { display: flex; flex-direction: column; gap: 10px; margin-top: 4px; }
.lic-opt { display: flex; align-items: center; gap: 11px; width: 100%; padding: 12px 13px; border: 1px solid var(--border-neutral); border-radius: 11px; background: var(--bg-raise); color: var(--text); font-family: inherit; text-align: left; cursor: pointer; transition: var(--t); }
.lic-opt:hover { border-color: var(--accent); background: var(--accent-soft); }
.lic-opt.cur { border-color: var(--emerald); }
.lic-opt-ic { flex: 0 0 auto; font-size: 20px; line-height: 1; }
.lic-opt-tx { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.lic-opt-tx b { font-size: 13.5px; font-weight: 700; }
.lic-opt-tx small { font-size: 11.5px; line-height: 1.45; color: var(--text-2); }
.lic-opt-tag { flex: 0 0 auto; font-size: 10.5px; font-weight: 800; letter-spacing: .02em; padding: 3px 8px; border-radius: 999px; border: 1px solid var(--emerald-soft); background: var(--emerald-soft); color: var(--emerald); }
@media (max-width: 640px) {
  .lic-opt { flex-wrap: wrap; row-gap: 8px; }
  .lic-opt-tag { order: 3; }
}

.px-assign-opt { display: flex; align-items: center; gap: 10px; padding: 10px 12px; border: 1px solid var(--border-neutral); border-radius: 10px; background: var(--bg-raise); cursor: pointer; text-align: left; width: 100%; color: var(--text); font-family: inherit; transition: var(--t); }
.px-assign-opt:hover { border-color: var(--accent); background: var(--accent-soft); }
.px-assign-opt.cur { border-color: var(--emerald); }
.px-assign-id { flex: 1; min-width: 0; }
.px-assign-id small { display: block; color: var(--text-3); font-size: 11.5px; margin-top: 2px; }
.px-assign-opt .ok { color: var(--emerald); font-size: 12px; font-weight: 700; flex: 0 0 auto; }
/* "quem usa este proxy": a lista é multi-seleção — cada linha liga/desliga */
.px-assign-add { color: var(--text-3); font-size: 11.5px; font-weight: 700; flex: 0 0 auto; }
.px-assign-opt:hover .px-assign-add { color: var(--accent); }

.setting-row { display: flex; align-items: center; justify-content: space-between; padding: 14px 0; border-bottom: 1px solid var(--border-soft); }
.setting-row:last-child { border-bottom: 0; }
.setting-row .s-txt b { display: block; font-size: 13.5px; }
.setting-row .s-txt small { color: var(--text-3); font-size: 12px; }

/* ============================================================================
   TOGGLE (switch) reutilizável
   ============================================================================ */
/* CAUSA-RAIZ do toggle quebrado: .track era <span> inline (sem display), então
   ignorava width/height (46×26) e colapsava. inline-block + vertical-align resolve.
   Estado ON = esmeralda (confirmação) + knob à direita; OFF = trilho cinza + knob à esquerda. */
.switch { display: inline-block; cursor: pointer; flex: 0 0 auto; }
.switch input { display: none; }
.switch .track { display: inline-block; vertical-align: middle; width: 46px; height: 26px; border-radius: 99px; background: var(--bg-raise); border: 1px solid var(--border-neutral); position: relative; transition: var(--t); }
.switch .track i { position: absolute; width: 20px; height: 20px; border-radius: 50%; background: var(--text-3); top: 2px; left: 2px; transition: var(--t); }
.switch input:checked + .track { background: var(--emerald-soft); border-color: var(--emerald); }
.switch input:checked + .track i { left: 22px; background: var(--emerald); box-shadow: 0 0 8px var(--emerald); }
.switch.ok input:checked + .track { background: var(--emerald-soft); border-color: var(--emerald); }
.switch.ok input:checked + .track i { background: var(--emerald); }
/* variante roxa (marca) para toggles que não são confirmação, se preciso */
.switch.brand input:checked + .track { background: var(--accent-soft); border-color: var(--accent); }
.switch.brand input:checked + .track i { background: var(--accent); box-shadow: 0 0 8px var(--accent); }

/* ============================================================================
   MODAL — genérico (Novo perfil + Config do perfil de 7 abas)
   ============================================================================ */
.overlay { position: fixed; inset: 0; z-index: 100; background: rgba(4,5,10,0.66); backdrop-filter: blur(6px); display: grid; place-items: center; animation: fade .2s var(--e); }
.modal-sm { width: min(420px, 92vw); background: var(--surface); border: 1px solid var(--border); border-radius: 18px; padding: 26px; box-shadow: var(--shadow-pop); }
.modal-sm h3 { font-size: 20px; margin-bottom: 6px; }
.modal-sm p { color: var(--text-3); font-size: 13px; margin: 0 0 18px; }
.modal-actions { display: flex; gap: 10px; justify-content: flex-end; margin-top: 20px; }

/* modal config do perfil (7 abas laterais) */
.modal-lg { width: min(1040px, 96vw); height: min(760px, 92vh); background: var(--surface); border: 1px solid var(--border); border-radius: 20px; box-shadow: var(--shadow-pop); display: grid; grid-template-columns: 232px 1fr; grid-template-rows: auto 1fr; overflow: hidden; }
.ml-head { grid-column: 1 / -1; display: flex; align-items: center; gap: 14px; padding: 16px 22px; border-bottom: 1px solid var(--border-soft); }
.ml-head .fc-avatar { width: 38px; height: 38px; font-size: 15px; }
.ml-head .ml-name { font-family: var(--font-head); font-weight: 600; font-size: 17px; }
.ml-head .ml-meta { color: var(--text-3); font-size: 12px; margin-top: 1px; }
.ml-head .ml-close { margin-left: auto; width: 34px; height: 34px; border-radius: 9px; border: 1px solid var(--border-neutral); background: transparent; color: var(--text-3); font-size: 17px; cursor: pointer; }
.ml-head .ml-close:hover { color: var(--live); border-color: var(--live); }
.ml-tabs { border-right: 1px solid var(--border-soft); padding: 12px 10px; overflow-y: auto; }
.ml-tab { display: flex; align-items: center; gap: 10px; padding: 10px 12px; border-radius: 9px; color: var(--text-2); font-size: 13px; font-weight: 500; cursor: pointer; margin-bottom: 2px; transition: var(--t); width: 100%; text-align: left; background: transparent; border: 0; font-family: inherit; }
.ml-tab svg { width: 16px; height: 16px; opacity: .8; flex: 0 0 auto; }
.ml-tab:hover { background: var(--border-soft); color: var(--text); }
.ml-tab.active { background: var(--accent-soft); color: var(--text); }
.ml-tab.active svg { color: var(--accent); opacity: 1; }
.ml-tab .tab-badge { margin-left: auto; font-size: 9px; padding: 2px 6px; border-radius: 6px; background: var(--live-soft); color: var(--live); font-weight: 800; }
.ml-body { overflow-y: auto; padding: 22px 26px; }
.ml-pane { display: none; }
.ml-pane.active { display: block; animation: fade .2s var(--e); }

/* blocos de config (padrão AutoLive: toggle + ver na cena + salvar + tutorial) */
.cfg-block { background: var(--bg-card); border: 1px solid var(--border-card); border-radius: 14px; padding: 16px 18px; margin-bottom: 16px; }
.cfg-block-head { display: flex; align-items: center; gap: 12px; margin-bottom: 4px; }
.cfg-block-head h4 { font-size: 14.5px; flex: 1; }
.cfg-block-head .core-tag { font-size: 9px; letter-spacing: .08em; font-weight: 800; padding: 3px 8px; border-radius: 6px; background: var(--accent-soft); color: var(--accent); }
.cfg-block-head .live-tag { font-size: 9px; letter-spacing: .08em; font-weight: 800; padding: 3px 8px; border-radius: 6px; background: var(--live-soft); color: var(--live); }
.cfg-desc { color: var(--text-3); font-size: 12px; line-height: 1.5; margin: 6px 0 12px; }
.cfg-actions { display: flex; align-items: center; gap: 8px; margin-top: 14px; flex-wrap: wrap; }
.cfg-actions .unsaved { color: var(--warn); font-size: 11.5px; margin-left: auto; display: none; }
.cfg-actions .unsaved.show { display: inline; }
.tutorial-link { color: var(--accent); font-size: 12px; cursor: pointer; text-decoration: none; display: inline-flex; align-items: center; gap: 6px; }

/* controles de formulário compactos dentro do modal */
.ctrl { margin-bottom: 13px; }
.ctrl > label { display: block; font-size: 12px; color: var(--text-2); font-weight: 600; margin-bottom: 6px; }
.ctrl input[type=text], .ctrl input[type=number], .ctrl textarea, .ctrl select {
  width: 100%; background: var(--bg-raise); border: 1px solid var(--border-neutral); border-radius: 9px;
  padding: 9px 11px; font-size: 13px; color: var(--text);
}
.ctrl input:focus, .ctrl textarea:focus, .ctrl select:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-soft); }
.ctrl textarea { resize: vertical; min-height: 60px; }
.ctrl-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 9px 0; }
.ctrl-row .cr-txt { font-size: 13px; color: var(--text-2); }
.ctrl-row .cr-txt small { display: block; color: var(--text-3); font-size: 11px; margin-top: 1px; }
.slider { display: grid; grid-template-columns: 1fr 46px; align-items: center; gap: 10px; margin-bottom: 11px; }
.slider label { grid-column: 1 / -1; font-size: 12px; color: var(--text-2); margin-bottom: 2px; }
.slider input[type=range] { width: 100%; accent-color: var(--accent); }
.slider b { font-size: 12px; text-align: right; color: var(--text-2); font-variant-numeric: tabular-nums; }
.btn-group { display: inline-flex; gap: 6px; flex-wrap: wrap; }
.btn-group button { height: 32px; padding: 0 12px; border-radius: 8px; border: 1px solid var(--border-neutral); background: var(--bg-raise); color: var(--text-2); font-size: 12px; cursor: pointer; }
.btn-group button.active { border-color: var(--accent); background: var(--accent-soft); color: var(--text); }
.color-row { display: flex; align-items: center; gap: 14px; margin: 10px 0; }
.color-row label { font-size: 12px; color: var(--text-2); display: flex; align-items: center; gap: 8px; }
.color-row input[type=color] { width: 34px; height: 26px; border: 1px solid var(--border-neutral); border-radius: 7px; background: none; cursor: pointer; }
.method-radio { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin: 4px 0 18px; }
.method-opt { border: 1px solid var(--border-neutral); border-radius: 12px; padding: 14px; cursor: pointer; transition: var(--t); }
.method-opt.active { border-color: var(--accent); background: var(--accent-soft); }
.method-opt b { display: block; font-size: 13.5px; }
.method-opt small { display: block; color: var(--text-3); font-size: 11px; margin-top: 4px; line-height: 1.4; }
.conditional { display: none; }
.conditional.show { display: block; }
.upload-drop { border: 1.5px dashed var(--border-neutral); border-radius: 11px; padding: 18px; text-align: center; color: var(--text-3); font-size: 12.5px; cursor: pointer; }
.upload-drop:hover { border-color: var(--accent); color: var(--text-2); }
.ia-queue-item { background: var(--bg-raise); border: 1px solid var(--border-soft); border-radius: 10px; padding: 11px; margin-bottom: 8px; }
.ia-queue-item .q-author { font-size: 12px; color: var(--accent); font-weight: 600; }
.ia-queue-item .q-comment { font-size: 12px; color: var(--text-2); margin: 3px 0 7px; }
.ia-queue-item .q-actions { display: flex; gap: 7px; }
.dep-note { display: inline-flex; align-items: center; gap: 6px; font-size: 11px; color: var(--warn); background: var(--warn-soft); padding: 4px 9px; border-radius: 7px; margin-top: 8px; }

.log-box { max-height: 150px; overflow-y: auto; background: var(--bg); border: 1px solid var(--border-neutral); border-radius: 9px; padding: 8px 10px; font-family: var(--font-mono, ui-monospace, monospace); font-size: 11.5px; line-height: 1.75; color: var(--text-2); }
.log-line { white-space: nowrap; }
.log-t { color: var(--text-3); margin-right: 8px; }

/* ============================================================================
   ESTÚDIO (video-engine lite) — palco de vídeo duplo, 3 colunas
   ============================================================================ */
/* Estúdio ocupa a moldura do app (não é mais página inteira): a tela vira flex
   coluna com altura 100% do conteúdo; cabeçalho + abas são fixos e o palco preenche
   o resto SEM rolar a página. As colunas laterais rolam internamente se preciso. */
#screen-estudio.active { display: flex; flex-direction: column; height: 100%; min-height: 0; }
/* FASE 2a envolveu o estúdio de config num <div id="stConfigView"> comum, o que
   quebrava a cadeia de altura (display:block sizava por conteúdo): a prévia crescia
   pra igualar a coluna de controles e virava um bloco preto gigante. Restaura a
   coluna flex que preenche a moldura — o palco cabe na tela e os controles rolam. */
#stConfigView { flex: 1; min-height: 0; display: flex; flex-direction: column; }
#stConfigView[hidden] { display: none; }
/* botão de voltar aos presets: compacto e inline no cabeçalho (não ocupa linha) */
.st-back-inline { flex: 0 0 auto; align-self: center; width: 34px; height: 34px; border-radius: 10px; display: inline-flex; align-items: center; justify-content: center;
  font-size: 17px; line-height: 1; color: var(--text-2); background: var(--bg-raise); border: 1px solid var(--border-neutral); cursor: pointer; transition: var(--t); }
.st-back-inline:hover { color: var(--text); border-color: var(--accent); background: var(--bg-card); }
#stConfigView .page-head-row { display: flex; align-items: center; }
.st-tabs { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 14px; border-bottom: 1px solid var(--border-soft); flex: 0 0 auto; }
.st-tab { display: inline-flex; align-items: center; gap: 7px; padding: 10px 16px; font-size: 13px; font-weight: 600; color: var(--text-3); cursor: pointer; border: 0; background: transparent; border-bottom: 2px solid transparent; margin-bottom: -1px; font-family: inherit; transition: var(--t); }
.st-tab:hover { color: var(--text-2); }
.st-tab.active { color: var(--text); border-bottom-color: var(--accent); }
.st-tab .fx-flag { font-size: 8.5px; font-weight: 800; letter-spacing: .08em; padding: 2px 7px; border-radius: 99px; background: var(--warn-soft); color: var(--warn); }
.st-tab .fx-flag.brand { background: var(--accent-soft); color: var(--accent); }
.st-tab .fx-flag.audio { background: var(--emerald-soft); color: var(--emerald); }
/* aba Live Interativa (movida p/ dentro do Estúdio) rola internamente, sem estourar a moldura */
.st-inter-scroll { flex: 1; min-height: 0; overflow-y: auto; padding-right: 6px; }
.st-inter-scroll .ml-pane { display: block; }

/* ===== ESTÚDIO reorg: workspace = CONTROLES (trocam por subaba) + PALCO persistente =====
   O palco/prévia do vídeo fica SEMPRE visível; só a coluna de controles troca de conteúdo. */
/* Controles numa coluna confortável à esquerda + PRÉVIA grande e central (1fr).
   A prévia é o herói: 9:16 vertical, ocupando quase toda a altura da moldura. */
.st-workspace { flex: 1; min-height: 0; display: grid; grid-template-columns: clamp(340px, 30vw, 460px) minmax(0,1fr); gap: 18px; }
/* overflow-x hidden: a coluna rola só na vertical (grids internos não podem
   empurrar a lateral e cortar os cards). */
.st-controls { min-height: 0; overflow-y: auto; overflow-x: hidden; padding-right: 6px; min-width: 0; }
/* no rail os painéis ricos empilham numa coluna só (a coluna inteira rola) */
.st-controls .fx-cols { grid-template-columns: 1fr; }
.st-controls .st-palco-grid { grid-template-columns: 1fr; }
.st-cpane { display: none; }
.st-cpane.active { display: block; animation: fade .2s var(--e); }
/* dentro da coluna de controles os subpainéis não rolam sozinhos — a coluna inteira rola */
.st-controls .fx-panel { overflow: visible; flex: none; padding-right: 0; }
.st-controls .st-inter-scroll { overflow: visible; flex: none; padding-right: 0; }
/* Palco & Vídeo: cards de configuração em grade de 2 colunas */
.st-palco-grid { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 12px; align-items: start; }
/* itens da grade podem encolher até a largura da coluna (senão o conteúdo mais
   largo — nome de arquivo, cabeçalho de card — estica a trilha e vaza/corta) */
.st-palco-grid > * { min-width: 0; }
.st-palco-head { grid-column: 1 / -1; }
.st-palco-head .st-h1 { margin: 10px 0 6px; }
.st-palco-grid > .st-li-cta, .st-palco-grid > .st-closing, .st-palco-grid > #stPalcoMedia { grid-column: 1 / -1; }
/* Banners + Vídeo por cima lado a lado quando há largura; empilham no estreito */
.st-palco-media { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 12px; align-items: start; }
.st-palco-media > .li3-banners, .st-palco-media > .li3-pip-card { margin: 0; }
.st-palco-grid > .st-closing { margin-top: 2px; }
@media (max-width: 1180px) { .st-palco-grid { grid-template-columns: 1fr; } }
/* Empilhado (estreito): solta a cadeia de altura pra a página rolar normalmente e
   dá ao palco uma altura de viewport fixa — senão os controles (coluna única) comem
   toda a altura e o 9:16 colapsa. Continua vertical e proporcional, encolhendo com a tela. */
@media (max-width: 980px) {
  .st-workspace { grid-template-columns: 1fr; }
  #screen-estudio.active { height: auto; }
  #stConfigView { display: block; }
  .st-stage { height: 72vh; max-height: 72vh; }
}

/* ===== PREVIEW AO VIVO (mock): camadas/hints desenhados SOBRE a prévia do vídeo ===== */
.st-fx-layer { position: absolute; inset: 0; z-index: 6; pointer-events: none; overflow: hidden; --li-accent: var(--accent); }
/* efeitos de vídeo anti-detecção aplicados na própria prévia */
.st-stage.fxv-rgb::after { content: ''; position: absolute; inset: 0; z-index: 5; pointer-events: none; mix-blend-mode: screen; box-shadow: inset 5px 0 14px -6px rgba(255,40,90,.85), inset -5px 0 14px -6px rgba(0,225,255,.85); }
/* Pixelize (demo): borra o vídeo (sensação de baixa-resolução) + grade de blocos
   grandes bem visível — no app real é pixelate por canvas/servidor. */
.st-stage.fxv-pix::before {
  content: ''; position: absolute; inset: 0; z-index: 5; pointer-events: none;
  backdrop-filter: blur(2.2px) contrast(1.12);
  -webkit-backdrop-filter: blur(2.2px) contrast(1.12);
  background-image:
    linear-gradient(rgba(0,0,0,.32) 1.5px, transparent 1.5px),
    linear-gradient(90deg, rgba(0,0,0,.32) 1.5px, transparent 1.5px);
  background-size: 13px 13px;
}
/* chip genérico de hint */
/* LI v3 — fundo/borda parametrizados por peça (--li3-bg/--li3-border via gaveta);
   fallback = visual atual, zero regressão */
.stfx-chip { position: absolute; display: inline-flex; align-items: center; gap: 6px; padding: 4px 9px; border-radius: 99px; font-size: 10px; font-weight: 800; letter-spacing: .03em; color: #fff; background: var(--li3-bg, rgba(8,8,10,.72)); border: 1px solid var(--li3-border, rgba(255,255,255,.16)); backdrop-filter: blur(6px); box-shadow: 0 4px 14px rgba(0,0,0,.42); white-space: nowrap; max-width: 70%; }
.stfx-chip .dot { width: 7px; height: 7px; border-radius: 50%; background: var(--emerald); box-shadow: 0 0 8px var(--emerald); }
/* relógio "● ONLINE HH:MM" */
.stfx-clock { top: 10px; right: 10px; font-variant-numeric: tabular-nums; }
.stfx-clock .dot { animation: pulse 1.4s var(--e) infinite; }
/* cronômetro de oferta */
.stfx-countdown { top: 40px; right: 10px; background: var(--li3-bg, rgba(239,68,68,.85)); border-color: var(--li3-border, rgba(255,255,255,.25)); font-variant-numeric: tabular-nums; }
/* banner (faixa no topo) */
.stfx-banner { position: absolute; top: 0; left: 0; right: 0; height: 15%; display: flex; align-items: center; justify-content: center; background: linear-gradient(180deg, rgba(0,0,0,.55), transparent); }
.stfx-banner b { font-size: 11px; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; color: #fff; opacity: .92; border: 1px dashed rgba(255,255,255,.45); padding: 5px 12px; border-radius: 8px; }
/* LI v3 — o chip fake .stfx-pip morreu: o vídeo por cima real é .li3-pip (mais abaixo) */
/* placar na tela */
.stfx-placar { position: absolute; top: 44px; left: 10px; display: flex; flex-direction: column; gap: 4px; padding: 9px 11px; border-radius: 12px; background: var(--li3-bg, rgba(8,8,10,.72)); border: 1px solid var(--li3-border, rgba(255,255,255,.16)); backdrop-filter: blur(6px); box-shadow: 0 6px 18px rgba(0,0,0,.45); }
.stfx-placar .big { font-size: 19px; font-weight: 800; line-height: 1; color: var(--li-accent); font-variant-numeric: tabular-nums; }
.stfx-placar .lbl { font-size: 8px; letter-spacing: .12em; text-transform: uppercase; color: #cbd5e1; }
.stfx-placar .bar { width: 118px; height: 5px; border-radius: 99px; background: rgba(255,255,255,.15); overflow: hidden; margin-top: 2px; }
.stfx-placar .bar i { display: block; height: 100%; width: 68%; background: var(--li-accent); border-radius: 99px; }
/* número ao vivo (centro-topo) */
.stfx-numero { top: 12%; left: 50%; transform: translateX(-50%); background: rgba(8,8,10,.78); }
.stfx-numero .n { color: var(--li-accent); font-weight: 900; }
/* Fatia 6 — corações/emojis saíram do DOM: agora são camadas do FxEngine (canvas) */
/* pulso da live (ECG) */
.stfx-ecg { position: absolute; left: 0; right: 0; bottom: 22%; height: 42px; opacity: .95; }
.stfx-ecg svg { width: 100%; height: 100%; }
.stfx-ecg path { fill: none; stroke: var(--li-accent, var(--live)); stroke-width: 2.2; filter: drop-shadow(0 0 4px var(--li-accent, var(--live))); stroke-dasharray: 480; stroke-dashoffset: 480; animation: stfxDash 2.2s linear infinite; }
@keyframes stfxDash { to { stroke-dashoffset: 0; } }
/* manchete / texto na tela (faixa inferior) */
.stfx-headline { position: absolute; left: 0; right: 0; bottom: 0; padding: 12px; background: linear-gradient(0deg, rgba(0,0,0,.72), transparent); }
.stfx-headline b { display: inline-block; background: var(--li3-bg, var(--li-accent)); border: 1px solid var(--li3-border, transparent); color: #fff; font-size: 11px; font-weight: 800; padding: 5px 11px; border-radius: 7px; letter-spacing: .03em; box-shadow: 0 4px 12px rgba(0,0,0,.4); white-space: pre-line; }
/* vitrine viva / seguidor / combo */
.stfx-vitrine { left: 10px; bottom: 10px; background: color-mix(in srgb, var(--li-accent, #8B5CF6) 86%, transparent); border-color: rgba(255,255,255,.28); }
.stfx-follower { left: 50%; bottom: 13%; transform: translateX(-50%); background: color-mix(in srgb, var(--li-accent, #10B981) 90%, transparent); border-color: rgba(255,255,255,.28); }
/* Fatia 6 — seguidor em modo ALERTA (evento 'follower' chegou) */
.stfx-follower.stfx-follower-in { background: rgba(139,92,246,.94); border-color: rgba(255,255,255,.45); box-shadow: 0 0 16px rgba(139,92,246,.65), 0 4px 14px rgba(0,0,0,.42); }
.stfx-follower b { color: #FDE047; }
/* Fatia 6 — combo nasce OCULTO; .cb-show mostra; pop crescente no .cb-in
   (o pop fica no filho pra não brigar com o transform de drag do node) */
.stfx-combo { top: 42%; left: 50%; transform: translate(-50%,-50%) rotate(-8deg); font-size: 24px; font-weight: 900; color: #fff; background: none; border: 0; box-shadow: none; padding: 0; text-shadow: 0 0 12px var(--live), 0 2px 4px rgba(0,0,0,.6); opacity: 0; visibility: hidden; transition: opacity .25s ease, visibility .25s; }
.stfx-combo.cb-show { opacity: 1; visibility: visible; }
.stfx-combo .cb-in { display: inline-block; transform: scale(var(--cb-scale, 1)); }
.stfx-combo .cb-in.cb-pop { animation: stfxComboPop .45s cubic-bezier(.34,1.56,.64,1) 1; }
@keyframes stfxComboPop { 0% { transform: scale(.4); } 70% { transform: scale(calc(var(--cb-scale, 1) * 1.18)); } 100% { transform: scale(var(--cb-scale, 1)); } }
/* pilha de chips genéricos (peças sem hint dedicado) no canto inferior direito */
.stfx-generic-wrap { position: absolute; right: 10px; bottom: 10px; display: flex; flex-direction: column; gap: 6px; align-items: flex-end; max-width: 60%; }
.stfx-generic-wrap .stfx-chip { position: static; display: block; max-width: 100%; overflow: hidden; text-overflow: ellipsis; }

.studio { display: grid; grid-template-columns: clamp(230px, 19vw, 290px) minmax(0,1fr) clamp(270px, 21vw, 330px); gap: 16px; flex: 1; min-height: 0; }
.st-hero-badge { display: inline-flex; align-items: center; gap: 7px; font-size: 9px; letter-spacing: .14em; font-weight: 800; color: var(--accent); padding: 6px 10px; border-radius: 99px; border: 1px solid var(--border); background: var(--accent-soft); }
.st-hero-badge span { width: 5px; height: 5px; border-radius: 50%; background: var(--accent); box-shadow: 0 0 8px var(--accent); }
.st-h1 { font-size: 26px; margin: 12px 0 8px; }
.st-lead { font-size: 12px; color: var(--text-2); line-height: 1.55; }
.st-card { background: var(--bg-card); border: 1px solid var(--border-card); border-radius: 14px; padding: 14px; }
.st-card .kicker { font-size: 9px; letter-spacing: .14em; font-weight: 800; color: var(--accent); display: block; margin-bottom: 8px; }
.st-step { display: flex; gap: 10px; padding: 9px 10px; border-radius: 10px; background: var(--bg-raise); border: 1px solid var(--border-soft); margin-bottom: 7px; }
.st-step span { width: 22px; height: 22px; border-radius: 99px; display: grid; place-items: center; font-weight: 800; font-size: 11px; color: #fff; background: var(--accent); flex: 0 0 auto; }
.st-step b { font-size: 12px; display: block; }
.st-step small { font-size: 10.5px; color: var(--text-3); display: block; margin-top: 3px; line-height: 1.4; }
.st-stage-wrap { display: flex; flex-direction: column; gap: 14px; min-height: 0; }
.st-stage-shell { flex: 1; min-height: 0; display: grid; place-items: center; position: relative; }
/* Prévia = retângulo VERTICAL 9:16 (a live do TikTok é vertical). Altura guiada,
   limitada a 72vh pra nunca virar bloco gigante; largura sai do aspect-ratio e é
   capada pela coluna (max-width) em telas estreitas. Centralizado no palco. */
.st-stage { position: relative; height: min(100%, 84vh); width: auto; max-height: 84vh; max-width: 100%; aspect-ratio: 9/16; background: #020202; overflow: hidden; border: 1px solid var(--border-neutral); border-radius: 16px; box-shadow: 0 34px 80px rgba(0,0,0,.5); display: grid; place-items: center; }
.st-stage video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: contain; background: #000; }
.st-stage video.espera { opacity: 0; pointer-events: none; }
.st-stage-badge { position: absolute; top: 12px; left: 12px; z-index: 8; padding: 5px 10px; border-radius: 99px; background: rgba(8,8,7,.66); backdrop-filter: blur(8px); border: 1px solid rgba(255,255,255,.1); font-size: 8.5px; font-weight: 800; letter-spacing: .1em; color: #cbc6bd; }
/* Card de upload na ESQUERDA (o alvo principal de adicionar vídeos) */
.st-pick-card { padding-bottom: 14px; }
.st-drop-big { display: flex; flex-direction: column; align-items: center; gap: 8px; width: 100%; padding: 22px 18px; margin-top: 4px; text-align: center; cursor: pointer; color: var(--text); background: var(--accent-soft); border: 1.5px dashed color-mix(in srgb, var(--accent) 55%, transparent); border-radius: 13px; transition: var(--t); }
.st-drop-big:hover { border-color: var(--accent); background: color-mix(in srgb, var(--accent) 16%, transparent); transform: translateY(-1px); }
.st-drop-big .plus { display: grid; place-items: center; width: 46px; height: 46px; border-radius: 14px; background: var(--accent); color: #fff; font-size: 26px; font-weight: 700; }
.st-drop-big b { font-size: 14.5px; }
.st-drop-big small { font-size: 11px; color: var(--text-3); max-width: 260px; line-height: 1.5; }
@media (prefers-reduced-motion: reduce) { .st-drop-big { transition: none; } .st-drop-big:hover { transform: none; } }
/* Preview da direita: aviso passivo (não é mais botão de upload) */
.st-empty-hint { cursor: default; }
.st-empty-hint .plus { color: var(--accent); font-size: 26px; }
.st-empty { position: relative; z-index: 7; display: flex; flex-direction: column; align-items: center; gap: 10px; background: none; border: 0; color: var(--text); cursor: pointer; padding: 30px; }
.st-empty .plus { display: grid; place-items: center; width: 52px; height: 52px; border: 1px solid var(--border); border-radius: 16px; color: var(--accent); font-size: 28px; background: var(--accent-soft); transition: var(--t); }
.st-empty:hover .plus { transform: translateY(-2px); }
.st-empty b { font-size: 14px; }
.st-empty small { font-size: 9.5px; color: var(--text-3); max-width: 220px; text-align: center; line-height: 1.5; }
/* transporte: pode quebrar linha em telas estreitas e os botões NUNCA encolhem
   (senão o rótulo "Reproduzir" ficava cortado). A barra de seek toma o espaço. */
.st-transport { flex: 0 0 auto; display: flex; align-items: center; flex-wrap: wrap; gap: 10px; padding: 12px 14px; border: 1px solid var(--border-card); border-radius: 14px; background: var(--bg-card); max-width: 820px; width: 100%; margin: 0 auto; }
.st-transport > .btn { flex: 0 0 auto; white-space: nowrap; }
.st-transport input[type=range] { accent-color: var(--accent); }
.st-transport .seek-wrap { flex: 1 1 180px; min-width: 140px; display: flex; flex-direction: column; gap: 4px; }
.st-transport .time { display: flex; justify-content: space-between; font-size: 9px; color: var(--text-3); font-variant-numeric: tabular-nums; }
.st-pl-head { display: flex; align-items: center; justify-content: space-between; gap: 8px 10px; flex-wrap: wrap; }
.st-pl-head .kicker { min-width: 0; flex: 1 1 auto; }
.st-pl-add { flex: 0 0 auto; display: inline-flex; align-items: center; gap: 5px; height: 26px; padding: 0 11px; border-radius: 8px; border: 1px solid var(--accent); background: var(--accent-soft); color: var(--accent); font-weight: 700; font-size: 10.5px; letter-spacing: .02em; cursor: pointer; transition: var(--t); white-space: nowrap; }
.st-pl-add:hover { background: var(--accent); color: #fff; box-shadow: 0 4px 14px rgba(139,92,246,0.4); }
.st-pl-hint { display: block; margin-top: 8px; font-size: 9.5px; color: var(--text-3); }
.st-pl-ordem { margin-top: 10px; }
.st-playlist { list-style: none; margin: 10px 0 0; padding: 0; display: flex; flex-direction: column; gap: 5px; }
.st-pl-item .pl-name { cursor: pointer; }
.st-pl-item .pl-name:hover { color: var(--text); }
.st-pl-item { display: flex; align-items: center; gap: 9px; padding: 7px 8px; border: 1px solid var(--border-soft); border-radius: 9px; background: var(--bg-raise); font-size: 11px; }
.st-pl-item.playing { border-color: var(--border); background: var(--accent-soft); }
.st-pl-item .pl-n { width: 18px; height: 18px; border-radius: 5px; display: grid; place-items: center; font-size: 9px; font-weight: 800; background: var(--bg-card); color: var(--text-3); }
.st-pl-item.playing .pl-n { background: var(--accent); color: #fff; }
.st-pl-item .pl-name { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--text-2); }
.st-pl-item .pl-btns { display: flex; gap: 2px; }
.st-pl-item .pl-btns button { width: 20px; height: 20px; border: 0; background: transparent; color: var(--text-3); cursor: pointer; border-radius: 5px; font-size: 10px; }
.st-pl-item .pl-btns button:hover { background: var(--bg-card); color: var(--text); }
/* minmax(0,1fr): com 1fr puro os botões não encolhiam abaixo do texto e
   empurravam a coluna (scroll horizontal cortando os cards). */
.st-profiles { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 7px; margin-top: 10px; }
.st-profiles > .st-profile { min-width: 0; }
.st-profiles > .st-profile b, .st-profiles > .st-profile small { display: block; min-width: 0; overflow: hidden; text-overflow: ellipsis; }
.st-profile { text-align: left; padding: 9px 10px; border: 1px solid var(--border-soft); border-radius: 10px; background: var(--bg-raise); color: var(--text); cursor: pointer; font-size: 10px; }
.st-profile.auto { grid-column: 1 / -1; }
.st-profile.active { border-color: var(--border); background: var(--accent-soft); }
.st-profile b { display: block; font-size: 10.5px; }
.st-profile small { color: var(--text-3); font-size: 8.5px; }
.st-bench { margin-top: 10px; padding: 11px; border-radius: 10px; background: var(--bg-raise); border: 1px solid var(--border-soft); }
.st-bench .top { display: flex; justify-content: space-between; font-size: 9.5px; color: var(--text-2); }
.st-bench .top b { color: var(--accent); font-variant-numeric: tabular-nums; }
.st-bench .meter { height: 4px; background: var(--bg-card); border-radius: 99px; overflow: hidden; margin: 8px 0; }
.st-bench .meter i { display: block; height: 100%; width: 62%; background: linear-gradient(90deg, rgba(139,92,246,.5), var(--accent)); }
.st-bench small { font-size: 8.5px; color: var(--text-3); }
.st-closing { margin-top: auto; padding-top: 12px; border-top: 1px solid var(--border-soft); display: flex; flex-direction: column; gap: 9px; }
.st-ready { display: flex; align-items: center; gap: 11px; padding: 11px; background: var(--bg-card); border: 1px solid var(--border-card); border-radius: 12px; }
.st-ready.ok { border-color: var(--border); }
.st-ready .ic { width: 32px; height: 32px; border-radius: 10px; display: grid; place-items: center; background: var(--bg-raise); color: var(--text-3); font-weight: 800; font-size: 16px; }
.st-ready.ok .ic { background: var(--emerald-soft); color: var(--emerald); }
.st-ready b { display: block; font-size: 11px; }
.st-ready small { display: block; color: var(--text-3); font-size: 9.5px; margin-top: 2px; }
.st-publish { height: 44px; width: 100%; }

/* ============================================================================
   ESTÚDIO — painel "Efeitos (anti-detecção)" (Proteção contra violação)
   Rajadas aleatórias de vídeo (Min·Max·Dur·Chance) + contínuos + áudio ambiente.
   Cor: âmbar (proteção/aviso) + esmeralda (ligado) + roxo (marca). NÃO tudo roxo.
   ============================================================================ */
.fx-panel { flex: 1; min-height: 0; overflow-y: auto; padding-right: 6px; display: flex; flex-direction: column; gap: 14px; }
.fx-intro { display: flex; align-items: flex-start; gap: 12px; padding: 13px 15px; border-radius: 12px; background: var(--warn-soft); border: 1px solid rgba(245,158,11,0.28); }
.fx-intro .fx-shield { width: 34px; height: 34px; flex: 0 0 auto; border-radius: 10px; display: grid; place-items: center; background: rgba(245,158,11,0.16); color: var(--warn); font-size: 17px; }
.fx-intro b { font-size: 13px; color: color-mix(in srgb, var(--warn) 86%, #fff 14%); }
.fx-intro p { margin: 3px 0 0; font-size: 11.5px; color: var(--text-2); line-height: 1.5; }

.fx-cols { display: grid; grid-template-columns: minmax(0,1.35fr) minmax(0,1fr); gap: 14px; align-items: start; }
@media (max-width: 900px) { .fx-cols { grid-template-columns: 1fr; } }

.fx-card { background: var(--bg-card); border: 1px solid var(--border-card); border-radius: 14px; padding: 15px 16px; }
.fx-card > .fx-kicker { display: flex; align-items: center; gap: 8px; font-size: 9.5px; letter-spacing: .12em; font-weight: 800; text-transform: uppercase; margin-bottom: 12px; }
.fx-kicker.amber { color: var(--warn); }
.fx-kicker.brand { color: var(--accent); }
.fx-kicker .fx-tag { font-size: 8px; letter-spacing: .06em; padding: 2px 7px; border-radius: 99px; margin-left: auto; text-transform: none; }
.fx-kicker.amber .fx-tag { background: var(--warn-soft); color: var(--warn); }
.fx-kicker.brand .fx-tag { background: var(--accent-soft); color: var(--accent); }

/* linha de efeito de vídeo (rajada): toggle + nome + 4 mini-inputs */
.fx-row { display: grid; grid-template-columns: auto minmax(0,1fr); gap: 10px 12px; align-items: center; padding: 11px 0; border-top: 1px solid var(--border-soft); }
.fx-row:first-of-type { border-top: 0; }
.fx-row .fx-name b { font-size: 12.5px; display: block; }
.fx-row .fx-name small { font-size: 10px; color: var(--text-3); display: block; margin-top: 1px; }
.fx-params { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(4, 1fr); gap: 7px; }
.fx-params label { display: flex; flex-direction: column; gap: 3px; font-size: 8.5px; letter-spacing: .05em; text-transform: uppercase; color: var(--text-3); font-weight: 700; }
.fx-params .fx-inwrap { display: flex; align-items: center; gap: 3px; background: var(--bg-raise); border: 1px solid var(--border-neutral); border-radius: 8px; padding: 5px 8px; }
.fx-params .fx-inwrap:focus-within { border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-soft); }
.fx-params input { width: 100%; min-width: 0; background: transparent; border: 0; color: var(--text); font-size: 12px; font-variant-numeric: tabular-nums; padding: 0; }
.fx-params input:focus { outline: none; }
.fx-params .fx-unit { font-size: 10px; color: var(--text-3); }
.fx-row.off { opacity: .5; }
.fx-row.off .fx-params { pointer-events: none; }

/* efeitos contínuos (sempre ligados) */
.fx-cont { display: flex; align-items: center; gap: 11px; padding: 11px 0; border-top: 1px solid var(--border-soft); }
.fx-cont:first-of-type { border-top: 0; }
.fx-cont .fx-name { flex: 1 1 auto; min-width: 0; }
.fx-cont .fx-name b { font-size: 12.5px; display: block; }
.fx-cont .fx-name small { font-size: 10px; color: var(--text-3); display: block; margin-top: 1px; }
.fx-on-pill { flex: 0 0 auto; font-size: 8.5px; font-weight: 800; letter-spacing: .08em; padding: 3px 9px; border-radius: 99px; background: var(--emerald-soft); color: var(--emerald); border: 1px solid rgba(16,185,129,0.35); }
.fx-cont .fx-mini { flex: 0 0 132px; }
.fx-mini { display: flex; flex-direction: column; gap: 3px; }
.fx-mini > span { font-size: 8.5px; letter-spacing: .05em; text-transform: uppercase; color: var(--text-3); font-weight: 700; }
.fx-mini input[type=range] { width: 100%; accent-color: var(--accent); }

/* relógio ● ONLINE HH:MM (marca cada volta do loop) */
.fx-clock-preview { display: inline-flex; align-items: center; gap: 6px; font-family: var(--font-mono, ui-monospace, monospace); font-size: 11px; font-weight: 700; color: var(--text); background: rgba(8,8,7,.6); border: 1px solid var(--border-neutral); border-radius: 8px; padding: 4px 9px; }
.fx-clock-preview .dot { width: 7px; height: 7px; border-radius: 50%; background: var(--emerald); box-shadow: 0 0 8px var(--emerald); animation: pulse 1.4s var(--e) infinite; }

/* áudio anti-detecção */
.fx-audio-row { display: grid; grid-template-columns: auto minmax(0,1fr); gap: 8px 12px; align-items: center; padding: 10px 0; border-top: 1px solid var(--border-soft); }
.fx-audio-row:first-of-type { border-top: 0; }
.fx-audio-row .fx-name b { font-size: 12.5px; display: block; }
.fx-audio-row .fx-name small { font-size: 10px; color: var(--text-3); display: block; margin-top: 1px; }
.fx-audio-row .fx-mini { grid-column: 1 / -1; }

/* biblioteca de sons de ambiente */
.amb-lib { display: flex; flex-wrap: wrap; gap: 7px; margin: 4px 0 14px; }
.amb-chip { display: inline-flex; align-items: center; gap: 6px; padding: 6px 11px; border-radius: 99px; border: 1px solid var(--border-neutral); background: var(--bg-raise); color: var(--text-2); font-size: 11.5px; cursor: pointer; transition: var(--t); font-family: inherit; }
.amb-chip:hover { border-color: var(--accent); color: var(--text); }
.amb-chip.on { border-color: var(--emerald); background: var(--emerald-soft); color: var(--emerald); }
.amb-chip.on::before { content: '♪'; font-size: 11px; }
.amb-listen { display: inline-flex; align-items: center; gap: 9px; margin-top: 12px; height: 34px; padding: 0 14px; border-radius: 9px; border: 1px solid var(--emerald); background: var(--emerald-soft); color: var(--emerald); font-weight: 700; font-size: 12px; cursor: pointer; font-family: inherit; transition: var(--t); }
.amb-listen:hover { box-shadow: 0 4px 16px rgba(16,185,129,0.3); }
.amb-listen.on { background: var(--emerald); color: #fff; }
.amb-eq { display: inline-flex; align-items: flex-end; gap: 2px; height: 14px; }
/* barra em altura CHEIA (14px) comprimida por scaleY: parada, mede os mesmos 4px de
   antes, mas a animação vira compositor puro em vez de disparar layout por frame. */
.amb-eq i { width: 3px; height: 14px; background: currentColor; border-radius: 2px;
  transform: scaleY(.2857); transform-origin: bottom; }
.amb-listen.on .amb-eq i { animation: ambEq .8s ease-in-out infinite; }
.amb-listen.on .amb-eq i:nth-child(2) { animation-delay: .12s; }
.amb-listen.on .amb-eq i:nth-child(3) { animation-delay: .24s; }
.amb-listen.on .amb-eq i:nth-child(4) { animation-delay: .36s; }
.amb-listen.on .amb-eq i:nth-child(5) { animation-delay: .48s; }
@keyframes ambEq { 0%, 100% { transform: scaleY(.2857); } 50% { transform: scaleY(1); } }

/* ============================================================================
   LIVE INTERATIVA — catálogo rico de overlays de reação (accordions + peças)
   Cor por grupo (NÃO tudo roxo): esmeralda = números; âmbar = meta/urgência;
   vermelho/rosa = chat e festa; roxo = marca / produtos / ambiente.
   ============================================================================ */
.li-cat-head { margin: 6px 0 12px; }
.li-cat-head b { display: block; font-family: var(--font-head); font-size: 15px; }
.li-cat-head span { display: block; font-size: 12px; color: var(--text-3); margin-top: 3px; line-height: 1.5; }

/* 10 temas como cards (faixa de cores + nome + descrição) */
.li-themes { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 10px; margin: 10px 0 4px; }
.li-theme-card { text-align: left; border: 1.5px solid var(--border-neutral); border-radius: 12px; padding: 10px; background: var(--bg-raise); cursor: pointer; transition: var(--t); font-family: inherit; color: var(--text); }
.li-theme-card:hover { border-color: var(--accent); transform: translateY(-1px); }
.li-theme-card.active { border-color: #fff; box-shadow: var(--shadow-glow); }
.li-theme-band { display: flex; height: 22px; border-radius: 6px; overflow: hidden; margin-bottom: 8px; }
.li-theme-band i { flex: 1; }
.li-theme-card b { display: block; font-size: 12.5px; font-family: var(--font-head); }
.li-theme-card small { display: block; font-size: 10px; color: var(--text-3); margin-top: 2px; line-height: 1.35; }

/* accordions por subgrupo */
.li-acc { background: var(--bg-card); border: 1px solid var(--border-card); border-radius: 14px; margin-bottom: 12px; overflow: hidden; }
.li-acc-head { display: flex; align-items: center; gap: 12px; width: 100%; padding: 13px 15px; background: transparent; border: 0; cursor: pointer; font-family: inherit; text-align: left; color: var(--text); transition: var(--t); }
.li-acc-head:hover { background: var(--border-soft); }
.li-acc-ic { width: 30px; height: 30px; border-radius: 9px; display: grid; place-items: center; font-size: 15px; flex: 0 0 auto; background: var(--accent-soft); color: var(--accent); }
.li-acc-ic.emerald { background: var(--emerald-soft); color: var(--emerald); }
.li-acc-ic.warn { background: var(--warn-soft); color: var(--warn); }
.li-acc-ic.live { background: var(--live-soft); color: var(--live); }
.li-acc-t { flex: 1; min-width: 0; }
.li-acc-t b { display: block; font-family: var(--font-head); font-size: 13.5px; }
.li-acc-t small { display: block; font-size: 11px; color: var(--text-3); margin-top: 1px; }
.li-acc-n { font-size: 11px; font-weight: 700; color: var(--text-2); background: var(--border-soft); padding: 2px 9px; border-radius: 99px; flex: 0 0 auto; }
.li-chev { color: var(--text-3); transition: transform .2s var(--e); font-size: 13px; flex: 0 0 auto; }
.li-acc.open .li-chev { transform: rotate(180deg); }
.li-acc-body { display: none; padding: 2px 14px 14px; }
.li-acc.open .li-acc-body { display: block; animation: fade .2s var(--e); }

/* grade de peças */
.li-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(228px, 1fr)); gap: 10px; }
.li-piece { border: 1px solid var(--border-soft); border-radius: 12px; padding: 11px 12px; background: var(--bg-raise); transition: var(--t); }
.li-piece.on { border-color: var(--border); }
.li-piece-top { display: grid; grid-template-columns: auto auto 1fr auto; align-items: center; gap: 9px; }
.li-thumb { width: 30px; height: 40px; border-radius: 7px; display: grid; place-items: center; font-size: 16px; background: linear-gradient(160deg, #1a1030, #0a0a12); border: 1px solid var(--border-soft); flex: 0 0 auto; }
.li-piece-id { min-width: 0; }
.li-piece-id b { display: block; font-size: 12.5px; }
.li-piece-id small { display: block; font-size: 10px; color: var(--text-3); margin-top: 1px; line-height: 1.3; }
.li-extra { display: flex; align-items: center; gap: 8px; margin-top: 9px; flex-wrap: wrap; }
.li-extra-k { font-size: 9px; letter-spacing: .06em; text-transform: uppercase; color: var(--text-3); font-weight: 700; }
.li-extra .btn-group button { height: 26px; padding: 0 9px; font-size: 10.5px; }
.li-piece-ctrls { display: grid; grid-template-columns: 1fr 1fr; gap: 8px 10px; margin-top: 10px; }
.li-mini { display: flex; flex-direction: column; gap: 3px; }
.li-mini span { font-size: 8px; letter-spacing: .05em; text-transform: uppercase; color: var(--text-3); font-weight: 700; }
.li-mini input[type=range] { width: 100%; accent-color: var(--accent); }
.li-color { display: flex; align-items: center; justify-content: space-between; gap: 6px; background: var(--bg-card); border: 1px solid var(--border-soft); border-radius: 8px; padding: 4px 8px; }
.li-color span { font-size: 8px; letter-spacing: .05em; text-transform: uppercase; color: var(--text-3); font-weight: 700; }
.li-color input[type=color] { width: 28px; height: 22px; border: 1px solid var(--border-neutral); border-radius: 6px; background: none; cursor: pointer; padding: 0; }
.li-scene { width: 100%; margin-top: 10px; height: 28px; font-size: 11px; }

/* CTA no Estúdio → leva pra Live Interativa rica */
.st-li-cta { border-color: var(--border); background: linear-gradient(160deg, var(--accent-soft), transparent); }

/* ============================================================================
   RESPONSIVO
   ============================================================================ */
@media (max-width: 1080px) {
  #app { grid-template-columns: 64px 1fr; }
  .side-item span.txt, .side-group, .side-foot small { display: none; }
  .side-item { justify-content: center; }
  .tb-logo { width: auto; }
  .studio { grid-template-columns: 1fr; height: auto; }
  .dash-grid { grid-template-columns: 1fr; }
}

/* ============================================================================
   APRENDIZADO — AULAS · COMUNIDADE · SUPORTE  (portados do app React, fiéis)
   Cores = tokens LiveGuru. NÃO tudo roxo: roxo=marca/CTA/ativo · esmeralda=
   conclusão/online · âmbar=pendente/atendendo/planejado · vermelho=não-lido/
   like/equipe/ao-vivo/admin. Gradientes de banner alternam roxo/roxo-claro/
   rosa-vermelho/âmbar (regra "não tudo roxo").
   ============================================================================ */

/* selo de não-lidos na sidebar (vermelho) */
.side-badge { margin-left: auto; font-size: 10px; font-weight: 800; min-width: 18px; height: 18px; padding: 0 5px; border-radius: 99px; background: var(--live); color: #fff; display: inline-flex; align-items: center; justify-content: center; box-shadow: 0 0 10px var(--live-soft); }

/* animação de entrada compartilhada */
@keyframes fadeUp { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }
.fade-up { animation: fadeUp .42s var(--e) both; }
@media (prefers-reduced-motion: reduce) { .fade-up { animation: none; } }

/* ---- primitivas compartilhadas (Comunidade + Suporte) ---- */
/* avatar de usuário = neutro (identidade pelas iniciais, não por cor) */
.avatar-anel { width: 40px; height: 40px; border-radius: 50%; flex: 0 0 auto; display: grid; place-items: center; background: var(--avatar-bg); border: 1px solid var(--avatar-border); }
.avatar-anel span { font-family: var(--font-head); font-weight: 700; font-size: 14px; letter-spacing: .01em; color: var(--avatar-text); }
/* avatar da Equipe/Admin = marca (roxo) — único ponto onde o roxo identifica quem fala */
.avatar-anel.admin { background: var(--accent-soft); border-color: rgba(139,92,246,.45); }
.avatar-anel.admin span { color: #C4B5FD; }
/* perfil oficial LiveGuru na Comunidade — logo como avatar, SEM glow de marca */
.avatar-anel.lg-avatar { background-image: var(--lg-logo); background-size: contain; background-position: center; background-repeat: no-repeat; }

/* chips de estado semânticos (modificadores do .chip do protótipo) */
.chip.on   { border-color: var(--accent); background: var(--accent-soft); color: var(--text); }
/* conclusão = esmeralda (mesma cor dos checks de aula concluída), nunca roxo */
.chip.feito.on { border-color: var(--emerald); background: var(--emerald-soft); color: var(--emerald); }
.chip.warn { border-color: rgba(245,158,11,.4); background: var(--warn-soft); color: var(--warn); }
.chip.off  { border-color: var(--border-neutral); background: transparent; color: var(--text-3); }
.chip .dot { width: 7px; height: 7px; border-radius: 50%; background: currentColor; margin-right: 6px; display: inline-block; vertical-align: middle; }
@media (prefers-reduced-motion: no-preference) { .chip .dot { animation: pulse 1.4s var(--e) infinite; } }

/* ============================================================================
   AULAS — grade de módulos (container 1180px)
   ============================================================================ */
.aulas-view { max-width: 1180px; margin: 0 auto; }
.aulas-view .page-head-row { margin-bottom: 20px; }

/* barra de admin — criar conteúdo é ação primária/marca (roxo), não perigo (vermelho) */
.admin-barra { display: flex; align-items: center; gap: 12px; padding: 12px 16px; border-radius: var(--r-card); border: 1px solid var(--border); background: var(--accent-soft); margin-bottom: 20px; flex-wrap: wrap; }
.admin-selo { font-size: 10.5px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; padding: 3px 9px; border-radius: 99px; background: var(--accent); color: #fff; }
.admin-barra p { flex: 1; min-width: 160px; margin: 0; color: var(--text-2); font-size: 12.5px; }
.admin-barra-acoes { display: flex; gap: 8px; }
.admin-btn-secundario { height: 34px; padding: 0 13px; border-radius: 9px; border: 1px solid var(--border-neutral); background: transparent; color: var(--text-2); font-weight: 700; font-size: 12.5px; cursor: pointer; transition: var(--t); }
.admin-btn-secundario:hover { border-color: var(--accent); color: var(--text); }
.admin-btn { height: 34px; padding: 0 13px; border-radius: 9px; border: 0; background: var(--accent); color: #fff; font-weight: 700; font-size: 12.5px; cursor: pointer; }

/* HeroCard "Comece por aqui" (banner grande, neon sempre ligado) */
.hero-card { position: relative; display: block; width: 100%; text-align: left; min-height: 420px; border-radius: 22px; overflow: hidden; cursor: pointer; padding: 0;
  border: 1.5px solid color-mix(in srgb, var(--accent) 42%, var(--border-neutral)); background: linear-gradient(160deg, var(--bg-card), var(--bg));
  box-shadow: 0 24px 60px -18px rgba(0,0,0,.65), 0 0 46px rgba(139,92,246,.20); transition: var(--t); font-family: inherit; }
.hero-card:hover, .hero-card:focus-visible { border-color: var(--accent); transform: translateY(-3px); filter: brightness(1.04); box-shadow: 0 30px 70px -18px rgba(0,0,0,.7), 0 0 66px rgba(139,92,246,.32); outline: none; }
.hero-card-glifo { position: absolute; top: 50%; right: 64px; transform: translateY(-50%); width: 190px; height: 190px; color: var(--accent); pointer-events: none; }
.hero-card-txt { position: absolute; left: 0; bottom: 2px; padding: 30px 28px; max-width: 450px; display: flex; flex-direction: column; gap: 9px; }
.hero-etiqueta { align-self: flex-start; font-size: 11px; text-transform: uppercase; letter-spacing: .08em; font-weight: 700; color: var(--accent); background: var(--accent-soft); border: 1px solid var(--border); padding: 4px 11px; border-radius: 99px; }
.hero-card-txt h2 { font-size: 33px; font-weight: 700; line-height: 1.15; }
.grad-text { background: linear-gradient(100deg, #fff 20%, var(--accent) 120%); -webkit-background-clip: text; background-clip: text; color: transparent; }
.hero-rodape { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; }
.hero-play { display: inline-flex; align-items: center; gap: 8px; height: 38px; padding: 0 19px; border-radius: 99px; background: var(--accent); color: #0b0510; font-weight: 700; font-size: 14px; box-shadow: 0 8px 24px rgba(139,92,246,.5); }
.hero-play svg { width: 13px; height: 13px; }
.hero-duracao { font-style: normal; color: var(--text-3); font-size: 13px; }

/* contador global (barra de progresso da jornada) */
.contador-global { display: flex; align-items: center; gap: 9px; font-size: 12.5px; color: var(--text-3); margin: 18px 2px 32px; }
.contador-global strong { color: var(--text); }
.contador-barra { flex: 1; height: 3px; border-radius: 99px; background: rgba(161,161,170,.15); overflow: hidden; }
.contador-barra-preenchida { display: block; height: 100%; border-radius: 99px; background: linear-gradient(90deg, var(--accent), #3b82f6); box-shadow: 0 0 16px 1px rgba(139,92,246,.65); transition: width .7s var(--e); }

/* lista de módulos */
.modulos-lista { display: flex; flex-direction: column; gap: 38px; }
.modulo-secao { display: flex; flex-direction: column; }

/* ModuloBanner (cabeçalho grande) — 4 gradientes alternados */
.modulo-banner { position: relative; min-height: 337px; border-radius: var(--r-card) var(--r-card) 0 0; border: 1px solid var(--border-card); border-bottom: 0; overflow: hidden; display: flex; }
.modulo-banner.grad-1 { background: linear-gradient(135deg, rgba(139,92,246,.35) 0%, rgba(8,8,12,.6) 60%), #0a0a0f; }
.modulo-banner.grad-2 { background: linear-gradient(135deg, rgba(167,139,250,.32) 0%, rgba(8,8,12,.6) 60%), #0a0a0f; }
.modulo-banner.grad-3 { background: linear-gradient(135deg, rgba(239,68,68,.28) 0%, rgba(8,8,12,.6) 60%), #0a0a0f; }
.modulo-banner.grad-4 { background: linear-gradient(135deg, rgba(245,158,11,.24) 0%, rgba(8,8,12,.6) 60%), #0a0a0f; }
.modulo-banner-glifo { position: absolute; top: 32px; right: 36px; width: 96px; height: 96px; color: var(--accent); opacity: .7; pointer-events: none; }
.modulo-banner-veu { position: absolute; inset: 0; background: linear-gradient(0deg, rgba(0,0,0,.55) 0%, transparent 65%); pointer-events: none; }
.modulo-banner-txt { position: relative; z-index: 1; margin-top: auto; padding: 20px 22px; max-width: 340px; display: flex; flex-direction: column; justify-content: flex-end; gap: 5px; }
.modulo-banner-txt h2 { font-size: 22px; font-weight: 700; color: #fff; }
.modulo-banner-txt p { margin: 0; font-size: 12.5px; color: rgba(255,255,255,.75); }
.modulo-banner-medida { display: flex; align-items: center; gap: 10px; font-size: 11.5px; color: rgba(255,255,255,.85); margin-top: 4px; }
.modulo-banner-barra { width: 201px; max-width: 55%; height: 5px; border-radius: 99px; background: rgba(255,255,255,.18); overflow: hidden; }
.modulo-banner-barra span { display: block; height: 100%; background: var(--accent); box-shadow: 0 0 10px var(--accent); }

/* aula-grid — auto-fit: módulos com 3 aulas preenchem a linha (sem 4ª coluna
   vazia) e módulos com 4 aulas ocupam 4 colunas. Sem célula órfã fixa. */
.aula-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); gap: 20px 18px; padding: 20px; border: 1px solid var(--border-card); border-top: 0; border-radius: 0 0 var(--r-card) var(--r-card); background: var(--bg-card); }

/* AulaCard */
.aula-card { display: flex; flex-direction: column; gap: 9px; cursor: pointer; min-width: 0; }
.aula-card-capa { position: relative; aspect-ratio: 16/9; border-radius: 14px; border: 1px solid var(--border-card); overflow: hidden; display: grid; place-items: center; transition: var(--t); }
.aula-card-capa.grad-1 { background: linear-gradient(150deg, rgba(139,92,246,.30) 0%, #0d0d0c 75%); }
.aula-card-capa.grad-2 { background: linear-gradient(150deg, rgba(167,139,250,.30) 0%, #0d0d0c 75%); }
.aula-card-capa.grad-3 { background: linear-gradient(150deg, rgba(239,68,68,.28) 0%, #0d0d0c 75%); }
.aula-card-capa.grad-4 { background: linear-gradient(150deg, rgba(245,158,11,.26) 0%, #0d0d0c 75%); }
.aula-card:hover .aula-card-capa, .aula-card:focus-visible .aula-card-capa { border-color: var(--accent); transform: translateY(-2px); filter: brightness(1.08); box-shadow: 0 20px 40px -20px rgba(139,92,246,.45); }
.aula-card:focus-visible { outline: none; }
.aula-card-play { width: 39px; height: 39px; border-radius: 50%; display: grid; place-items: center; background: rgba(5,5,4,.55); border: 1px solid rgba(255,255,255,.18); color: #fff; }
.aula-card-play svg { width: 13px; height: 13px; }
.aula-card-tempo { position: absolute; right: 8px; bottom: 8px; background: rgba(5,5,4,.82); color: #fff; font-size: 11px; padding: 3px 8px; border-radius: 7px; }
.aula-card-check { position: absolute; left: 8px; top: 8px; width: 22px; height: 22px; border-radius: 50%; background: var(--emerald); color: #04120d; display: grid; place-items: center; }
.aula-card-check svg { width: 12px; height: 12px; }
.aula-card-pe { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.aula-card-pe strong { font-size: 13.5px; font-weight: 650; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.aula-card-meta { font-size: 11.5px; color: var(--text-3); }

/* Toast (feedback mock) */
.aulas-toast { position: fixed; left: 50%; bottom: 24px; transform: translateX(-50%); z-index: 150; display: inline-flex; align-items: center; gap: 9px; padding: 11px 18px; border-radius: 99px; background: var(--bg-card); border: 1px solid var(--border); box-shadow: var(--shadow-pop); font-size: 13px; color: var(--text); animation: fadeUp .3s var(--e); }
.aulas-toast-icone { color: var(--accent); display: inline-flex; }
.aulas-toast-icone svg { width: 15px; height: 15px; }

/* ============================================================================
   AULA DETALHE — player + playlist (container 1320px, 2 colunas)
   ============================================================================ */
.aula-detalhe-view { max-width: 1320px; margin: 0 auto; }
.breadcrumb { display: flex; align-items: center; gap: 12px; font-size: 12.5px; color: var(--text-3); margin-bottom: 14px; }
.breadcrumb a { cursor: pointer; text-decoration: none; color: var(--text-2); }
.breadcrumb a:hover { color: var(--accent); }
.aula-detalhe-layout { display: grid; grid-template-columns: minmax(0,1fr) 344px; gap: 28px; align-items: start; }
.aula-detalhe-principal { min-width: 0; }

/* player grande com borda em gradiente */
.player { position: relative; width: 100%; aspect-ratio: 16/9; border-radius: 16px; padding: 1.5px; background: linear-gradient(135deg, var(--accent), rgba(255,255,255,.15), var(--accent)); box-shadow: 0 24px 60px -20px rgba(0,0,0,.7), 0 0 40px rgba(139,92,246,.28); display: flex; flex-direction: column; overflow: hidden; }
.player-inner { flex: 1; display: flex; flex-direction: column; border-radius: 14px; overflow: hidden; background: #000; min-height: 0; }
.player-tela { flex: 1; display: grid; place-items: center; background: linear-gradient(160deg, var(--surface), #000); min-height: 0; }
.player-play-central { width: 64px; height: 64px; border-radius: 50%; border: 1px solid rgba(255,255,255,.2); background: rgba(255,255,255,.12); color: #fff; cursor: pointer; display: grid; place-items: center; transition: var(--t); }
.player-play-central:hover { background: rgba(255,255,255,.2); }
.player-play-central svg { width: 22px; height: 22px; }
.player-barra { display: flex; align-items: center; gap: 12px; padding: 10px 14px; background: rgba(0,0,0,.5); }
.player-barra button { background: transparent; border: 0; color: var(--text-2); cursor: pointer; display: inline-flex; align-items: center; padding: 4px; border-radius: 6px; }
.player-barra button:hover { color: var(--accent); }
.player-barra button svg { width: 16px; height: 16px; }
.player-tempo { font-size: 12px; color: var(--text-2); font-variant-numeric: tabular-nums; }
.player-espaco { flex: 1; }
.player-velocidade { font-size: 12px !important; font-weight: 700; border: 1px solid var(--border-neutral) !important; padding: 3px 8px !important; }
.player-erro { flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 10px; text-align: center; padding: 24px; background: #000; border-radius: 14px; }
.player-erro-icone { width: 52px; height: 52px; border-radius: 14px; display: grid; place-items: center; background: var(--live-soft); color: var(--live); }
.player-erro-icone svg { width: 24px; height: 24px; }
.player-erro strong { font-size: 16px; }
.player-erro p { margin: 0; color: var(--text-3); font-size: 13px; max-width: 320px; }
.player-erro-bt { margin-top: 6px; }

/* cabeçalho da aula (depois do player) */
.aula-cabeca { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; margin-top: 22px; }
.aula-cabeca-txt { min-width: 0; }
.aula-meta { display: inline-flex; align-items: center; gap: 8px; font-size: 11px; text-transform: uppercase; letter-spacing: .06em; font-weight: 700; color: var(--accent); background: var(--accent-soft); border: 1px solid var(--border); padding: 4px 11px; border-radius: 99px; margin-bottom: 6px; }
.aula-meta .dot { width: 6px; height: 6px; border-radius: 50%; background: var(--accent); }
@media (prefers-reduced-motion: no-preference) { .aula-meta .dot { animation: pulse 1.4s var(--e) infinite; } }
.aula-cabeca h1 { font-size: 28px; font-weight: 800; line-height: 1.15; }
.aula-cabeca .chip { flex-shrink: 0; cursor: pointer; display: inline-flex; align-items: center; gap: 7px; }
.aula-cabeca .chip svg { width: 13px; height: 13px; }

/* material desta aula (condicional) */
.aula-material { display: flex; align-items: center; justify-content: space-between; gap: 12px; height: 68px; margin-top: 18px; padding: 15px 16px 15px 18px; background: var(--bg-card); border: 1px solid var(--border-card); border-radius: 14px; cursor: pointer; text-decoration: none; transition: var(--t); }
.aula-material:hover { border-color: var(--accent); filter: brightness(1.05); }
.aula-material-txt { display: flex; flex-direction: column; min-width: 0; }
.aula-material-rotulo { font-size: 11px; text-transform: uppercase; letter-spacing: .04em; font-weight: 800; color: var(--accent); }
.aula-material-dica { font-size: 13.5px; color: var(--text); }
.aula-material-bt { flex: 0 0 auto; height: 36px; display: inline-flex; align-items: center; padding: 0 15px; border-radius: 9px; background: var(--accent); color: #0b0510; font-weight: 700; font-size: 13px; }

/* concluir e continuar (linha clicável) */
.ir-proxima { display: flex; align-items: center; gap: 14px; width: 100%; height: 70px; margin-top: 22px; padding: 15px 17px; border-radius: 16px; border: 1.5px solid rgba(139,92,246,.4); background: linear-gradient(100deg, var(--accent-soft), var(--bg-card) 65%); cursor: pointer; text-align: left; font-family: inherit; transition: var(--t); }
.ir-proxima:hover { filter: brightness(1.06); }
.ir-proxima-icone { width: 38px; height: 38px; border-radius: 12px; flex: 0 0 auto; display: grid; place-items: center; background: var(--accent-soft); color: var(--accent); }
.ir-proxima-icone svg { width: 16px; height: 16px; }
.ir-proxima-txt { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.ir-proxima-txt strong { font-size: 14.5px; color: var(--text); }
.ir-proxima-txt span { font-size: 12.5px; color: var(--text-3); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ir-proxima-seta { font-size: 18px; color: var(--text-3); flex: 0 0 auto; }

/* comentários */
.comentarios-card { margin-top: 30px; padding: 22px; border-top: 1px solid var(--border-soft); }
.comentarios-cabeca { display: flex; align-items: center; gap: 10px; margin-bottom: 14px; }
.comentarios-cabeca h2 { font-size: 16px; }
.comentarios-conta { font-size: 12px; padding: 2px 8px; border-radius: 99px; background: rgba(148,163,184,.14); color: var(--text-2); }
.comentario-novo { background: var(--surface); border: 1px solid var(--border-soft); border-radius: 15px; padding: 12px; display: flex; flex-direction: column; gap: 10px; }
.comentario-novo textarea { width: 100%; background: transparent; border: 0; resize: vertical; min-height: 44px; color: var(--text); font-size: 13.5px; font-family: inherit; }
.comentario-novo textarea:focus { outline: none; }
.comentario-novo .btn { align-self: flex-end; }
.comentarios-vazio { color: var(--text-3); font-size: 13px; margin: 16px 0 0; }
.comentarios-lista { display: flex; flex-direction: column; gap: 18px; margin-top: 18px; }
.comentario { display: flex; gap: 12px; }
.comentario-avatar { width: 32px; height: 32px; border-radius: 50%; flex: 0 0 auto; display: grid; place-items: center; background: var(--accent-soft); color: var(--accent); font-weight: 700; font-size: 13px; }
.comentario-corpo { min-width: 0; flex: 1; }
.comentario-cabecalho { display: flex; align-items: baseline; gap: 8px; }
.comentario-cabecalho strong { font-size: 13.5px; }
.comentario-cabecalho span { font-size: 11.5px; color: var(--text-3); }
.comentario-corpo p { margin: 3px 0 4px; font-size: 13px; line-height: 1.5; color: var(--text-2); }
.comentario-responder { background: 0; border: 0; color: var(--text-3); font-size: 12px; cursor: pointer; padding: 0; font-family: inherit; }
.comentario-responder:hover { color: var(--accent); }
.comentario-form { display: flex; gap: 8px; margin-top: 8px; }
.comentario-form input { flex: 1; background: var(--bg-raise); border: 1px solid var(--border-neutral); border-radius: 9px; padding: 8px 11px; color: var(--text); font-size: 13px; }
.comentario-form input:focus { outline: none; border-color: var(--accent); }
.comentario-respostas { margin-top: 12px; padding-left: 12px; border-left: 2px solid var(--border-soft); display: flex; flex-direction: column; gap: 12px; }
.comentario-aninhado .comentario-avatar { width: 26px; height: 26px; font-size: 11px; }

/* playlist lateral */
.playlist-card { width: 344px; border-radius: 18px; border: 1px solid var(--border-card); background: linear-gradient(180deg, #13141e, var(--bg-card)); position: sticky; top: 20px; overflow: hidden; }
.playlist-topo { padding: 16px 17px 15px; border-bottom: 1px solid var(--border-soft); }
.playlist-topo .eyebrow { font-size: 11px; text-transform: uppercase; letter-spacing: .08em; color: var(--text-3); font-weight: 700; margin: 0; }
.playlist-topo > strong { display: block; font-size: 15px; font-weight: 750; margin-top: 2px; }
.playlist-progresso { display: flex; align-items: center; gap: 10px; margin-top: 10px; }
.playlist-progresso-barra { flex: 1; height: 5px; border-radius: 99px; background: rgba(148,163,184,.18); overflow: hidden; }
.playlist-progresso-barra span { display: block; height: 100%; background: var(--accent); }
.playlist-progresso em { font-style: normal; font-size: 11.5px; color: var(--text-2); font-variant-numeric: tabular-nums; }
.playlist-lista { list-style: none; margin: 0; padding: 8px; display: flex; flex-direction: column; gap: 3px; }
.playlist-item { display: flex; align-items: center; gap: 12px; min-height: 63px; padding: 9px 10px; border-radius: 13px; border: 1px solid transparent; color: var(--text-3); text-decoration: none; cursor: pointer; transition: var(--t); }
.playlist-item:hover { background: rgba(255,255,255,.04); color: var(--text-2); }
.playlist-capa { position: relative; width: 76px; height: 43px; border-radius: 9px; flex: 0 0 auto; background: linear-gradient(150deg, rgba(139,92,246,.4), #0a0a0f); }
.playlist-capa-icone { position: absolute; left: 5px; bottom: 5px; width: 18px; height: 18px; border-radius: 50%; display: grid; place-items: center; }
.playlist-capa-play { background: rgba(255,255,255,.9); color: #0b0510; }
.playlist-capa-check { background: var(--emerald); color: #04120d; }
.playlist-capa-icone svg { width: 9px; height: 9px; }
.playlist-titulo { flex: 1; min-width: 0; font-size: 13px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.playlist-duracao { font-size: 11px; flex-shrink: 0; color: var(--text-3); }
.playlist-item.ativo { background: linear-gradient(100deg, var(--accent-soft), transparent); border-color: var(--accent); color: var(--text); }
.playlist-item.ativo .playlist-titulo { font-weight: 700; }
.playlist-item.ativo .playlist-duracao { color: var(--accent); }
.playlist-item.concluido .playlist-titulo { color: var(--text); }

@media (max-width: 980px) {
  .aula-detalhe-layout { grid-template-columns: 1fr; }
  .playlist-card { width: 100%; position: static; }
}

/* ============================================================================
   COMUNIDADE
   ============================================================================ */
/* título da Comunidade — degrau fixo (feed não precisa de display 46px) */
.com-title { font-size: 28px; line-height: 1.1; margin: 6px 0 6px; }
.comunidade-view-wrap .page-kicker { color: var(--text-3); letter-spacing: .14em; }

/* segmented control — retângulos suaves, não pílulas */
/* Abas da comunidade = BLOCOS uniformes (emoji + nome + badge), tamanhos iguais,
   grade centralizada; ativa em destaque roxo. */
.comunidade-tabs { display: grid; grid-template-columns: repeat(5, 1fr); gap: 10px; width: 100%; max-width: 100%; padding: 0; border: 0; background: transparent; overflow: visible; margin: var(--sp-5) 0 var(--sp-6); }
/* Card ilustrado: a ARTE é o herói — sangra até as bordas (cover) e o rótulo vira
   uma pílula escura (ícone + nome) apoiada na base, por cima da ilustração. */
.comunidade-tab { position: relative; display: flex; flex-direction: column; align-items: center; justify-content: flex-end; gap: 0; text-align: center; padding: 0 7px 9px; min-height: 152px; border-radius: 18px; border: 1px solid var(--border-neutral); background: var(--bg-card); color: var(--text-2); font-size: var(--fs-sm); font-weight: 600; cursor: pointer; white-space: nowrap; font-family: inherit; transition: var(--t); overflow: hidden; isolation: isolate; }
/* Ilustração-mascote de cada aba — background-image por [data-cm2tab] (o build
   reinlina o PNG). Preenche o card INTEIRO em cover; o arredondamento vem do
   overflow: hidden do card, então não sobra canto preto em lugar nenhum. */
.cm2-tab-ill { position: absolute; inset: 0; z-index: 0; background-size: cover; background-position: center 22%; background-repeat: no-repeat; }
/* véu só na base — o mínimo pra pílula descolar da arte sem escurecer o mascote */
.comunidade-tab::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 44%; z-index: 0; pointer-events: none; background: linear-gradient(180deg, transparent, rgba(6,5,12,.70)); }
.comunidade-tab[data-cm2tab="avisos"] .cm2-tab-ill { background-image: url("assets/comunidade/avisos.png"); }
.comunidade-tab[data-cm2tab="dicas"] .cm2-tab-ill { background-image: url("assets/comunidade/dicas.png"); }
.comunidade-tab[data-cm2tab="resultados"] .cm2-tab-ill { background-image: url("assets/comunidade/resultados.png"); }
.comunidade-tab[data-cm2tab="sugestoes"] .cm2-tab-ill { background-image: url("assets/comunidade/sugestoes.png"); }
.comunidade-tab[data-cm2tab="networking"] .cm2-tab-ill { background-image: url("assets/comunidade/networking.png"); }
.comunidade-tab:hover { color: var(--text); border-color: color-mix(in srgb, var(--accent) 55%, var(--border-neutral)); transform: translateY(-2px); }
.comunidade-tab:hover .cm2-tab-lbl { border-color: rgba(167,139,250,.55); }
/* aba ativa — MOLDURA NEON grossa e acesa (como o mockup aprovado) */
.comunidade-tab.ativa { color: var(--text); border-color: var(--accent);
  box-shadow: 0 0 0 2px rgba(167,139,250,.95), 0 0 26px -1px rgba(139,92,246,.65), 0 16px 40px -14px rgba(139,92,246,.75); }
/* Rótulo = PÍLULA escura arredondada com ÍCONE + NOME, na base do card.
   Na aba ativa vira violeta SÓLIDA com texto branco. */
.comunidade-tab .cm2-tab-lbl { position: relative; z-index: 1; display: inline-flex; align-items: center; justify-content: center; gap: 5px; max-width: 100%; padding: 5px 11px; border-radius: 99px; line-height: 1.15; font-size: 11.5px; font-weight: 700; letter-spacing: -.01em; color: var(--text);
  background: rgba(9,8,16,.86); border: 1px solid rgba(255,255,255,.11);
  box-shadow: 0 4px 16px -6px rgba(0,0,0,.9); transition: var(--t); }
.comunidade-tab .cm2-tab-ic { font-size: 12px; line-height: 1; flex: 0 0 auto; }
.comunidade-tab .cm2-tab-nome { min-width: 0; overflow: hidden; text-overflow: ellipsis; }
.comunidade-tab.ativa .cm2-tab-lbl { background: var(--accent); border-color: color-mix(in srgb, var(--accent) 55%, #fff); color: #fff;
  box-shadow: 0 6px 20px -6px rgba(139,92,246,.95), 0 0 0 1px rgba(139,92,246,.5); }
/* badge = pílula vermelha no canto sup. direito, POR CIMA da ilustração */
.comunidade-tab .tab-badge { position: absolute; top: 8px; right: 8px; z-index: 2; box-shadow: 0 2px 10px -2px rgba(0,0,0,.9), 0 0 0 1px rgba(0,0,0,.35); }
.tab-badge { font-size: 10px; font-weight: 700; min-width: 17px; height: 17px; padding: 0 5px; border-radius: 99px; background: var(--live); color: #fff; display: inline-flex; align-items: center; justify-content: center; font-variant-numeric: tabular-nums; }

.mural-grid { display: flex; flex-direction: column; gap: var(--sp-3); margin-top: var(--sp-4); }
.mural-pendentes { margin-bottom: var(--sp-2); }
.mural-vazio { display: flex; flex-direction: column; align-items: center; gap: var(--sp-3); text-align: center; padding: var(--sp-12) var(--sp-5); border: 1px dashed var(--border-neutral); border-radius: var(--r-card); color: var(--text-2); }
.mural-vazio p { margin: 0; font-size: var(--fs-sm); max-width: 34ch; line-height: 1.5; }
.mural-vazio-ic { width: 40px; height: 40px; border-radius: 12px; display: grid; place-items: center; background: var(--bg-raise); border: 1px solid var(--border-soft); color: var(--text-3); }
.mural-vazio-ic svg { width: 18px; height: 18px; }
.comunidade-view-wrap { max-width: 680px; }

/* composer */
.composer { padding: var(--sp-4); }
.composer-linha { display: flex; align-items: center; gap: var(--sp-3); }
.composer-linha input { flex: 1; min-width: 0; background: transparent; border: 0; color: var(--text); font-size: var(--fs-body); font-family: inherit; }
.composer-linha input::placeholder { color: var(--text-3); }
.composer-linha input:focus { outline: none; }
.composer-rodape { display: flex; align-items: center; gap: var(--sp-2); margin-top: var(--sp-3); }
.composer-anexo { width: 34px; height: 34px; border-radius: 9px; border: 1px solid var(--border-neutral); background: transparent; color: var(--text-3); cursor: pointer; display: grid; place-items: center; transition: var(--t); }
.composer-anexo:hover { color: var(--text-2); border-color: var(--border); background: var(--bg-raise); }
.composer-anexo svg { width: 16px; height: 16px; }
.composer-anexo.ativo { color: var(--accent); border-color: rgba(139,92,246,.4); background: var(--accent-soft); }
.composer-anexo.gravando { color: var(--live); border-color: var(--live); background: var(--live-soft); }
.composer-rodape .btn { margin-left: auto; }
.composer-acoes-esq { display: flex; gap: var(--sp-2); }
.composer-acoes-esq + .btn { margin-left: auto; }
/* composer oficial: faixa lateral de marca em vez de borda roxa inteira */
.composer-admin { border-color: var(--border-card); border-left: 3px solid var(--accent); }
.composer-gravando { display: flex; align-items: center; gap: 8px; margin-top: 10px; font-size: var(--fs-sm); color: var(--live); }
.ponto-gravando { width: 9px; height: 9px; border-radius: 50%; background: var(--live); box-shadow: 0 0 8px var(--live); }
@media (prefers-reduced-motion: no-preference) { .ponto-gravando { animation: pulse 1.4s var(--e) infinite; } }
.composer-arquivo-form { display: flex; align-items: center; gap: 8px; margin-top: 10px; flex-wrap: wrap; }
.composer-arquivo-form input { flex: 1; min-width: 160px; background: var(--bg-raise); border: 1px solid var(--border-neutral); border-radius: 9px; padding: 8px 11px; color: var(--text); font-size: 13px; }
.composer-arquivo-aviso { font-size: 11px; color: var(--text-3); width: 100%; }
.composer-enquete-form { margin-top: 12px; padding: 12px; border-radius: 12px; border: 1px solid var(--border-neutral); background: var(--bg-raise); display: flex; flex-direction: column; gap: 8px; }
.composer-enquete-topo { display: flex; align-items: center; justify-content: space-between; font-size: 13px; font-weight: 700; }
.composer-enquete-fechar, .composer-enquete-remover { width: 26px; height: 26px; border: 0; background: transparent; color: var(--text-3); cursor: pointer; border-radius: 7px; display: grid; place-items: center; }
.composer-enquete-fechar:hover, .composer-enquete-remover:hover { color: var(--live); background: var(--live-soft); }
.composer-enquete-fechar svg, .composer-enquete-remover svg { width: 13px; height: 13px; }
.composer-enquete-opcao { display: flex; align-items: center; gap: 8px; }
.composer-enquete-opcao input { flex: 1; background: var(--bg-card); border: 1px solid var(--border-neutral); border-radius: 8px; padding: 7px 10px; color: var(--text); font-size: 13px; }
.composer-enquete-add { align-self: flex-start; display: inline-flex; align-items: center; gap: 6px; background: transparent; border: 0; color: #A78BFA; font-size: var(--fs-sm); font-weight: 600; cursor: pointer; font-family: inherit; }
.composer-enquete-add svg { width: 12px; height: 12px; }
.composer-enquete-secreta { display: flex; align-items: center; gap: 8px; font-size: var(--fs-sm); color: var(--text-2); cursor: pointer; }
.composer-enquete-secreta input { accent-color: var(--accent); }

/* post card */
.post-card { padding: var(--sp-5); display: flex; flex-direction: column; gap: var(--sp-3); }
.post-card-head { display: flex; align-items: center; gap: var(--sp-3); }
.post-card-quem { min-width: 0; flex: 1; display: flex; flex-direction: column; gap: 1px; }
.post-card-nome { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.post-card-nome strong { font-size: 15px; font-weight: 600; letter-spacing: -0.01em; }
.selo-equipe { width: 15px; height: 15px; border-radius: 50%; background: var(--accent); color: #fff; display: grid; place-items: center; }
.selo-equipe svg { width: 9px; height: 9px; }
.post-card-tag { font-size: 11px; font-weight: 600; letter-spacing: .04em; text-transform: uppercase; color: #A78BFA; }
.post-card-data { font-size: var(--fs-meta); color: var(--text-3); font-variant-numeric: tabular-nums; }
.post-card-texto { margin: 0; font-size: var(--fs-body); line-height: 1.6; color: var(--text); font-weight: 400; white-space: pre-line; }
.post-card-divisor { height: 1px; background: var(--border-soft); margin-top: var(--sp-1); }
.post-card-rodape { display: flex; align-items: center; gap: var(--sp-2); }
.post-acao { display: inline-flex; align-items: center; gap: 6px; background: transparent; border: 1px solid transparent; border-radius: 8px; padding: 6px 10px; margin-left: -4px; color: var(--text-3); font-size: var(--fs-sm); font-weight: 500; cursor: pointer; font-family: inherit; font-variant-numeric: tabular-nums; transition: var(--t); }
.post-acao:hover { color: var(--text); background: var(--bg-raise); }
.post-acao svg { width: 16px; height: 16px; }
.post-acao.ativa { color: var(--live); }
.post-acao.ativa:hover { background: var(--live-soft); }

/* aviso oficial da Equipe — peso visual distinto (faixa de marca + fundo levemente elevado) */
.post-oficial { background: linear-gradient(180deg, rgba(139,92,246,.05), var(--bg-card) 120px); border-color: var(--border-card); border-left: 3px solid var(--accent); }

/* audio player mock */
.audio-player { display: flex; align-items: center; gap: 11px; padding: 9px 12px; border-radius: 12px; background: var(--bg-raise); border: 1px solid var(--border-soft); flex-wrap: wrap; }
.audio-play { width: 34px; height: 34px; border-radius: 50%; flex: 0 0 auto; border: 0; background: var(--accent); color: #0b0510; cursor: pointer; display: grid; place-items: center; }
.audio-play svg { width: 13px; height: 13px; }
.audio-onda { display: flex; align-items: center; gap: 2px; flex: 1; min-width: 0; height: 24px; overflow: hidden; }
.audio-onda span { width: 3px; border-radius: 2px; background: var(--border); flex: 0 0 auto; }
.audio-duracao { font-size: 12px; color: var(--text-2); font-variant-numeric: tabular-nums; }

/* arquivo card mock */
.arquivo-card { display: flex; align-items: center; gap: var(--sp-3); padding: 12px; border-radius: 12px; background: var(--bg-raise); border: 1px solid var(--border-neutral); flex-wrap: wrap; }
.arquivo-card-icone { width: 38px; height: 38px; border-radius: 10px; flex: 0 0 auto; display: grid; place-items: center; background: var(--accent-soft); color: var(--accent); }
.arquivo-card-icone svg { width: 18px; height: 18px; }
.arquivo-card-info { flex: 1; min-width: 0; }
.arquivo-card-topo { display: flex; align-items: center; gap: 8px; }
.arquivo-card-versao { font-size: 11px; font-weight: 700; padding: 2px 7px; border-radius: 6px; background: var(--accent-soft); color: #A78BFA; }
.arquivo-card-nome { font-size: 14px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.arquivo-card-meta { font-size: var(--fs-meta); color: var(--text-3); }
.arquivo-card-baixar { flex: 0 0 auto; display: inline-flex; align-items: center; gap: 7px; height: 34px; padding: 0 14px; border-radius: 9px; border: 0; background: var(--accent); color: #0b0510; font-weight: 700; font-size: 12.5px; cursor: pointer; }
.arquivo-card-baixar svg { width: 13px; height: 13px; }

/* enquete */
.enquete { display: flex; flex-direction: column; gap: 8px; }
.enquete-opcoes { display: flex; flex-direction: column; gap: 8px; }
.enquete-opcao { position: relative; display: flex; align-items: center; gap: 10px; padding: 11px 13px; border-radius: 10px; border: 1px solid var(--border-neutral); background: var(--bg-raise); color: var(--text); font-size: 14px; cursor: pointer; text-align: left; overflow: hidden; font-family: inherit; transition: var(--t); }
.enquete-opcao:not(:disabled):hover { border-color: var(--border); }
.enquete-opcao:disabled { cursor: default; }
/* barra de resultado neutra — o dado é o texto/percentual, não a cor */
.enquete-opcao-barra { position: absolute; left: 0; top: 0; bottom: 0; background: rgba(148,163,184,0.10); z-index: 0; transition: width .5s var(--e); }
.enquete-opcao-radio { position: relative; z-index: 1; width: 16px; height: 16px; border-radius: 50%; border: 2px solid var(--border-neutral); flex: 0 0 auto; display: grid; place-items: center; transition: var(--t); }
/* voto confirmado = esmeralda (semântica de confirmação), não roxo */
.enquete-opcao.votada .enquete-opcao-radio { border-color: var(--emerald); }
.enquete-opcao.votada .enquete-opcao-radio::after { content: ''; width: 8px; height: 8px; border-radius: 50%; background: var(--emerald); }
.enquete-opcao.votada { border-color: rgba(16,185,129,.35); }
.enquete-opcao.votada .enquete-opcao-barra { background: var(--emerald-soft); }
.enquete-opcao-texto { position: relative; z-index: 1; flex: 1; min-width: 0; }
.enquete-opcao-percentual { position: relative; z-index: 1; font-size: 13px; font-weight: 600; color: var(--text-2); font-variant-numeric: tabular-nums; }
.enquete-opcao.votada .enquete-opcao-percentual { color: var(--text); }
.enquete-total { margin: 2px 0 0; font-size: var(--fs-meta); color: var(--text-3); }

/* sugestão */
.sugestao-card { gap: var(--sp-4); }
.post-card.pendente { border-color: var(--border-card); border-left: 3px solid var(--warn); background: var(--bg-card); }
.sugestao-titulo { margin: 0; font-size: var(--fs-lg); font-weight: 600; line-height: 1.45; letter-spacing: -0.01em; }
.post-card-head .chip { margin-left: auto; flex: 0 0 auto; }
.voto-pill { display: inline-flex; align-items: center; gap: 6px; height: 34px; padding: 0 12px; border-radius: 8px; border: 1px solid var(--border-neutral); background: transparent; color: var(--text-2); font-size: var(--fs-sm); font-weight: 500; cursor: pointer; font-family: inherit; font-variant-numeric: tabular-nums; transition: var(--t); }
.voto-pill:hover { border-color: var(--border); color: var(--text); background: var(--bg-raise); }
.voto-pill svg { width: 15px; height: 15px; }
/* voto positivo = esmeralda (concordo); negativo = neutro discreto */
.voto-pill[data-svote="up"].ativa { color: var(--emerald); border-color: rgba(16,185,129,.4); background: var(--emerald-soft); }
.voto-pill[data-svote="down"].ativa { color: var(--text); border-color: var(--border); background: var(--bg-raise); }
.sugestao-votos { margin-left: auto; font-size: var(--fs-meta); color: var(--text-3); font-variant-numeric: tabular-nums; }
.sugestao-mod-btn { height: 36px; }
.btn.danger { background: transparent; border: 1px solid rgba(239,68,68,.4); color: var(--live); }
.btn.danger:hover { background: var(--live-soft); }

/* sub-abas de sugestões */
.sub-tabs { display: flex; gap: var(--sp-5); margin: var(--sp-4) 0 var(--sp-1); border-bottom: 1px solid var(--border-soft); }
.sub-tabs button { background: 0; border: 0; border-bottom: 2px solid transparent; padding: var(--sp-2) 2px; margin-bottom: -1px; color: var(--text-3); font-size: var(--fs-sm); font-weight: 500; cursor: pointer; font-family: inherit; transition: var(--t); }
.sub-tabs button:hover { color: var(--text-2); }
.sub-tabs button.ativa { color: var(--text); border-bottom-color: var(--accent); font-weight: 600; }

/* networking (chat) */
.chat-caixa { display: flex; flex-direction: column; height: min(600px, 68vh); overflow: hidden; padding: 0; }
.chat-topo { display: flex; align-items: center; justify-content: space-between; padding: 12px 15px; border-bottom: 1px solid var(--border-soft); }
.chat-online { display: inline-flex; align-items: center; gap: 7px; border-color: rgba(16,185,129,.3); background: var(--emerald-soft); color: var(--emerald); }
.ponto-online { width: 8px; height: 8px; border-radius: 50%; background: var(--emerald); box-shadow: 0 0 0 3px var(--emerald-soft); }
@media (prefers-reduced-motion: no-preference) { .ponto-online { animation: pulse 1.4s var(--e) infinite; } }
.chat-topo-acoes { display: flex; gap: 6px; }
.chat-icone { width: 32px; height: 32px; border-radius: 8px; border: 1px solid var(--border-neutral); background: transparent; color: var(--text-3); cursor: pointer; display: grid; place-items: center; }
.chat-icone:hover { color: var(--text-2); border-color: var(--border); background: var(--bg-raise); }
.chat-icone svg { width: 15px; height: 15px; }
.chat-mensagens { flex: 1; overflow-y: auto; padding: 16px 15px; display: flex; flex-direction: column; gap: 14px; }
.chat-grupo { display: flex; gap: 10px; align-items: flex-start; }
.chat-grupo.minha { flex-direction: row-reverse; }
.chat-grupo-corpo { display: flex; flex-direction: column; gap: 4px; max-width: 76%; min-width: 0; }
.chat-grupo.minha .chat-grupo-corpo { align-items: flex-end; }
.chat-handle { font-size: var(--fs-meta); color: var(--text-3); font-weight: 500; }
.chat-bolha { background: var(--bg-raise); border: 1px solid var(--border-soft); border-radius: 12px; border-top-left-radius: 4px; padding: 8px 11px; min-width: 0; }
.chat-grupo.minha .chat-bolha { background: var(--accent-soft); border-color: rgba(139,92,246,.22); border-top-left-radius: 12px; border-top-right-radius: 4px; }
.chat-bolha p { margin: 0; font-size: 14px; line-height: 1.45; color: var(--text); word-break: break-word; }
.chat-hora { font-size: 11px; color: var(--text-3); display: block; margin-top: 2px; font-variant-numeric: tabular-nums; }
.chat-form { display: flex; align-items: center; gap: 8px; padding: 11px 13px; border-top: 1px solid var(--border-soft); }
.chat-form .avatar-anel { width: 30px; height: 30px; }
.chat-form .avatar-anel span { font-size: 12px; }
.chat-form input { flex: 1; min-width: 0; background: var(--bg-raise); border: 1px solid var(--border-neutral); border-radius: 99px; padding: 9px 14px; color: var(--text); font-size: 14px; }
.chat-form input::placeholder { color: var(--text-3); }
.chat-form input:focus { outline: none; border-color: var(--accent); }
.chat-enviar { width: 38px; height: 38px; border-radius: 50%; flex: 0 0 auto; border: 0; background: var(--accent); color: #0b0510; cursor: pointer; display: grid; place-items: center; }
.chat-enviar:disabled { opacity: .4; cursor: default; }
.chat-enviar svg { width: 15px; height: 15px; }

/* modal de regras (networking) */
.modal-fundo { position: fixed; inset: 0; z-index: 120; background: rgba(4,5,10,.66); backdrop-filter: blur(6px); display: grid; place-items: center; padding: 20px; animation: fade .2s var(--e); }
.modal-conteudo { width: min(480px, 94vw); padding: 22px; }
.modal-cabecalho { display: flex; align-items: center; justify-content: space-between; margin-bottom: 14px; }
.modal-cabecalho h2 { font-size: 18px; }
.modal-lista { margin: 0; padding-left: 20px; display: flex; flex-direction: column; gap: 9px; color: var(--text-2); font-size: 13.5px; line-height: 1.5; }

/* ============================================================================
   SUPORTE
   ============================================================================ */
.suporte-page { max-width: 640px; }
.btn-abrir { display: flex; align-items: center; gap: 14px; width: 100%; text-align: left; padding: 18px 20px; margin-top: 20px; border-radius: 16px; border: 1px solid rgba(139,92,246,.32); background: var(--accent-soft); box-shadow: 0 0 30px rgba(139,92,246,.12); cursor: pointer; font-family: inherit; transition: var(--t); }
.btn-abrir:hover { transform: translateY(-2px); box-shadow: 0 0 40px rgba(139,92,246,.2); }
.btn-abrir-ic { width: 44px; height: 44px; border-radius: 12px; flex: 0 0 auto; display: grid; place-items: center; background: var(--accent); color: #0b0510; }
.btn-abrir-texto { display: flex; flex-direction: column; gap: 3px; }
.btn-abrir-texto strong { font-size: 15px; color: var(--text); }
.btn-abrir-texto span { font-size: 12.5px; color: var(--text-2); }
.selos-row { display: flex; flex-wrap: wrap; justify-content: center; gap: 3px; margin: 16px 0 0; font-size: 12px; color: var(--text-3); }
.selos-row span:not(:last-child)::after { content: "·"; margin-left: 3px; }
.minhas-conversas { margin-top: 30px; }
.minhas-conversas h2 { font-size: 16px; margin-bottom: 14px; }
.conversas-vazio { display: flex; flex-direction: column; align-items: center; gap: 8px; text-align: center; padding: 32px 20px; border: 1.5px dashed var(--border-neutral); border-radius: var(--r-card); }
.conversas-vazio-ic { width: 44px; height: 44px; border-radius: 50%; display: grid; place-items: center; background: var(--accent-soft); color: var(--accent); }
.conversas-vazio strong { font-size: 15px; }
.conversas-vazio p { margin: 0; font-size: 13px; color: var(--text-3); }
.tickets-lista { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 12px; }
.ticket-item { padding: 16px 18px; cursor: pointer; transition: var(--t); }
.ticket-item:hover { transform: translateY(-2px); border-color: var(--accent); }
.ticket-item-top { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 8px; }
.ticket-assunto { font-size: 14px; font-weight: 700; }
.ticket-ultima { margin: 0; font-size: 13px; color: var(--text-2); line-height: 1.5; }
.ticket-ultima strong { color: var(--text); }
.ticket-horario { font-size: 11.5px; color: var(--text-3); display: block; margin-top: 6px; }
.form-conversa { margin-top: 20px; display: flex; flex-direction: column; gap: 16px; }
.campo { display: flex; flex-direction: column; gap: 7px; padding: 12px 14px; border-radius: 12px; border: 1px solid var(--border-neutral); background: var(--bg-card); transition: var(--t); }
.campo:focus-within { border-color: var(--accent); }
.campo-label-row { display: flex; align-items: center; justify-content: space-between; }
.campo label { font-size: 12.5px; font-weight: 600; color: var(--text-2); }
.contador { font-size: 11px; color: var(--text-3); font-variant-numeric: tabular-nums; }
.contador-erro { color: var(--live); }
.campo input, .campo textarea { width: 100%; background: transparent; border: 0; color: var(--text); font-size: 14px; font-family: inherit; }
.campo input:focus, .campo textarea:focus { outline: none; }
.campo textarea { resize: vertical; min-height: 150px; line-height: 1.5; }
.form-erro { margin: 0; font-size: 13px; color: var(--live); }
.form-acoes { display: flex; justify-content: flex-end; gap: 10px; }

/* utilitários de botão usados por estas telas (aliases dos do protótipo) */
.btn.primary { background: var(--grad-accent); border: 0; color: #fff; box-shadow: 0 6px 18px rgba(139,92,246,.3); }
.btn.primary:disabled { opacity: .4; box-shadow: none; cursor: default; }
.btn.ghost { background: transparent; border: 1px solid var(--border-neutral); color: var(--text-2); }

/* botão "Editar" do admin no card de aula (aparece no hover, canto sup-dir) */
.aula-card-editar { position: absolute; top: 8px; right: 8px; opacity: 0; padding: 3px 9px; border-radius: 7px; border: 1px solid rgba(139,92,246,.5); background: rgba(139,92,246,.22); color: #fff; font-size: 11px; font-weight: 700; cursor: pointer; transition: opacity .18s ease; }
.aula-card:hover .aula-card-editar, .aula-card:focus-within .aula-card-editar { opacity: 1; }

/* ==========================================================================
   TELA AUTOMAÇÃO — 2 sub-abas (config-base + presets de reação)
   ========================================================================== */
.autab-subtabs { margin-top: 6px; }
.autab-body { padding-top: 18px; }
.au-rail-hint { font-size: 12.5px; color: var(--text-3); margin: 4px 0 14px; line-height: 1.5; }
.au-rail-hint b { color: var(--text-2); }

/* barra/lista de presets (grid) */
.au-presets { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 16px; margin-bottom: 24px; align-items: start; }

/* chips do editor de preset (cabeçalho) — presetChips/au-chip */
.au-chip { font-size: 10.5px; font-weight: 600; padding: 3px 8px; border-radius: 7px; border: 1px solid var(--border-neutral); color: var(--text-2); background: var(--bg-raise); white-space: nowrap; }
.au-chip.brand { border-color: rgba(139,92,246,0.35); color: var(--accent); background: var(--accent-soft); }
.au-chip.ok { border-color: rgba(16,185,129,0.35); color: var(--emerald); background: var(--emerald-soft); }
.au-chip.warn { border-color: rgba(245,158,11,0.32); color: var(--warn); background: var(--warn-soft); }
.au-chip.off { color: var(--text-3); }

/* ── card de config-base (redesenho) ─────────────────────────────────────── */
.presetc-card { background: var(--bg-card); border: 1px solid var(--border-card); border-radius: var(--r-card); padding: 18px 18px 16px; display: flex; flex-direction: column; gap: 14px; transition: var(--t); position: relative; }
.presetc-card:hover { border-color: var(--accent); box-shadow: 0 6px 22px rgba(0,0,0,0.28); }
.presetc-card.is-default { border-color: rgba(139,92,246,0.45); box-shadow: inset 0 0 0 1px rgba(139,92,246,0.30); }
.presetc-card.is-default:hover { box-shadow: inset 0 0 0 1px rgba(139,92,246,0.30), 0 6px 22px rgba(0,0,0,0.28); }
.presetc-card.editing { border-color: var(--accent); box-shadow: 0 0 0 1px var(--accent), 0 0 22px rgba(139,92,246,0.22); }

/* topo: título + selo PADRÃO */
.presetc-head { display: flex; align-items: center; gap: 10px; min-height: 24px; }
.presetc-name { flex: 1 1 auto; font-family: var(--font-head); font-size: 16.5px; font-weight: 600; letter-spacing: -0.01em; color: var(--text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.presetc-badge { flex: 0 0 auto; font-size: 9.5px; font-weight: 800; letter-spacing: .08em; padding: 3px 8px; border-radius: 999px; background: var(--accent-soft); color: var(--accent); text-transform: uppercase; border: 1px solid rgba(139,92,246,0.35); }

/* status: só estado (verde=on, cinza=off, roxo=origem, neutro=timer) */
.presetc-status { display: flex; flex-wrap: wrap; gap: 6px; }
.presetc-chip { font-size: 10.5px; font-weight: 600; padding: 4px 9px; border-radius: 999px; border: 1px solid var(--border-neutral); color: var(--text-2); background: var(--bg-raise); white-space: nowrap; }
.presetc-chip.brand { border-color: rgba(139,92,246,0.35); color: var(--accent); background: var(--accent-soft); }
.presetc-chip.ok { border-color: rgba(16,185,129,0.35); color: var(--emerald); background: var(--emerald-soft); }
.presetc-chip.off { color: var(--text-3); background: transparent; }

/* política de fim — selo rotulado, separado dos status */
.presetc-policy { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 9px 12px; border-radius: 10px; border: 1px solid var(--border-neutral); background: var(--bg-raise); }
.presetc-policy-k { font-size: 10px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--text-3); }
.presetc-policy-v { font-size: 11.5px; font-weight: 700; white-space: nowrap; }
.presetc-policy-v.warn { color: var(--warn); }
.presetc-policy-v.ok { color: var(--emerald); }

/* ações: primária Editar + secundárias, Excluir discreto no canto */
.presetc-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-top: 2px; }
.presetc-btn { flex: 1 1 auto; min-width: 92px; height: 34px; padding: 0 12px; display: inline-flex; align-items: center; justify-content: center; border-radius: 9px; border: 1px solid var(--border-neutral); background: transparent; color: var(--text-2); font-family: inherit; font-size: 12px; font-weight: 600; cursor: pointer; transition: var(--t); }
.presetc-btn:hover { border-color: var(--accent); color: var(--text); }
.presetc-btn.primary { border-color: var(--accent); background: var(--accent); color: #fff; }
.presetc-btn.primary:hover { background: var(--accent); box-shadow: 0 0 16px var(--accent-soft); }
.presetc-btn.is-default { border-color: rgba(139,92,246,0.4); color: var(--accent); background: var(--accent-soft); cursor: default; }
.presetc-del { flex: 0 0 auto; width: 34px; height: 34px; display: inline-flex; align-items: center; justify-content: center; border-radius: 9px; border: 1px solid transparent; background: transparent; color: var(--text-3); font-size: 13px; cursor: pointer; transition: var(--t); opacity: .7; }
.presetc-del:hover { opacity: 1; border-color: rgba(239,68,68,0.4); color: var(--live); background: var(--live-soft); }

/* estado vazio (nenhum preset aberto no editor) */
.au-empty { border: 1px dashed var(--border-neutral); border-radius: var(--r-card); padding: 40px 24px; text-align: center; color: var(--text-3); }
.au-empty-ic { font-size: 32px; margin-bottom: 10px; }
.au-empty b { display: block; font-family: var(--font-head); font-size: 16px; color: var(--text); margin-bottom: 6px; }
.au-empty p { font-size: 13px; max-width: 440px; margin: 0 auto; line-height: 1.55; }
.au-empty b, .au-empty p b { color: var(--text-2); }

/* editor de preset — tela cheia, nav interna à esquerda + área larga à direita */
.au-editor { background: var(--surface); border: 1px solid var(--border-card); border-radius: var(--r-card); overflow: hidden; }
.au-ed-head { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; padding: 16px 20px; border-bottom: 1px solid var(--border-soft); }
.au-ed-title { display: flex; flex-direction: column; gap: 4px; min-width: 200px; }
.au-ed-kicker { font-size: 10.5px; letter-spacing: .14em; text-transform: uppercase; color: var(--accent); font-weight: 700; }
.au-ed-name { background: var(--bg-raise); border: 1px solid var(--border-neutral); border-radius: 9px; padding: 8px 12px; color: var(--text); font-family: var(--font-head); font-size: 16px; font-weight: 600; min-width: 240px; }
.au-ed-name:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-soft); }
.au-ed-chips { display: flex; flex-wrap: wrap; gap: 6px; flex: 1; }
.au-ed-headbtns { display: flex; gap: 10px; margin-left: auto; }
.au-ed-body { display: grid; grid-template-columns: 232px 1fr; min-height: 520px; }
.au-ed-nav { border-right: 1px solid var(--border-soft); padding: 14px 12px; display: flex; flex-direction: column; gap: 2px; }
.au-ed-nav .au-tab { width: 100%; }
.au-ed-pane { max-height: 70vh; overflow-y: auto; padding: 22px 26px; }

@media (max-width: 900px) {
  .au-ed-body { grid-template-columns: 1fr; }
  .au-ed-nav { flex-direction: row; flex-wrap: wrap; border-right: 0; border-bottom: 1px solid var(--border-soft); }
  .au-ed-nav .au-tab { width: auto; }
  .au-ed-headbtns { margin-left: 0; }
}

/* dica do dropdown de preset no modal Novo Perfil */
.np-preset-hint { font-size: 11.5px; color: var(--text-3); line-height: 1.5; margin: -4px 0 4px; }
.np-sem-preset { margin: 2px 0 12px; }
.np-cta { width: 100%; }

/* ============================================================================
   15 — MINI-THUMBNAIL "no ar" + botão "Ver live" (card de perfil)
   Prévia CSS animada (leve), NÃO captura contínua da transmissão real.
   ========================================================================== */
.rc-thumb { display: grid; grid-template-columns: 96px 1fr; gap: 12px; align-items: center;
  padding: 10px; border-radius: 12px; border: 1px solid var(--border-neutral);
  background: linear-gradient(180deg, rgba(139,92,246,.05), rgba(0,0,0,.18)); }
.rc-thumb.live { border-color: rgba(139,92,246,.34); box-shadow: 0 0 18px -6px var(--glow); }
.rc-thumb-view { position: relative; aspect-ratio: 16/10; border-radius: 9px; overflow: hidden;
  background:
    radial-gradient(120% 90% at 30% 20%, color-mix(in srgb, var(--pc,#8B5CF6) 55%, transparent), transparent 60%),
    radial-gradient(120% 120% at 80% 90%, color-mix(in srgb, var(--pc,#8B5CF6) 38%, transparent), transparent 55%),
    linear-gradient(135deg, #14151E, #0A0B14);
  border: 1px solid rgba(255,255,255,.06); }
/* miniatura local (mesma fonte do mosaico) por baixo do brilho */
.rc-thumb-img { position: absolute; inset: 0; background-size: cover; background-position: center; }
.rc-thumb-sheen { position: absolute; inset: 0; background:
  linear-gradient(115deg, transparent 30%, rgba(255,255,255,.16) 48%, transparent 62%);
  transform: translateX(-120%); animation: rcSheen 3.4s var(--e) infinite; }
.rc-thumb.rising .rc-thumb-sheen { animation-duration: 2.1s; opacity: .7; }
@keyframes rcSheen { 0% { transform: translateX(-120%); } 55%,100% { transform: translateX(120%); } }
.rc-thumb-vign { position: absolute; inset: 0; box-shadow: inset 0 0 26px rgba(0,0,0,.5); }
.rc-thumb-play { position: absolute; inset: 0; margin: auto; width: 26px; height: 26px;
  display: grid; place-items: center; border-radius: 50%; color: #fff;
  background: rgba(8,8,12,.5); backdrop-filter: blur(3px); border: 1px solid rgba(255,255,255,.28); }
.rc-thumb-play svg { width: 12px; height: 12px; margin-left: 1px; }
.rc-thumb-tag { position: absolute; left: 5px; bottom: 5px; display: inline-flex; align-items: center;
  gap: 4px; padding: 2px 6px; border-radius: 99px; font-size: 8px; font-weight: 800; letter-spacing: .08em;
  color: #fff; background: rgba(8,8,12,.62); backdrop-filter: blur(4px); border: 1px solid rgba(255,255,255,.14); }
.rc-thumb.live .rc-tb-dot { width: 5px; height: 5px; border-radius: 50%; background: var(--live);
  box-shadow: 0 0 6px var(--live); animation: pulse 1.4s var(--e) infinite; }
.rc-thumb-side { display: flex; flex-direction: column; gap: 8px; min-width: 0; }
.rc-thumb-cap b { display: block; font-size: 12px; font-weight: 700; color: var(--text); }
.rc-thumb-cap small { display: block; font-size: 10.5px; color: var(--text-3); margin-top: 2px; line-height: 1.35; }
.rc-thumb-btn { align-self: flex-start; display: inline-flex; align-items: center; gap: 6px;
  height: 30px; padding: 0 12px; border-radius: 8px; cursor: pointer;
  border: 1px solid rgba(139,92,246,.4); background: var(--accent-soft); color: var(--accent);
  font-family: var(--font-body); font-size: 12px; font-weight: 700; transition: var(--t); }
.rc-thumb-btn svg { width: 13px; height: 13px; }
.rc-thumb-btn:hover { background: var(--accent); color: #fff; box-shadow: 0 0 16px -4px var(--glow); }

/* ============================================================================
   17 — BOTÃO-LIVRO FLUTUANTE (FAB dourado, canto inferior esquerdo, só em Aulas)
   ========================================================================== */
/* P1-15 — o FAB do Guia (z-140) flutuava sobre os modais (.overlay z-100 /
   .modal-fundo z-120). #modalRoot com filhos = modal aberto (mesmo sinal usado
   no JS: modalRoot.children.length). Some com o FAB enquanto há modal aberto. */
body:has(#modalRoot > *) .guia-fab { display: none; }
.guia-fab { position: fixed; right: 24px; bottom: 24px; z-index: 140; width: 58px; height: 58px;
  border-radius: 50%; border: none; cursor: pointer; display: grid; place-items: center;
  color: #3A2A05; background: var(--grad-gold);
  box-shadow: 0 10px 30px -8px rgba(224,168,13,.6), 0 0 0 1px rgba(255,255,255,.25) inset;
  animation: guiaFabIn .3s var(--pop); transition: transform .18s var(--pop), box-shadow .2s var(--e); }
.guia-fab svg { width: 26px; height: 26px; position: relative; z-index: 1; }
.guia-fab:hover { transform: translateY(-3px) scale(1.05); box-shadow: 0 16px 38px -8px rgba(224,168,13,.7), 0 0 0 1px rgba(255,255,255,.3) inset; }
.guia-fab:active { transform: translateY(-1px) scale(1.0); }
.guia-fab .guia-fab-glow { position: absolute; inset: -6px; border-radius: 50%; z-index: 0;
  background: radial-gradient(circle, var(--glow-gold), transparent 70%);
  animation: guiaGlow 2.6s var(--e) infinite; }
@keyframes guiaGlow { 0%,100% { opacity: .55; transform: scale(1); } 50% { opacity: .95; transform: scale(1.12); } }
@keyframes guiaFabIn { from { opacity: 0; transform: translateY(14px) scale(.8); } to { opacity: 1; transform: translateY(0) scale(1); } }

/* ============================================================================
   17 — MODAL "GUIA LIVEGURU" (TOC lateral + resumo + passos)
   ========================================================================== */
.guia-modal { width: min(880px, 94vw); max-height: 88vh; display: flex; flex-direction: column;
  background: var(--surface); border: 1px solid var(--border); border-radius: 18px; overflow: hidden;
  box-shadow: var(--shadow-pop); animation: fadeUp .26s var(--e); }
.guia-head { display: flex; align-items: center; gap: 12px; padding: 18px 20px;
  border-bottom: 1px solid var(--border-soft);
  background: linear-gradient(180deg, var(--gold-soft), transparent); }
.guia-brand { display: flex; align-items: center; gap: 12px; }
.guia-brand-ic { width: 40px; height: 40px; border-radius: 11px; display: grid; place-items: center;
  font-size: 20px; background: var(--grad-gold); box-shadow: 0 6px 18px -6px rgba(224,168,13,.6); }
.guia-brand b { display: block; font-family: var(--font-head); font-size: 17px; }
.guia-brand small { display: block; font-size: 11.5px; color: var(--text-3); margin-top: 1px; }
.guia-x { margin-left: auto; width: 34px; height: 34px; border-radius: 9px; border: 1px solid var(--border-neutral);
  background: transparent; color: var(--text-3); font-size: 20px; line-height: 1; cursor: pointer; transition: var(--t); }
.guia-x:hover { color: var(--text); border-color: var(--live); background: var(--live-soft); }
.guia-body { display: grid; grid-template-columns: 236px 1fr; min-height: 0; flex: 1; }
.guia-toc { border-right: 1px solid var(--border-soft); padding: 12px; display: flex; flex-direction: column;
  gap: 3px; overflow-y: auto; background: rgba(0,0,0,.14); }
.guia-toc-b { display: flex; align-items: center; gap: 10px; width: 100%; text-align: left;
  padding: 9px 11px; border-radius: 10px; border: 1px solid transparent; background: transparent;
  color: var(--text-2); font-family: var(--font-body); font-size: 13px; font-weight: 600; cursor: pointer; transition: var(--t); }
.guia-toc-ic { font-size: 15px; line-height: 1; flex: 0 0 auto; }
.guia-toc-b:hover { background: var(--bg-raise); color: var(--text); }
.guia-toc-b.active { background: var(--gold-soft); color: var(--text); border-color: rgba(245,197,66,.4);
  box-shadow: inset 2px 0 0 var(--gold); }
.guia-content { padding: 24px 28px; overflow-y: auto; min-width: 0; }
.guia-topic-head { display: flex; align-items: center; gap: 11px; }
.guia-topic-ic { width: 38px; height: 38px; border-radius: 10px; display: grid; place-items: center;
  font-size: 19px; background: var(--gold-soft); border: 1px solid rgba(245,197,66,.28); }
.guia-topic-head h3 { font-size: 22px; }
.guia-resumo { margin: 14px 0 0; color: var(--text-2); font-size: 14px; line-height: 1.65; }
.guia-passos-kicker { margin: 22px 0 12px; font-size: 10.5px; letter-spacing: .14em; text-transform: uppercase;
  color: var(--gold-2); font-weight: 800; }
.guia-passos { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 10px; }
.guia-passos li { display: flex; gap: 12px; align-items: flex-start; font-size: 13.5px; line-height: 1.6; color: var(--text); }
.guia-passos li b { color: var(--text); font-weight: 700; }
.guia-num { flex: 0 0 auto; width: 24px; height: 24px; border-radius: 50%; display: grid; place-items: center;
  font-family: var(--font-head); font-size: 12px; font-weight: 700; color: #3A2A05; background: var(--grad-gold);
  box-shadow: 0 3px 10px -3px rgba(224,168,13,.6); margin-top: 1px; }

@media (max-width: 720px) {
  .guia-body { grid-template-columns: 1fr; }
  .guia-toc { flex-direction: row; flex-wrap: wrap; border-right: 0; border-bottom: 1px solid var(--border-soft); }
  .guia-toc-b { width: auto; }
  .rc-thumb { grid-template-columns: 84px 1fr; }
}

/* =========================================================================
   FIXES DA REVISÃO CRÍTICA SaaS — estilos de apoio
   ========================================================================= */

/* 10 — login: mostrar senha + loading no botão */
.pass-wrap { position: relative; display: flex; align-items: center; }
.pass-wrap input { width: 100%; padding-right: 42px; }
.pass-toggle { position: absolute; right: 8px; top: 50%; transform: translateY(-50%); background: transparent; border: 0; cursor: pointer; font-size: 15px; opacity: .55; padding: 4px; line-height: 1; border-radius: 6px; }
.pass-toggle:hover, .pass-toggle.on { opacity: 1; }
.btn-login.loading { opacity: .75; cursor: progress; }

/* 11 — busca de perfis + empty state por grupo */
.prof-search { height: 32px; min-width: 220px; padding: 0 12px; border-radius: 8px; border: 1px solid var(--border-neutral); background: var(--bg-raise); color: var(--text); font-size: 12.5px; transition: var(--t); }
.prof-search::placeholder { color: var(--text-3); }
.prof-search:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-soft); }
.rc-empty { grid-column: 1 / -1; display: flex; align-items: center; justify-content: center; gap: 10px; padding: 30px 18px; border: 1px dashed var(--border-neutral); border-radius: 14px; background: var(--bg-raise); color: var(--text-3); font-size: 13px; text-align: center; }
.rc-empty-ic { font-size: 18px; opacity: .6; }

/* quick-win — rank do Dashboard clicável (reset de <button>) */
.rank-clickable { width: 100%; border: 0; background: transparent; text-align: left; cursor: pointer; padding: 4px 6px; border-radius: 8px; transition: var(--t); font: inherit; }
.rank-clickable:hover { background: var(--accent-soft); }

/* quick-win — passo concluído no "Como funciona" do Estúdio */
.st-step.done span { background: var(--emerald); box-shadow: 0 0 10px rgba(16,185,129,0.5); font-size: 0; }
.st-step.done span::after { content: '✓'; font-size: 12px; color: #fff; }
.st-step.done b { color: var(--emerald); }

/* 2 — toast com "Desfazer" */
.aulas-toast.has-undo { gap: 12px; }
.aulas-toast-undo { background: var(--accent-soft); border: 1px solid var(--accent); color: var(--accent); font-weight: 700; font-size: 12px; padding: 4px 12px; border-radius: 99px; cursor: pointer; }
.aulas-toast-undo:hover { background: var(--accent); color: #fff; }

/* 12 — tour interativo (coach-marks / spotlight) */
#tourRoot:empty { display: none; }
.tour-mask { position: fixed; inset: 0; z-index: 200; background: transparent; }
.tour-hole { position: fixed; z-index: 201; border-radius: 12px; box-shadow: 0 0 0 9999px rgba(4,5,10,0.72), 0 0 0 2px var(--accent), 0 0 22px 2px rgba(139,92,246,0.55) inset; pointer-events: none; transition: top .2s var(--e), left .2s var(--e), width .2s var(--e), height .2s var(--e); }
.tour-balloon { position: fixed; z-index: 202; width: min(324px, 92vw); background: var(--surface); border: 1px solid var(--border); border-radius: 16px; padding: 18px; box-shadow: var(--shadow-pop); animation: fadeUp .28s var(--e); }
.tour-count { font-size: 10.5px; letter-spacing: .12em; text-transform: uppercase; color: var(--accent); font-weight: 700; }
.tour-title { font-size: 16px; margin: 6px 0 6px; }
.tour-text { font-size: 12.5px; color: var(--text-2); line-height: 1.5; margin: 0 0 14px; }
.tour-actions { display: flex; align-items: center; justify-content: space-between; gap: 8px; flex-wrap: wrap; }
.tour-actions-left, .tour-actions-right { display: flex; align-items: center; gap: 8px; }
.tour-b { border: 1px solid var(--border-neutral); background: var(--bg-raise); color: var(--text-2); font-size: 12px; font-weight: 600; padding: 7px 12px; border-radius: 9px; cursor: pointer; transition: var(--t); }
.tour-b:hover { border-color: var(--accent); color: var(--text); }
.tour-skip { border: 0; background: transparent; color: var(--text-3); padding: 7px 4px; }
.tour-skip:hover { color: var(--text-2); }
.tour-next { background: linear-gradient(135deg, var(--accent), var(--accent-dark)); border-color: transparent; color: #fff; }
.tour-next:hover { box-shadow: 0 8px 20px -6px rgba(139,92,246,0.6); color: #fff; }
.guia-tour-btn { margin-left: auto; margin-right: 10px; background: linear-gradient(135deg, var(--accent), var(--accent-dark)); border: 0; color: #fff; font-size: 12px; font-weight: 700; padding: 8px 14px; border-radius: 10px; cursor: pointer; }
.guia-tour-btn:hover { box-shadow: 0 8px 20px -6px rgba(139,92,246,0.6); }

/* ==========================================================================
   LEADERBOARD — ranking gamificado (níveis + "estourando" + card de flex)
   Técnica: @property --lb-ang + conic-gradient p/ anéis animados; glow por
   box-shadow duplo; fogo no número via text-shadow multicamada; partículas
   em canvas SÓ nos tiers altos.
   ========================================================================== */
@property --lb-ang { syntax: '<angle>'; initial-value: 0deg; inherits: false; }
@keyframes lb-spin { to { --lb-ang: 360deg; } }
@keyframes lb-spin-slow { to { --lb-ang: 360deg; } }
@keyframes lb-shimmer { 0%,100% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } }
@keyframes lb-glow-pulse { 0%,100% { box-shadow: 0 0 0 1px rgba(245,197,66,.5), 0 0 14px 2px rgba(245,197,66,.35); } 50% { box-shadow: 0 0 0 1px rgba(245,197,66,.8), 0 0 26px 6px rgba(245,197,66,.6); } }
@keyframes lb-aura { 0%,100% { box-shadow: 0 0 22px 4px rgba(255,255,255,.5), 0 0 40px 12px rgba(167,139,250,.45), 0 0 60px 20px rgba(110,231,255,.25); } 50% { box-shadow: 0 0 30px 8px rgba(255,255,255,.75), 0 0 60px 18px rgba(255,110,199,.5), 0 0 90px 30px rgba(110,231,255,.4); } }
@keyframes lb-numpop { 0% { transform: scale(1); } 45% { transform: scale(1.15); } 100% { transform: scale(1); } }
@keyframes lb-flash { 0% { opacity: 0; } 12% { opacity: .9; } 100% { opacity: 0; } }
@keyframes lb-fire-num { 0%,100% { text-shadow: 0 0 4px rgba(255,170,60,.9), 0 -2px 6px rgba(255,90,0,.8), 0 -6px 12px rgba(255,60,0,.5); } 50% { text-shadow: 0 0 6px rgba(255,210,90,1), 0 -4px 10px rgba(255,120,0,.9), 0 -10px 18px rgba(255,40,0,.6); } }

.lb-wrap { max-width: 1120px; }

/* -- segmented toggle entre os dois quadros -- */
.lb-toggle { position: relative; display: inline-grid; grid-template-columns: 1fr 1fr; gap: 4px; padding: 4px; margin: 4px 0 26px; background: var(--bg-card); border: 1px solid var(--border-neutral); border-radius: var(--r-pill); }
.lb-tab { position: relative; z-index: 1; border: 0; background: transparent; color: var(--text-2); font-family: var(--font-head); font-size: 13px; font-weight: 700; padding: 9px 20px; border-radius: var(--r-pill); cursor: pointer; transition: color .18s var(--e); white-space: nowrap; }
.lb-tab.on { color: #fff; }
.lb-toggle-ind { position: absolute; z-index: 0; top: 4px; left: 4px; width: calc(50% - 4px); height: calc(100% - 8px); border-radius: var(--r-pill); background: var(--grad-accent); box-shadow: 0 6px 16px -6px var(--glow); transition: transform .28s var(--pop); }
.lb-toggle-ind.to-right { transform: translateX(100%); }

/* -- pódio top 3 -- */
.lb-podium { display: grid; grid-template-columns: repeat(3, 1fr); align-items: end; gap: 14px; margin-bottom: 22px; }
.lb-pod-cell { display: flex; flex-direction: column; align-items: center; gap: 7px; padding: 20px 12px 16px; background: var(--surface); border: 1px solid var(--border-card); border-radius: var(--r-card); position: relative; }
.lb-pod-cell.pod-1 { margin-bottom: 20px; border-color: rgba(245,197,66,.4); background: linear-gradient(180deg, rgba(245,197,66,.10), rgba(13,14,21,.4)); }
.lb-pod-crown { font-size: 20px; line-height: 1; color: var(--text-3); font-weight: 800; }
.lb-pod-cell.pod-1 .lb-pod-crown { color: var(--gold); font-size: 26px; filter: drop-shadow(0 0 8px rgba(245,197,66,.6)); }
.lb-pod-name { font-family: var(--font-head); font-weight: 700; font-size: 15px; color: var(--text); margin-top: 2px; }
.lb-pod-nivel { font-size: 11px; font-weight: 700; padding: 2px 9px; border-radius: var(--r-pill); }
.lb-pod-val { font-family: var(--font-head); font-weight: 800; font-size: 17px; color: #fff; font-variant-numeric: tabular-nums; }
.lb-pod-base { font-size: 11px; color: var(--text-3); font-weight: 700; }

/* -- lista / linhas -- */
.lb-board { display: flex; flex-direction: column; gap: 8px; }
.lb-row { display: grid; grid-template-columns: 34px auto 1fr auto auto; align-items: center; gap: 14px; padding: 12px 16px; background: var(--bg-card); border: 1px solid var(--border-soft); border-radius: var(--r-card); transition: border-color .18s var(--e), transform .18s var(--e); }
.lb-row:hover { border-color: var(--border-neutral); transform: translateX(2px); }
.lb-row.rank-1 { border-color: rgba(245,197,66,.35); }
.lb-pos { text-align: center; font-family: var(--font-head); font-weight: 800; font-size: 15px; color: var(--text-3); font-variant-numeric: tabular-nums; }
.lb-medal { display: inline-flex; align-items: center; justify-content: center; width: 26px; height: 26px; border-radius: 50%; font-size: 13px; color: #1a1206; }
.lb-medal.m1 { background: linear-gradient(160deg, #ffe082, #f5c542); box-shadow: 0 0 12px rgba(245,197,66,.5); }
.lb-medal.m2 { background: linear-gradient(160deg, #e8edf3, #b9c2cf); }
.lb-medal.m3 { background: linear-gradient(160deg, #e0a679, #b06f3e); color: #23130a; }

.lb-id { min-width: 0; }
.lb-name { display: flex; align-items: center; gap: 8px; font-family: var(--font-head); font-weight: 700; font-size: 15px; color: var(--text); }
.lb-nivel-tag { font-size: 10.5px; font-weight: 700; padding: 2px 8px; border-radius: var(--r-pill); letter-spacing: .02em; }
.lb-sub { font-size: 12px; color: var(--text-3); margin-top: 2px; }
.lb-sub-meta { color: var(--text-3); }
.lb-tempo { display: inline-flex; align-items: center; gap: 4px; color: var(--text-3); }
.lb-tempo svg { width: 13px; height: 13px; opacity: .8; }

.lb-metric { text-align: right; display: flex; flex-direction: column; align-items: flex-end; gap: 4px; }
.lb-gmv { position: relative; font-family: var(--font-head); font-weight: 800; font-size: 18px; color: #fff; font-variant-numeric: tabular-nums; }
.lb-gmv-num { position: relative; display: inline-block; }
.lb-ember { position: absolute; inset: -8px -6px -2px -6px; width: auto; height: auto; pointer-events: none; z-index: 0; }
.lb-fogo-badge { font-size: 10px; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; padding: 2px 8px; border-radius: var(--r-pill); }

.lb-flex-btn { border: 1px solid var(--border-neutral); background: var(--bg-raise); color: var(--text-2); font-family: var(--font-head); font-weight: 700; font-size: 12px; padding: 7px 13px; border-radius: var(--r-btn); cursor: pointer; transition: var(--t); }
.lb-flex-btn:hover { color: #fff; border-color: var(--accent); background: var(--accent-soft); }

/* ==== AVATAR + ESCADA DE NÍVEIS (anel) ==================================== */
.lb-avatar { position: relative; width: 48px; height: 48px; border-radius: 50%; display: grid; place-items: center; flex: none; }
.lb-avatar--lg { width: 72px; height: 72px; }
.lb-avatar-ini { position: relative; z-index: 2; width: calc(100% - 8px); height: calc(100% - 8px); border-radius: 50%; display: grid; place-items: center; background: var(--avatar-bg); color: var(--avatar-text); font-family: var(--font-head); font-weight: 700; font-size: 15px; }
.lb-avatar--lg .lb-avatar-ini { font-size: 22px; }
.lb-fx { position: absolute; inset: -12px; width: calc(100% + 24px); height: calc(100% + 24px); z-index: 1; pointer-events: none; }
/* o anel é o ::before (borda em gradiente/conic) */
.lb-avatar::before { content: ""; position: absolute; inset: 0; border-radius: 50%; z-index: 0; }

/* Iniciante — cinza fosco, sem brilho */
.nivel-iniciante::before { border: 2px solid rgba(148,163,184,.38); }
/* Bronze — bronze escovado */
.nivel-bronze::before { padding: 2px; background: conic-gradient(from 210deg, #7a4a25, #c9853f, #8a552b, #b3702f, #7a4a25); -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); -webkit-mask-composite: xor; mask-composite: exclude; }
/* Prata — polida, shimmer lento */
.nivel-prata::before { padding: 2px; background: linear-gradient(120deg, #8b95a3, #eef2f7, #aab4c2, #f4f7fb, #8b95a3); background-size: 220% 220%; animation: lb-shimmer 5.5s ease-in-out infinite; -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); -webkit-mask-composite: xor; mask-composite: exclude; }
/* Ouro — ouro + glow pulsante */
.nivel-ouro::before { padding: 2.5px; background: conic-gradient(from 200deg, #b9822b, #ffe082, #f5c542, #ffd75e, #b9822b); animation: lb-glow-pulse 2.6s ease-in-out infinite; -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); -webkit-mask-composite: xor; mask-composite: exclude; }
/* Platina — gema ciano, conic girando devagar */
.nivel-platina::before { padding: 2.5px; background: conic-gradient(from var(--lb-ang), #4be3d0, #bffcff, #38b6ff, #d6f6ff, #4be3d0); animation: lb-spin-slow 7s linear infinite; -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); -webkit-mask-composite: xor; mask-composite: exclude; }
.nivel-platina { box-shadow: 0 0 14px -2px rgba(75,227,208,.4); }
/* Diamante v2 — cristal azul-gelo facetado, reflexo violeta, glint frio */
.nivel-diamante::before { padding: 3px; background: conic-gradient(from 230deg,
  #6EE7F9 0deg, #C7F0FF 24deg, #6EE7F9 46deg,
  #818CF8 88deg, #A78BFA 118deg, #818CF8 142deg,
  #38BDF8 190deg, #9BE7FF 226deg, #6EE7F9 258deg,
  #A78BFA 314deg, #C7F0FF 338deg, #6EE7F9 360deg);
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); -webkit-mask-composite: xor; mask-composite: exclude; }
.nivel-diamante { box-shadow: 0 0 9px -3px rgba(110,231,249,.4), 0 0 15px 1px rgba(129,140,248,.13); }
.lb-avatar.nivel-diamante::after, .tier-av.nivel-diamante::after {
  content: ""; position: absolute; inset: 0; border-radius: 50%; z-index: 1; pointer-events: none;
  background: conic-gradient(from 0deg, transparent 0deg 328deg, rgba(255,255,255,.06) 336deg, rgba(234,251,255,.85) 348deg, transparent 360deg);
  animation: lb-glint 4.6s linear infinite; }
@keyframes lb-glint { to { transform: rotate(360deg); } }
/* Lenda — FONTE DE LUZ: anel branco-quente + aura multicolor pulsante */
.nivel-lenda::before { padding: 3px; background: conic-gradient(from var(--lb-ang), #ffffff, #fff2c4, #ffffff, #ffe6f2, #ffffff); animation: lb-spin 2.8s linear infinite; -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); -webkit-mask-composite: xor; mask-composite: exclude; }
.nivel-lenda { animation: lb-aura 3s ease-in-out infinite; }
.nivel-lenda .lb-avatar-ini { background: radial-gradient(circle at 50% 40%, #2a2440, #14151e); color: #fff; }
/* GuruBlack v2 — EVOLUÍDO: obsidiana + aura roxa que respira + fogo vivo +
   alma espectral subindo. Aura/fogo no ::after do WRAPPER (box-shadow pulsa via
   scale, sem animar box-shadow direto). Wisp no ::after do inner -ini. */
.nivel-gurublack::before { padding: 3px; background: conic-gradient(from 210deg,
  #0A0A0F 0deg, #16101E 38deg, rgba(124,45,91,.95) 60deg, #120D18 82deg,
  #0A0A0F 138deg, rgba(76,29,149,.85) 168deg, #0F0B16 192deg,
  #0A0A0F 248deg, rgba(185,28,75,.9) 284deg, #150E1C 308deg, #0A0A0F 360deg);
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); -webkit-mask-composite: xor; mask-composite: exclude; }
.nivel-gurublack { box-shadow: 0 0 0 1px rgba(185,28,75,.28); }
/* AURA ROXA FORTE + FOGO — box-shadow roxo pulsa pelo scale do ::after */
.lb-avatar.nivel-gurublack::after, .tier-av.nivel-gurublack::after {
  content: ""; position: absolute; inset: -3px; border-radius: 50%; z-index: 1; pointer-events: none;
  background:
    radial-gradient(34% 26% at 20% 80%, rgba(244,63,94,.72), transparent 70%),
    radial-gradient(30% 22% at 80% 24%, rgba(185,28,75,.7),  transparent 70%),
    radial-gradient(26% 20% at 62% 88%, rgba(124,45,91,.62), transparent 70%),
    radial-gradient(22% 18% at 40% 14%, rgba(147,51,234,.5), transparent 72%);
  box-shadow:
    0 0 22px 5px rgba(124,58,237,.5),
    0 0 54px 16px rgba(76,29,149,.34),
    0 0 14px 2px rgba(185,28,75,.42);
  animation: lb-brasa 5.5s ease-in-out infinite; }
@keyframes lb-brasa {
  0%,100% { opacity: .5;  transform: scale(1)    rotate(0deg); }
  50%     { opacity: .92; transform: scale(1.08) rotate(15deg); } }
/* GHOST WISP — alma roxa translúcida subindo (opacity + translateY); blur estático */
.nivel-gurublack .lb-avatar-ini::after, .nivel-gurublack .tier-av-ini::after {
  content: ""; position: absolute; left: 50%; top: -14%;
  width: 34%; height: 60%; z-index: 3; pointer-events: none;
  border-radius: 50% 50% 42% 42% / 62% 62% 40% 40%;
  transform: translate(-50%, 12%) scaleY(.7); transform-origin: 50% 100%;
  background: radial-gradient(circle at 50% 30%, rgba(167,139,250,.5), rgba(124,58,237,.16) 55%, transparent 72%);
  filter: blur(.5px); opacity: 0;
  animation: lb-ghost-wisp 4.2s ease-in-out infinite; }
@keyframes lb-ghost-wisp {
  0%   { opacity: 0;   transform: translate(-50%, 12%)  scaleY(.7); }
  28%  { opacity: .55; }
  70%  { opacity: .32; }
  100% { opacity: 0;   transform: translate(-50%, -46%) scaleY(1.15); } }
.nivel-gurublack .lb-avatar-ini, .nivel-gurublack .tier-av-ini { background: radial-gradient(circle at 50% 35%, #17101F, #08090F); color: #E7D8E1; }

/* Guru — BÁSICO (NOVO): mesma DNA preto+fogo, porém CONTIDO. Aura fraca/keyline,
   poucos embers, chama calma, SEM ghost wisp. Lado a lado, o preto é o upgrade. */
.nivel-guru::before { padding: 2px; background: conic-gradient(from 210deg,
  #0C0A12 0deg, #171019 60deg, rgba(139,58,98,.6) 96deg, #140E19 150deg,
  #0C0A12 210deg, rgba(120,60,120,.35) 270deg, #140E19 312deg, #0C0A12 360deg);
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); -webkit-mask-composite: xor; mask-composite: exclude; }
.nivel-guru { box-shadow: 0 0 0 1px rgba(139,58,98,.2); }
.lb-avatar.nivel-guru::after, .tier-av.nivel-guru::after {
  content: ""; position: absolute; inset: -2px; border-radius: 50%; z-index: 1; pointer-events: none;
  background:
    radial-gradient(28% 20% at 26% 78%, rgba(180,80,110,.42), transparent 72%),
    radial-gradient(24% 18% at 74% 30%, rgba(139,58,98,.4),  transparent 72%);
  box-shadow: 0 0 10px 1px rgba(139,58,98,.25);
  animation: lb-guru-ember 4.8s ease-in-out infinite; }
@keyframes lb-guru-ember {
  0%,100% { opacity: .28; transform: scale(1); }
  50%     { opacity: .5;  transform: scale(1.02); } }
.nivel-guru .lb-avatar-ini, .nivel-guru .tier-av-ini { background: radial-gradient(circle at 50% 38%, #1C1421, #0C0A12); color: #E6D2DC; }

/* tags de nível (cores) */
.tag-iniciante { background: rgba(148,163,184,.14); color: #aeb8c6; }
.tag-bronze { background: rgba(201,133,63,.16); color: #d69a5e; }
.tag-prata { background: rgba(210,220,232,.14); color: #d3dbe6; }
.tag-ouro { background: rgba(245,197,66,.16); color: #f5c542; }
.tag-platina { background: rgba(75,227,208,.15); color: #6ff0e2; }
.tag-diamante { background: rgba(110,231,249,.14); color: #A5E8FF; }
.tag-lenda { background: linear-gradient(90deg, rgba(255,110,199,.2), rgba(110,231,255,.2)); color: #fff; }
.tag-guru { background: linear-gradient(90deg, rgba(139,58,98,.18), rgba(90,50,110,.12)); color: #DCA9BD; }
.tag-gurublack { background: linear-gradient(90deg, rgba(124,45,91,.24), rgba(76,29,149,.18)); color: #F0BFCF; }

/* ==== TIER UBÍQUO — o nível aparece na topbar e na comunidade ============== */
/* Avatar reutilizável com a borda de nível (reaproveita os anéis .nivel-*::before). */
.tier-av { position: relative; border-radius: 50%; display: inline-grid; place-items: center; flex: none; vertical-align: middle; }
/* FIX P2 — sem este content:"" o anel .nivel-*::before nunca renderizava fora do Leaderboard */
.tier-av::before { content: ""; position: absolute; inset: 0; border-radius: 50%; z-index: 0; }
.tier-av-ini { position: relative; z-index: 2; width: calc(100% - 6px); height: calc(100% - 6px); border-radius: 50%; display: grid; place-items: center; background: var(--avatar-bg); color: var(--avatar-text); font-family: var(--font-head); font-weight: 700; font-size: 12px; letter-spacing: .01em; }
.tier-av[style*="44px"] .tier-av-ini { font-size: 15px; }

/* Emblema do nível: o "modelo" fica mais elaborado conforme sobe (ponto→coroa). */
.tier-emblema { display: inline-flex; width: 1em; height: 1em; line-height: 0; }
.tier-emblema svg { width: 100%; height: 100%; display: block; }
.tier-emblema.nivel-iniciante { color: #94a3b8; }
.tier-emblema.nivel-bronze { color: #c9853f; }
.tier-emblema.nivel-prata { color: #cbd5e1; }
.tier-emblema.nivel-ouro { color: #f5c542; }
.tier-emblema.nivel-platina { color: #4be3d0; }
.tier-emblema.nivel-diamante { color: #6EE7F9; filter: drop-shadow(0 0 2.5px rgba(110,231,249,.65)); }
.tier-emblema.nivel-lenda { color: #ffe9a8; filter: drop-shadow(0 0 3px rgba(255,220,140,.75)); }
.tier-emblema.nivel-guru { color: #C25E7E; filter: drop-shadow(0 0 2px rgba(194,94,126,.5)); }
.tier-emblema.nivel-gurublack { color: #E11D48; filter: drop-shadow(0 0 3.5px rgba(225,29,72,.7)); }
/* Emblema no canto do avatar — escala com o tamanho do avatar (%). */
.tier-emblema--corner { position: absolute; z-index: 3; right: -5%; bottom: -5%; width: 46%; height: 46%; padding: 9%; border-radius: 50%; background: #0d0f16; box-shadow: 0 0 0 1.5px rgba(0,0,0,.55); }

/* Selo de nível ao lado do nome (comunidade). */
.tier-tag { display: inline-flex; align-items: center; gap: 4px; padding: 1px 7px 1px 5px; margin-left: 6px; border-radius: 999px; font-size: 10.5px; font-weight: 700; letter-spacing: .02em; vertical-align: middle; color: #aeb8c6; background: rgba(148,163,184,.12); }
.tier-tag .tier-emblema { width: 11px; height: 11px; }
.tier-tag-txt { color: inherit; }
.tier-tag.nivel-bronze { color: #d69a5e; background: rgba(201,133,63,.15); }
.tier-tag.nivel-prata { color: #d3dbe6; background: rgba(210,220,232,.13); }
.tier-tag.nivel-ouro { color: #f5c542; background: rgba(245,197,66,.15); }
.tier-tag.nivel-platina { color: #6ff0e2; background: rgba(75,227,208,.14); }
.tier-tag.nivel-diamante { color: #A5E8FF; background: rgba(110,231,249,.13); }
.tier-tag.nivel-lenda { color: #fff; background: linear-gradient(90deg, rgba(255,110,199,.18), rgba(110,231,255,.18)); }
.tier-tag.nivel-guru { color: #DCA9BD; background: linear-gradient(90deg, rgba(139,58,98,.16), rgba(90,50,110,.12)); }
.tier-tag.nivel-gurublack { color: #F0BFCF; background: linear-gradient(90deg, rgba(124,45,91,.22), rgba(76,29,149,.17)); }

/* Chip do nível na TOPBAR (foto + nível + barra de progressão por faturamento). */
.tb-tier { display: inline-flex; align-items: center; gap: 9px; padding: 3px 11px 3px 3px; border: 1px solid var(--border-soft); border-radius: 999px; background: var(--bg-card); cursor: pointer; transition: border-color .15s, transform .15s; }
.tb-tier:hover { border-color: var(--border); transform: translateY(-1px); }
.tb-tier .tier-av { width: 34px; height: 34px; }
.tb-tier-meta { display: flex; flex-direction: column; gap: 4px; line-height: 1; }
.tb-tier-nome { display: inline-flex; align-items: center; gap: 4px; font-family: var(--font-head); font-size: 11px; font-weight: 700; color: var(--text); }
.tb-tier-nome .tier-emblema { width: 12px; height: 12px; }
.tb-tier-prog { display: block; width: 78px; height: 4px; border-radius: 999px; background: rgba(148,163,184,.22); overflow: hidden; }
.tb-tier-prog i { display: block; height: 100%; border-radius: 999px; background: linear-gradient(90deg, var(--accent), #6d28d9); }

/* Popover de progressão (a trilha de níveis por faturamento). */
.tier-pop { position: fixed; z-index: 260; width: 306px; max-width: calc(100vw - 24px); padding: 16px; border-radius: 16px; background: var(--bg-card); border: 1px solid var(--border); box-shadow: 0 22px 54px -14px rgba(0,0,0,.65); animation: tierPopIn .16s ease; }
@keyframes tierPopIn { from { opacity: 0; transform: translateY(-6px); } to { opacity: 1; transform: none; } }
.tier-pop-head { display: flex; align-items: center; gap: 12px; }
.tier-pop-head .tier-av { width: 44px; height: 44px; }
.tier-pop-nivel { display: inline-flex; align-items: center; gap: 6px; font-family: var(--font-head); font-weight: 800; font-size: 16px; color: var(--text); }
.tier-pop-nivel .tier-emblema { width: 16px; height: 16px; }
.tier-pop-sub { font-size: 12px; color: var(--text-2); margin-top: 3px; }
.tier-pop-next { margin: 14px 0 4px; font-size: 12.5px; color: var(--text-2); }
.tier-pop-next b { color: var(--text); }
.tier-pop-bar { display: block; height: 6px; border-radius: 999px; background: rgba(148,163,184,.2); overflow: hidden; margin-top: 8px; }
.tier-pop-bar i { display: block; height: 100%; border-radius: 999px; background: linear-gradient(90deg, var(--accent), #6d28d9); }
.tier-pop-trilha { display: flex; flex-direction: column; gap: 1px; margin-top: 12px; border-top: 1px solid var(--border-soft); padding-top: 10px; }
.tier-step { display: flex; align-items: center; gap: 9px; padding: 5px 7px; border-radius: 9px; font-size: 12px; color: var(--text-2); }
.tier-step.ok { color: var(--text); }
.tier-step.atual { background: var(--accent-soft); }
.tier-step-emb { width: 15px; height: 15px; display: inline-flex; flex: none; }
.tier-step-emb .tier-emblema { width: 100%; height: 100%; }
.tier-step-nome { flex: 1; font-weight: 600; }
.tier-step-min { font-variant-numeric: tabular-nums; opacity: .8; font-size: 11px; }
.tier-step-badge { font-size: 9.5px; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; color: var(--accent); background: var(--accent-soft); padding: 2px 6px; border-radius: 999px; }
.tier-step-check { color: var(--emerald); font-weight: 800; }
.tier-pop-foot { margin-top: 12px; font-size: 11px; line-height: 1.55; color: var(--text-2); opacity: .85; }

/* ==== "ESTOURANDO" — fogo por marco de live =============================== */
/* Faísca (1k) — glow laranja no número */
.gmv--faisca .lb-gmv-num { color: #ffd8a3; text-shadow: 0 0 8px rgba(255,150,40,.55); }
.fogo-faisca { background: rgba(255,170,60,.16); color: #ffcf8f; }
/* Fogo (5k) — chama no número, pop ao entrar */
.gmv--fire .lb-gmv-num { color: #ffe3b0; animation: lb-fire-num .18s ease-in-out infinite, lb-numpop .5s var(--pop) 1; }
.fogo-fire { background: rgba(255,110,0,.18); color: #ffb26a; }
/* Inferno (20k) — fogo mais forte + embers (canvas) */
.gmv--inferno .lb-gmv-num { color: #fff0d0; animation: lb-fire-num .16s ease-in-out infinite, lb-numpop .5s var(--pop) 1; }
.fogo-inferno { background: rgba(255,60,0,.2); color: #ff8a4a; box-shadow: 0 0 12px -2px rgba(255,80,0,.5); }
/* Supernova (50k) — branco-azulado, aura */
.gmv--supernova .lb-gmv-num { color: #fff; animation: lb-numpop .5s var(--pop) 1; text-shadow: 0 0 10px rgba(190,225,255,.9), 0 0 22px rgba(120,180,255,.7); }
.fogo-supernova { background: linear-gradient(90deg, rgba(120,180,255,.25), rgba(255,255,255,.2)); color: #dcecff; box-shadow: 0 0 16px -2px rgba(150,200,255,.6); }

/* ==== LEGENDA ============================================================= */
.lb-legend { margin-top: 26px; padding: 18px 20px; background: var(--bg-card); border: 1px solid var(--border-soft); border-radius: var(--r-card); }
.lb-legend-t { font-family: var(--font-head); font-weight: 700; font-size: 12px; color: var(--text-2); margin-bottom: 10px; letter-spacing: .02em; }
.lb-legend-row { display: flex; flex-wrap: wrap; gap: 10px; }
.lb-leg-chip { display: inline-flex; align-items: center; gap: 7px; font-size: 12px; font-weight: 600; color: var(--text-2); padding: 5px 11px; border-radius: var(--r-pill); background: var(--bg-raise); border: 1px solid var(--border-soft); }
.lb-leg-anel { width: 16px; height: 16px; border-radius: 50%; position: relative; background: var(--avatar-bg); flex: none; }
.lb-leg-anel::before { content: ""; position: absolute; inset: 0; border-radius: 50%; z-index: 0; }
.lb-leg-chip.fogo-faisca { background: rgba(255,170,60,.14); color: #ffcf8f; border-color: rgba(255,170,60,.3); }
.lb-leg-chip.fogo-fire { background: rgba(255,110,0,.14); color: #ffb26a; border-color: rgba(255,110,0,.3); }
.lb-leg-chip.fogo-inferno { background: rgba(255,60,0,.16); color: #ff8a4a; border-color: rgba(255,60,0,.35); }
.lb-leg-chip.fogo-supernova { background: linear-gradient(90deg, rgba(120,180,255,.2), rgba(255,255,255,.14)); color: #dcecff; border-color: rgba(150,200,255,.4); }

/* ==== CARD DE FLEX 9:16 =================================================== */
.lb-flex-ov { position: fixed; inset: 0; z-index: 120; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 16px; background: rgba(3,4,8,.72); backdrop-filter: blur(6px); opacity: 0; transition: opacity .2s ease; }
.lb-flex-ov.in { opacity: 1; }
.lb-flex-card { position: relative; width: min(340px, 82vw); aspect-ratio: 9 / 16; border-radius: 24px; padding: 26px 22px; display: flex; flex-direction: column; justify-content: space-between; background: radial-gradient(120% 80% at 50% 0%, #17101f, #08060d 70%); overflow: hidden; box-shadow: var(--shadow-pop); transform: scale(.94); transition: transform .3s var(--pop); }
.lb-flex-ov.in .lb-flex-card { transform: scale(1); }
/* borda em chamas via ::before */
.lb-flex-card::before { content: ""; position: absolute; inset: 0; border-radius: 24px; padding: 3px; background: conic-gradient(from var(--lb-ang), #ff7a18, #ffd36a, #ff2d2d, #ff7a18); -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); -webkit-mask-composite: xor; mask-composite: exclude; animation: lb-spin 4s linear infinite; }
.lb-flex-card.fogo-supernova::before { background: conic-gradient(from var(--lb-ang), #bfe0ff, #ffffff, #7db9ff, #bfe0ff); }
.lb-flex-card.fogo-none::before { background: conic-gradient(from var(--lb-ang), #8b5cf6, #6d28d9, #8b5cf6); }
/* flash da coreografia */
/* flash SÓ na entrada (começa e TERMINA invisível) — nunca névoa permanente sobre o texto */
.lb-flex-card::after { content: ""; position: absolute; inset: 0; background: radial-gradient(circle at 50% 45%, rgba(255,255,255,.9), transparent 60%); pointer-events: none; opacity: 0; }
.lb-flex-ov.in .lb-flex-card::after { animation: lb-flash .6s ease-out 1; }
.lb-flex-top { position: relative; z-index: 2; display: flex; align-items: center; justify-content: space-between; }
.lb-flex-brand { font-family: var(--font-head); font-weight: 800; font-size: 15px; color: var(--gold); letter-spacing: .01em; }
.lb-flex-nivel { font-size: 11px; font-weight: 700; padding: 3px 10px; border-radius: var(--r-pill); }
.lb-flex-mid { position: relative; z-index: 2; text-align: center; }
.lb-flex-kicker { font-family: var(--font-head); font-weight: 700; font-size: 13px; letter-spacing: .1em; color: var(--text-2); }
.lb-flex-num { font-family: var(--font-head); font-weight: 800; font-size: clamp(38px, 12vw, 54px); line-height: 1.02; color: #fff; margin: 10px 0 6px; }
.lb-flex-card.fogo-supernova .lb-flex-num { text-shadow: 0 0 16px rgba(190,225,255,.9), 0 0 34px rgba(120,180,255,.7); animation: lb-numpop .55s var(--pop) 1; }
.lb-flex-card.fogo-inferno .lb-flex-num, .lb-flex-card.fogo-fire .lb-flex-num { text-shadow: 0 0 12px rgba(255,150,40,.8), 0 -4px 16px rgba(255,60,0,.6); animation: lb-fire-num .18s ease-in-out infinite, lb-numpop .55s var(--pop) 1; }
.lb-flex-cap { font-size: 12.5px; color: var(--text-3); }
.lb-flex-foot { position: relative; z-index: 2; display: flex; align-items: center; justify-content: space-between; }
.lb-flex-user { display: flex; align-items: center; gap: 10px; }
.lb-flex-user b { display: block; font-family: var(--font-head); font-size: 13px; color: #fff; }
.lb-flex-user small { display: block; font-size: 11px; color: var(--text-3); }
.lb-flex-mark { font-family: var(--font-head); font-weight: 800; font-size: 12px; color: var(--gold); opacity: .9; }
.lb-flex-actions { display: flex; gap: 10px; }

/* Linha/peça do ranking que saiu da viewport: congela a animação (aplicado pela IO em
   lbPausaFora). Não muda estilo nenhum — só suspende o relógio de quem não está à vista. */
.lb-pausado, .lb-pausado *, .lb-pausado::before, .lb-pausado::after,
.lb-pausado *::before, .lb-pausado *::after { animation-play-state: paused; }

/* ==== RESPONSIVO / MOVIMENTO ============================================= */
@media (max-width: 720px) {
  .lb-row { grid-template-columns: 26px auto 1fr auto; }
  .lb-row .lb-flex-btn { display: none; }
  .lb-podium { gap: 8px; }
  .lb-pod-cell { padding: 14px 6px 12px; }
}
/* Celular estreito: as 3 colunas fixas do pódio vazavam 110px a 390px e arrastavam o
   #content junto. Vira ranking empilhado. O DOM sai na ordem 2º·1º·3º (pódio central
   elevado), então `order` recoloca 1º·2º·3º quando a coluna é única. */
@media (max-width: 430px) {
  /* o toggle era inline-grid dimensionado pelo texto: vazava 41px. Ocupa a largura
     toda e aperta o respiro dos botões — a matemática do .lb-toggle-ind não muda. */
  .lb-toggle { display: grid; width: 100%; }
  .lb-tab { padding: 9px 8px; font-size: 12px; }
  .lb-podium { grid-template-columns: 1fr; align-items: stretch; }
  .lb-pod-cell { padding: 12px 10px; }
  .lb-pod-cell.pod-1 { margin-bottom: 0; order: 1; }
  .lb-pod-cell.pod-2 { order: 2; }
  .lb-pod-cell.pod-3 { order: 3; }
}
@media (prefers-reduced-motion: reduce) {
  .nivel-prata::before, .nivel-ouro::before, .nivel-platina::before, .nivel-diamante::before, .nivel-lenda::before, .nivel-lenda, .lb-flex-card::before, .lb-flex-card::after,
  .nivel-gurublack::after, .nivel-guru::after,
  .nivel-gurublack .lb-avatar-ini::after, .nivel-gurublack .tier-av-ini::after,
  .lb-avatar.nivel-diamante::after, .tier-av.nivel-diamante::after,
  .gmv--fire .lb-gmv-num, .gmv--inferno .lb-gmv-num, .gmv--supernova .lb-gmv-num, .lb-flex-num { animation: none !important; }
}

/* ============================================================================
   ADMIN — PAINEL DO DONO (oversight · aulas · comunidade · broadcast)
   Reusa tokens de cor/superfície; acento com restrição (roxo = marca/dono).
   ============================================================================ */

/* item de nav do dono — selo/cadeado "Dono" */
.side-owner .owner-lock {
  margin-left: auto; display: inline-flex; align-items: center; gap: 3px;
  padding: 2px 6px 2px 4px; border-radius: 99px;
  background: var(--gold-soft); border: 1px solid rgba(245,197,66,0.30);
  color: var(--gold); font-size: 9px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase;
}
.side-owner .owner-lock svg { width: 10px; height: 10px; }
.side-owner.active { box-shadow: inset 0 0 0 1px rgba(245,197,66,0.30), 0 0 18px rgba(245,197,66,0.14); }
.side-owner.active::before { background: var(--gold); box-shadow: 0 0 10px var(--gold); }
.side-owner.active svg:first-child { color: var(--gold); }
@media (max-width: 1080px) { .side-owner .owner-lock { display: none; } }

.adm-kicker { color: var(--gold); }
.adm-owner-chip {
  align-self: flex-start; display: inline-flex; align-items: center; gap: 6px;
  padding: 6px 12px; border-radius: 99px; white-space: nowrap;
  background: var(--gold-soft); border: 1px solid rgba(245,197,66,0.28);
  color: var(--gold); font-size: 12px; font-weight: 700;
}
.adm-owner-chip svg { width: 14px; height: 14px; }
.admin-subtabs { margin-top: 20px; }
.admin-body { margin-top: 4px; }

/* --- OVERSIGHT --- */
.adm-cards { margin-top: 22px; }
.adm-gmv { font-size: 28px; }
.adm-tbl-wrap { margin-top: 22px; }
.adm-tbl { min-width: 860px; }
.adm-tbl thead th:nth-child(n+5) { text-align: right; }
.adm-tbl .adm-num { text-align: right; font-variant-numeric: tabular-nums; color: var(--text); font-weight: 600; }
.adm-tbl .adm-num.live { color: var(--live); }
.adm-tbl .adm-gmv-cell { color: var(--emerald); font-weight: 700; }
.adm-tbl .adm-rank { color: var(--text-3); font-weight: 800; font-family: var(--font-head); width: 40px; }
.adm-ugroup { border-bottom: 1px solid var(--border-soft); }
.adm-ugroup:last-child { border-bottom: 0; }
.adm-urow { cursor: pointer; transition: var(--t); }
.adm-urow td { border-bottom: 0; }
.adm-urow:hover { background: var(--border-soft); }
.adm-urow.open { background: var(--accent-soft); }
.adm-urow:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; }
.adm-user { min-width: 220px; }
.adm-user .adm-caret { display: inline-block; margin-right: 8px; color: var(--text-3); transition: transform .18s var(--e); }
.adm-urow.open .adm-caret { transform: rotate(90deg); color: var(--accent); }
.adm-user-id { display: inline-flex; flex-direction: column; vertical-align: middle; }
.adm-user-id b { color: var(--text); font-size: 13px; }
.adm-user-id small { color: var(--text-3); font-size: 11px; margin-top: 1px; }
.adm-detail td { padding: 0 16px 14px; border-bottom: 0; }
.adm-detail-in { background: var(--bg-raise); border: 1px solid var(--border-soft); border-radius: 10px; padding: 12px 14px; }
.adm-detail-k { font-size: 10px; letter-spacing: .1em; text-transform: uppercase; color: var(--text-3); font-weight: 700; }
.adm-conta-list { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 10px; }
.adm-conta { display: inline-flex; align-items: center; gap: 8px; padding: 6px 10px; border-radius: 8px; background: var(--bg-card); border: 1px solid var(--border-neutral); }
.adm-conta-h { font-size: 12px; color: var(--text); font-weight: 600; }
.adm-conta-s { font-size: 11px; color: var(--text-3); font-weight: 700; }
.adm-conta-s.live { color: var(--live); }
.adm-conta-s.ok { color: var(--emerald); }
.adm-hint, .adm-empty { color: var(--text-3); font-size: 12px; margin-top: 14px; }
.adm-empty { padding: 18px; text-align: center; background: var(--bg-card); border: 1px dashed var(--border-neutral); border-radius: 10px; margin-top: 0; }

/* pílulas de plano/status */
.adm-plano, .adm-status, .adm-cstatus { display: inline-block; padding: 3px 9px; border-radius: 99px; font-size: 11px; font-weight: 700; }
.adm-plano-scale   { background: var(--accent-soft); color: var(--accent); }
.adm-plano-pro     { background: rgba(16,185,129,0.10); color: var(--emerald); }
.adm-plano-starter { background: var(--border-soft); color: var(--text-2); }
.adm-status-ativo        { background: var(--emerald-soft); color: var(--emerald); }
.adm-status-trial        { background: var(--accent-soft); color: var(--accent); }
.adm-status-inadimplente { background: var(--warn-soft); color: var(--warn); }
.adm-status-cancelado    { background: var(--live-soft); color: var(--live); }

/* --- AULAS --- */
.adm-toolbar { margin: 20px 0 4px; }
.adm-course-tbl { min-width: 620px; }
.adm-ordem { width: 68px; }
.adm-reorder { display: inline-flex; align-items: center; gap: 8px; }
.adm-reorder span { font-family: var(--font-head); font-weight: 700; color: var(--text-3); min-width: 14px; text-align: center; }
.adm-arrow { width: 22px; height: 20px; display: inline-flex; align-items: center; justify-content: center; border: 1px solid var(--border-neutral); background: var(--bg-raise); color: var(--text-2); border-radius: 6px; cursor: pointer; font-size: 9px; transition: var(--t); }
.adm-arrow:hover:not(:disabled) { border-color: var(--accent); color: var(--accent); }
.adm-arrow:disabled { opacity: .3; cursor: not-allowed; }
.adm-course-t b { color: var(--text); font-size: 13px; }
.adm-course-t small { display: block; color: var(--text-3); font-size: 11px; margin-top: 2px; }
.adm-cstatus-publicado { background: var(--emerald-soft); color: var(--emerald); }
.adm-cstatus-draft     { background: var(--warn-soft); color: var(--warn); }
.adm-cstatus-arquivado { background: var(--border-soft); color: var(--text-3); }

/* --- COMUNIDADE (moderação) --- */
.adm-com-grid { display: grid; grid-template-columns: minmax(0,1fr) 340px; gap: 22px; margin-top: 22px; align-items: start; }
@media (max-width: 1080px) { .adm-com-grid, .adm-bc-grid { grid-template-columns: 1fr; } }
.adm-composer { background: var(--bg-card); border: 1px solid var(--border-card); border-radius: var(--r-card); padding: 16px; }
.adm-composer-badge { display: inline-flex; align-items: center; padding: 4px 10px; border-radius: 99px; background: var(--accent-soft); color: var(--accent); font-size: 11px; font-weight: 700; }
.adm-composer-input { width: 100%; margin-top: 12px; background: var(--bg-raise); border: 1px solid var(--border-neutral); border-radius: 10px; padding: 12px; color: var(--text); font: inherit; font-size: 14px; resize: vertical; }
.adm-composer-input:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-soft); }
.adm-composer-foot { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: 12px; }
.adm-composer-hint { color: var(--text-3); font-size: 11px; }
.adm-feed { display: flex; flex-direction: column; gap: 12px; margin-top: 16px; }
.adm-post { background: var(--bg-card); border: 1px solid var(--border-card); border-radius: var(--r-card); padding: 14px 16px; transition: var(--t); }
.adm-post.fixado { border-color: rgba(139,92,246,0.35); box-shadow: inset 3px 0 0 var(--accent); }
.adm-post.oculto { opacity: .55; }
.adm-post-head { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.adm-post-autor { font-size: 13px; font-weight: 700; }
.adm-post-autor.marca { color: var(--accent); }
.adm-post-autor.user { color: var(--text); }
.adm-tag-marca, .adm-tag-fixado, .adm-tag-oculto { font-size: 10px; font-weight: 700; padding: 2px 7px; border-radius: 99px; }
.adm-tag-marca { background: var(--accent-soft); color: var(--accent); }
.adm-tag-fixado { background: var(--gold-soft); color: var(--gold); }
.adm-tag-oculto { background: var(--live-soft); color: var(--live); }
.adm-post-when { margin-left: auto; color: var(--text-3); font-size: 11px; }
.adm-post-txt { color: var(--text-2); font-size: 14px; line-height: 1.5; margin-top: 8px; }
.adm-post-acts { display: flex; gap: 6px; margin-top: 12px; flex-wrap: wrap; }
.adm-mod-act { padding: 5px 11px; border-radius: 8px; border: 1px solid var(--border-neutral); background: var(--bg-raise); color: var(--text-2); font-size: 12px; font-weight: 600; cursor: pointer; transition: var(--t); }
.adm-mod-act:hover { border-color: var(--accent); color: var(--text); }
.adm-mod-act.danger:hover { border-color: var(--live); color: var(--live); }
.adm-com-side { position: sticky; top: 12px; }
.adm-side-title { font-size: 14px; color: var(--text); display: flex; align-items: center; gap: 8px; margin-bottom: 12px; }
/* Config da Call da comunidade (Admin › Comunidade) */
.adm-callcfg { margin-bottom: 16px; }
.adm-cfg-field { display: flex; flex-direction: column; gap: 4px; margin-bottom: 10px; }
.adm-cfg-field > span { font-size: 11.5px; font-weight: 600; color: var(--text-2); }
.adm-cfg-field .vz-input, .adm-cfg-field .sort-select { width: 100%; }
.adm-cfg-hint { display: block; margin-top: 8px; font-size: 10.5px; color: var(--text-3); }
.adm-side-count { font-size: 11px; font-weight: 800; min-width: 20px; height: 20px; padding: 0 6px; border-radius: 99px; background: var(--warn); color: #08090F; display: inline-flex; align-items: center; justify-content: center; }
.adm-report { background: var(--bg-card); border: 1px solid var(--border-card); border-radius: 12px; padding: 12px 14px; margin-bottom: 10px; }
.adm-report-main b { color: var(--text); font-size: 13px; }
.adm-report-motivo { display: inline-block; margin-left: 8px; font-size: 11px; font-weight: 700; color: var(--warn); }
.adm-report-post { color: var(--text-3); font-size: 12px; font-style: italic; margin-top: 6px; line-height: 1.4; }
.adm-report-side { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-top: 10px; }
.adm-report-when { color: var(--text-3); font-size: 11px; }
.adm-report-acts { display: flex; gap: 6px; }

/* --- BROADCAST --- */
.adm-bc-grid { display: grid; grid-template-columns: minmax(0,440px) 1fr; gap: 22px; margin-top: 22px; align-items: start; }
.adm-bc-compose h3, .adm-bc-hist h3 { font-size: 15px; margin-bottom: 4px; }
.adm-seg-group { display: inline-flex; gap: 6px; }
.adm-seg-b { padding: 7px 14px; border-radius: 8px; border: 1px solid var(--border-neutral); background: var(--bg-raise); color: var(--text-2); font-size: 12px; font-weight: 700; cursor: pointer; transition: var(--t); }
.adm-seg-b:hover { color: var(--text); }
.adm-nivel-info.active    { border-color: var(--accent); background: var(--accent-soft); color: var(--accent); }
.adm-nivel-aviso.active   { border-color: rgba(245,158,11,0.4); background: var(--warn-soft); color: var(--warn); }
.adm-nivel-critico.active { border-color: rgba(239,68,68,0.4); background: var(--live-soft); color: var(--live); }
.adm-bc-actions { display: flex; gap: 10px; margin-top: 18px; }
.adm-bc-hist { min-width: 0; }
.adm-bc-item { background: var(--bg-card); border: 1px solid var(--border-card); border-left-width: 3px; border-radius: 10px; padding: 12px 14px; margin-bottom: 10px; }
.adm-bc-info    { border-left-color: var(--accent); }
.adm-bc-aviso   { border-left-color: var(--warn); }
.adm-bc-critico { border-left-color: var(--live); }
.adm-bc-item-head { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.adm-bc-item-head b { color: var(--text); font-size: 13px; }
.adm-bc-nivel { font-size: 10px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; padding: 2px 7px; border-radius: 6px; }
.adm-bc-info .adm-bc-nivel    { background: var(--accent-soft); color: var(--accent); }
.adm-bc-aviso .adm-bc-nivel   { background: var(--warn-soft); color: var(--warn); }
.adm-bc-critico .adm-bc-nivel { background: var(--live-soft); color: var(--live); }
.adm-bc-when { margin-left: auto; color: var(--text-3); font-size: 11px; }
.adm-bc-corpo { color: var(--text-2); font-size: 13px; line-height: 1.5; margin-top: 8px; }
.adm-bc-meta { color: var(--text-3); font-size: 11px; margin-top: 8px; }
.adm-bc-meta b { color: var(--text-2); }

/* sub-abas do Admin são <button> — zera o chrome nativo p/ herdar o look de aba */
.admin-subtabs .subtab { background: transparent; border: 0; border-bottom: 2px solid transparent; -webkit-appearance: none; appearance: none; font-family: inherit; }
.admin-subtabs .subtab:hover { color: var(--text-2); }
.admin-subtabs .subtab.active { color: var(--text); border-bottom-color: var(--accent); }

/* ==== COCKPIT DE FOCO ===================================================== */
.rc-foot-btn.ck-open { color: #C4B5FD; border-color: rgba(139,92,246,.35); }
.rc-foot-btn.ck-open:hover { background: var(--accent-soft); }

#screen-cockpit.active { display: block; }
/* FOCO: o cockpit encolhe pela altura do dock persistente (var --dock-h) */
.cockpit { display: flex; flex-direction: column; gap: 14px; height: calc(100vh - 118px - var(--dock-h)); opacity: 0; }
.cockpit.ck-in { opacity: 1; transition: opacity .18s ease; }
.ck-empty2 { padding: 40px; text-align: center; color: var(--text-2); }

.ck-head { display: flex; align-items: center; justify-content: flex-start; gap: 12px; flex: none; }
.ck-head .ck-head-right { margin-left: auto; }   /* back+who à esquerda, controles à direita */
/* botão "‹ Voltar ao Comando" */
.ck-back { flex: none; height: 34px; padding: 0 13px; border-radius: 10px; background: var(--bg-card); border: 1px solid var(--border-soft); color: var(--text-2); font-family: inherit; font-weight: 700; font-size: 12.5px; cursor: pointer; transition: var(--t); }
.ck-back:hover { color: var(--text); border-color: var(--accent); background: var(--accent-soft); }
/* controle da live no header (componente liveControls, cls "ck-hb") */
.ck-head-ctrl { display: inline-flex; align-items: center; gap: 8px; }
.ck-hb { height: 34px; padding: 0 14px; border-radius: 10px; border: 1px solid var(--border-neutral); background: var(--bg-raise); color: var(--text); font-family: inherit; font-weight: 700; font-size: 12.5px; cursor: pointer; white-space: nowrap; transition: var(--t); }
.ck-hb:hover { border-color: var(--accent); }
.ck-hb.accent { border-color: transparent; background: var(--grad-accent); color: #fff; }
.ck-hb.live { border-color: rgba(239,68,68,.4); background: rgba(239,68,68,.14); color: #fca5a5; }
.ck-hb.warn { border-color: rgba(245,158,11,.4); background: var(--warn-soft); color: var(--warn); }
.ck-hb.blocked { border-color: rgba(245,158,11,.4); background: var(--warn-soft); color: var(--warn); }
.ck-hb.ghost { color: var(--text-3); }
.ck-hb:disabled { opacity: .55; cursor: default; }
.ck-who { display: flex; align-items: center; gap: 11px; }
.ck-avatar { width: 40px; height: 40px; border-radius: 12px; display: grid; place-items: center; font-family: var(--font-head); font-weight: 800; color: #fff; }
.ck-handle { font-family: var(--font-head); font-weight: 700; font-size: 16px; color: var(--text); }
.ck-sub { font-size: 12px; color: var(--text-2); }
.ck-mode { color: var(--emerald); font-weight: 600; }
.ck-head-right { display: flex; align-items: center; gap: 10px; }
.ck-badge { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; font-weight: 700; padding: 4px 10px; border-radius: 999px; background: rgba(148,163,184,.14); color: var(--text-2); }
.ck-badge.live { background: rgba(239,68,68,.14); color: #fca5a5; }
.ck-bdot { width: 7px; height: 7px; border-radius: 50%; background: var(--live); animation: ckPulse 1.4s ease-in-out infinite; }
.ck-timer { font-size: 13px; color: var(--text-2); }
.ck-x { width: 34px; height: 34px; border-radius: 10px; background: var(--bg-card); border: 1px solid var(--border-soft); color: var(--text-2); cursor: pointer; font-size: 14px; }
.ck-x:hover { color: var(--text); border-color: var(--border); }

.ck-body { flex: 1; min-height: 0; display: grid; grid-template-columns: 292px minmax(0,1fr) 372px; gap: 14px; }
.ck-col { min-height: 0; overflow-y: auto; display: flex; flex-direction: column; gap: 14px; padding-right: 2px; }
.ck-col::-webkit-scrollbar { width: 8px; } .ck-col::-webkit-scrollbar-thumb { background: rgba(148,163,184,.18); border-radius: 8px; }

.ck-panel { background: var(--bg-card); border: 1px solid var(--border-soft); border-radius: 14px; padding: 14px; }
.ck-panel[data-mode="voce"] { border-color: rgba(139,92,246,.5); box-shadow: 0 0 0 1px rgba(139,92,246,.15); }
.ck-panel-h { display: flex; align-items: center; justify-content: space-between; font-family: var(--font-head); font-weight: 700; font-size: 13.5px; color: var(--text); margin-bottom: 12px; }
.ck-count { font-size: 11px; color: var(--text-2); background: rgba(148,163,184,.14); padding: 2px 8px; border-radius: 999px; }
.ck-tag { font-size: 10px; font-weight: 800; letter-spacing: .04em; padding: 2px 8px; border-radius: 999px; }
.ck-tag.auto { background: rgba(37,192,138,.14); color: var(--emerald); }
.ck-tag.voce { background: var(--accent-soft); color: #C4B5FD; }

/* produtos */
.ck-prods { display: flex; flex-direction: column; gap: 9px; }
.ck-pr { display: flex; gap: 10px; padding: 8px; border-radius: 11px; background: rgba(148,163,184,.05); }
.ck-pr.pin { outline: 1px solid rgba(139,92,246,.3); }
.ck-pr-th { width: 44px; height: 44px; border-radius: 9px; display: grid; place-items: center; font-size: 18px; flex: none; }
.ck-pr-info { min-width: 0; }
.ck-pr-nome { font-size: 13px; font-weight: 600; color: var(--text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ck-pr-preco { font-size: 13px; color: var(--text); margin: 2px 0; }
.ck-pr-preco s { color: var(--text-2); font-size: 11px; margin-left: 4px; }
.ck-pr-out { font-size: 11px; color: #fca5a5; } .ck-pr-promo { font-size: 11px; color: var(--warn); } .ck-pr-stk { font-size: 11px; color: var(--text-2); }

/* vídeo */
.ck-stage { padding: 0; overflow: hidden; }
.ck-video { position: relative; aspect-ratio: 16/10; background: #0b0b11; display: grid; place-items: center; }
.ck-video video { width: 100%; height: 100%; object-fit: cover; position: relative; z-index: 3; }
.ck-video-ph { display: flex; flex-direction: column; align-items: center; gap: 8px; color: #5b5b70; font-size: 13px; }
.ck-video-ic { font-size: 30px; }
/* prévia do FOCO: miniatura local (thumb) ou stream real do app desktop */
.ck-video-thumb { position: absolute; inset: 0; background-size: cover; background-position: center; z-index: 1; }
.ck-video-stream { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; z-index: 2; background: #0b0b11; }
/* sobre a imagem, o texto vira legenda no rodapé (não tapa o quadro) */
.ck-video-ph.over { position: absolute; left: 0; right: 0; bottom: 0; z-index: 4; flex-direction: row; justify-content: center;
  padding: 7px 12px; font-size: 11.5px; color: rgba(255,255,255,.78); background: linear-gradient(to top, rgba(8,8,14,.82), rgba(8,8,14,0)); }
.ck-video-seal { position: absolute; top: 12px; right: 12px; z-index: 4; font-size: 9.5px; font-weight: 800; letter-spacing: .05em; text-transform: uppercase;
  padding: 3px 8px; border-radius: 999px; background: rgba(11,11,17,.72); color: rgba(255,255,255,.78); border: 1px solid rgba(255,255,255,.14); }
.ck-video-src { z-index: 4; }
.ck-live-tag { position: absolute; top: 12px; left: 12px; display: inline-flex; align-items: center; gap: 6px; background: rgba(239,68,68,.85); color: #fff; font-size: 11px; font-weight: 700; padding: 4px 9px; border-radius: 999px; }
/* etiqueta HONESTA sobre o placeholder — "Prévia", nunca "AO VIVO" sobre estático */
.ck-video-src { position: absolute; top: 12px; left: 12px; display: inline-flex; align-items: center; gap: 6px; background: rgba(20,21,30,.82); color: var(--text-2); font-size: 10.5px; font-weight: 700; letter-spacing: .05em; padding: 4px 9px; border-radius: 999px; border: 1px solid var(--border-neutral); }
/* VU do ÁUDIO DA LIVE (saída) — distinto do "seu microfone" */
.ck-live-au { display: flex; align-items: center; gap: 10px; padding: 10px 12px; border-top: 1px solid var(--border-soft); }
.ck-live-au-k { font-size: 11.5px; font-weight: 700; color: var(--text-2); white-space: nowrap; }
.ck-live-au-tag { font-size: 10px; color: var(--text-3); letter-spacing: .03em; white-space: nowrap; }
.ck-vu.live i { background: linear-gradient(90deg, var(--accent), var(--emerald)); }
.ck-vu-k { font-size: 10px; color: var(--text-3); letter-spacing: .02em; white-space: nowrap; }
.ck-stage-ctrl { display: flex; gap: 8px; padding: 12px; }
.ck-btn { flex: 1; padding: 9px; border-radius: 10px; background: rgba(148,163,184,.1); border: 1px solid var(--border-soft); color: var(--text); font-family: inherit; font-weight: 600; font-size: 13px; cursor: pointer; transition: transform .12s; }
.ck-btn:hover { transform: translateY(-1px); }
.ck-btn.accent { background: var(--grad-accent); border-color: transparent; color: #fff; }
.ck-btn.danger { color: #fca5a5; border-color: rgba(239,68,68,.3); }
/* Diagnóstico copiável — ancorado no #screen-cockpit (fora do #cockpitRoot que
   repinta), flutuando no canto pra estar sempre alcançável sem repintar junto. */
.ck-diag-btn { position: fixed; right: 22px; bottom: 22px; z-index: 40; display: inline-flex; align-items: center; gap: 6px; padding: 10px 14px; border-radius: 12px; background: var(--grad-accent, var(--accent)); border: 1px solid transparent; color: #fff; font-family: inherit; font-weight: 700; font-size: 13px; cursor: pointer; box-shadow: 0 8px 24px rgba(139,92,246,.3); transition: transform .12s, box-shadow .12s; }
.ck-diag-btn:hover { transform: translateY(-1px); box-shadow: 0 10px 28px rgba(139,92,246,.42); }
.ck-diag-btn:active { transform: translateY(0); }

/* mic */
.ck-mic.live { border-color: rgba(239,68,68,.45); }
.ck-mic-row { display: flex; align-items: center; gap: 10px; }
.ck-mic-btn { padding: 9px 14px; border-radius: 10px; background: rgba(148,163,184,.1); border: 1px solid var(--border-soft); color: var(--text); font-family: inherit; font-weight: 700; font-size: 13px; cursor: pointer; white-space: nowrap; }
.ck-mic-btn.on { background: rgba(239,68,68,.16); color: #fca5a5; border-color: rgba(239,68,68,.4); }
.ck-vu { flex: 1; height: 8px; border-radius: 999px; background: rgba(148,163,184,.16); overflow: hidden; }
.ck-vu i { display: block; height: 100%; width: 0; border-radius: 999px; background: linear-gradient(90deg, var(--emerald), var(--warn), var(--live)); transition: width .08s linear; }
.ck-hint { font-size: 11.5px; color: var(--text-2); margin-top: 9px; }

/* overlay fx */
.ck-fxs { display: flex; flex-wrap: wrap; gap: 8px; }
.ck-fx { display: inline-flex; align-items: center; gap: 5px; padding: 7px 11px; border-radius: 999px; background: rgba(148,163,184,.08); border: 1px solid var(--border-soft); color: var(--text-2); font-family: inherit; font-size: 12px; cursor: pointer; transition: transform .12s cubic-bezier(.34,1.4,.64,1); }
.ck-fx:hover { transform: translateY(-1px); color: var(--text); }
.ck-fx.on { background: var(--accent-soft); border-color: rgba(139,92,246,.5); color: #ddd6fe; }
.ck-fx-air { font-size: 9px; font-weight: 800; text-transform: uppercase; color: var(--emerald); }

/* analytics */
.ck-tiles { display: grid; grid-template-columns: 1fr 1fr; gap: 9px; }
.ck-tile { background: rgba(148,163,184,.05); border-radius: 11px; padding: 11px; }
.ck-tile.wide { grid-column: 1 / -1; }
.ck-tile-v { font-family: var(--font-head); font-weight: 700; font-size: 17px; color: var(--text); font-variant-numeric: tabular-nums; }
.ck-tile.ok .ck-tile-v { color: var(--emerald); font-size: 22px; }
.ck-tile-l { font-size: 11px; color: var(--text-2); margin-top: 2px; }
.ck-vpm { font-size: 12px; color: var(--warn); font-weight: 600; }
.ck-vpm b { font-variant-numeric: tabular-nums; }
.ck-bump { animation: ckBump .22s var(--pop, cubic-bezier(.34,1.4,.64,1)); }
@keyframes ckBump { 0% { transform: scale(1); } 45% { transform: scale(1.14); } 100% { transform: scale(1); } }
@keyframes ckPulse { 0%,100% { opacity: 1; } 50% { opacity: .35; } }

/* chat */
.ck-chatp { display: flex; flex-direction: column; }
.ck-chat { display: flex; flex-direction: column; gap: 6px; max-height: 260px; overflow-y: auto; padding-right: 4px; }
.ck-msg { font-size: 12.5px; color: var(--text); line-height: 1.4; }
.ck-msg b { color: #C4B5FD; font-weight: 600; margin-right: 3px; }
.ck-msg.me b { color: var(--emerald); }
.ck-chat-form { display: flex; gap: 7px; margin-top: 11px; }
.ck-chat-form input { flex: 1; background: rgba(148,163,184,.08); border: 1px solid var(--border-soft); border-radius: 10px; padding: 8px 11px; color: var(--text); font-family: inherit; font-size: 13px; }
.ck-send { width: 38px; border-radius: 10px; background: var(--grad-accent); border: 0; color: #fff; cursor: pointer; }
.ck-act-live { font-size: 14px; color: var(--text); } .ck-act-live b { color: var(--emerald); font-size: 18px; font-family: var(--font-head); }
.ck-act-empty { font-size: 12.5px; color: var(--text-2); }

@media (max-width: 1100px) { .ck-body { grid-template-columns: 1fr; overflow-y: auto; } .ck-col { overflow: visible; } }
@media (prefers-reduced-motion: reduce) {
  .cockpit, .cockpit.ck-in { transition: none; }
  .ck-bump { animation: none; } .ck-bdot { animation: none; }
  .ck-btn:hover, .ck-fx:hover, .ck-mic-btn:hover { transform: none; }
}

/* ==== CONTAS VINCULADAS ==================================================== */
.cv-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 14px; margin-top: 18px; }
.cv-card { background: var(--bg-card); border: 1px solid var(--border-soft); border-radius: 14px; padding: 16px; cursor: pointer; transition: transform .14s, border-color .14s; }
.cv-card:hover { transform: translateY(-2px); border-color: var(--border); }
.cv-card.warn { border-color: rgba(245,165,36,.3); } .cv-card.live { border-color: rgba(239,68,68,.3); }
.cv-card-h { display: flex; align-items: center; gap: 10px; margin-bottom: 12px; }
.cv-av { width: 38px; height: 38px; border-radius: 11px; display: grid; place-items: center; font-family: var(--font-head); font-weight: 800; color: #fff; flex: none; }
.cv-id { flex: 1; min-width: 0; } .cv-name { font-weight: 700; font-size: 14px; color: var(--text); } .cv-handle { font-size: 12px; color: var(--text-2); }
.cv-conn { font-size: 11px; font-weight: 600; white-space: nowrap; } .cv-conn.ok { color: var(--emerald); } .cv-conn.warn { color: var(--warn); } .cv-conn.live { color: #fca5a5; }
.cv-scoreline { display: flex; align-items: baseline; gap: 8px; }
.cv-badge { font-size: 11px; font-weight: 700; padding: 2px 9px; border-radius: 999px; } .cv-badge.ok { background: var(--emerald-soft, rgba(16,185,129,.14)); color: var(--emerald); } .cv-badge.warn { background: rgba(245,165,36,.14); color: var(--warn); } .cv-badge.live { background: rgba(239,68,68,.14); color: #fca5a5; }
.cv-score { font-family: var(--font-head); font-weight: 800; font-size: 22px; color: var(--text); margin-left: auto; } .cv-scoremax { font-size: 12px; color: var(--text-2); }
.cv-bar { position: relative; height: 7px; border-radius: 999px; background: rgba(148,163,184,.16); margin: 10px 0; overflow: hidden; }
.cv-bar i { display: block; height: 100%; border-radius: 999px; background: var(--emerald); } .cv-bar i.warn { background: var(--warn); } .cv-bar i.live { background: var(--live); }
.cv-bar-mark { position: absolute; top: -2px; width: 2px; height: 11px; background: rgba(255,255,255,.5); }
.cv-card-foot { display: flex; justify-content: space-between; font-size: 12px; color: var(--text-2); }
.cv-prot { color: var(--emerald); font-weight: 600; } .cv-prot.off { color: var(--text-2); }
.cv-viol-head { margin: 18px 0 4px; } .cv-pick { font-size: 13px; color: var(--text-2); display: inline-flex; align-items: center; gap: 8px; }

.qi-card { background: var(--bg-card); border: 1px solid var(--border-soft); border-radius: 16px; padding: 22px; margin: 14px 0 18px; }
.qi-card.ok { border-color: rgba(16,185,129,.28); } .qi-card.warn { border-color: rgba(245,165,36,.3); } .qi-card.live { border-color: rgba(239,68,68,.32); }
.qi-top { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; }
.qi-status { font-family: var(--font-head); font-weight: 800; font-size: 26px; color: var(--text); display: flex; align-items: center; gap: 8px; }
.qi-dot { width: 9px; height: 9px; border-radius: 50%; } .qi-dot.ok { background: var(--emerald); } .qi-dot.warn { background: var(--warn); } .qi-dot.live { background: var(--live); }
.qi-sub { font-size: 13px; color: var(--text-2); margin-top: 4px; }
.qi-prot { font-size: 12px; font-weight: 600; color: var(--emerald); background: rgba(16,185,129,.1); border-radius: 999px; padding: 5px 11px; white-space: nowrap; }
.qi-gauge { position: relative; height: 8px; border-radius: 999px; background: rgba(148,163,184,.16); margin: 34px 0 8px; }
.qi-gauge-fill { position: absolute; left: 0; top: 0; height: 100%; border-radius: 999px; background: var(--emerald); } .qi-gauge-fill.warn { background: var(--warn); } .qi-gauge-fill.live { background: var(--live); }
.qi-bubble { position: absolute; top: -25px; transform: translateX(-50%); background: var(--bg-card); border: 1px solid var(--border); border-radius: 8px; padding: 1px 8px; font-family: var(--font-head); font-weight: 700; font-size: 12px; color: var(--text); }
.qi-mark { position: absolute; top: -7px; transform: translateX(-50%); text-align: center; } .qi-mark i { display: block; width: 2px; height: 22px; background: rgba(148,163,184,.55); margin: 0 auto; } .qi-mark b { font-size: 9px; color: var(--text-2); font-weight: 600; }
.qi-scale { display: flex; justify-content: space-between; font-size: 11px; color: var(--text-2); } .qi-scale-r { margin-left: auto; }
.qi-melhorar { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: 20px; padding-top: 16px; border-top: 1px solid var(--border-soft); }
.qi-melhorar-h { font-weight: 700; font-size: 14px; color: var(--text); } .qi-recorrer { font-size: 13px; color: var(--text-2); margin-top: 3px; } .qi-recorrer b { color: var(--warn); }

.cv-vtabs { display: flex; gap: 20px; border-bottom: 1px solid var(--border-soft); margin-bottom: 14px; }
.cv-vtab { background: none; border: 0; border-bottom: 2px solid transparent; padding: 8px 0; font-family: inherit; font-size: 14px; font-weight: 600; color: var(--text-2); cursor: pointer; }
.cv-vtab.active { color: var(--text); border-bottom-color: var(--emerald); }
.cv-viol-title { font-family: var(--font-head); font-weight: 700; font-size: 17px; color: var(--text); margin-bottom: 12px; }
.cv-vsubs { display: flex; align-items: center; gap: 10px; margin-bottom: 12px; flex-wrap: wrap; }
.cv-vsub { background: rgba(148,163,184,.08); border: 1px solid var(--border-soft); border-radius: 999px; padding: 6px 13px; font-family: inherit; font-size: 12.5px; color: var(--text-2); cursor: pointer; }
.cv-vsub.active { background: rgba(16,185,129,.14); color: var(--emerald); border-color: transparent; }
.cv-vfilter { margin-left: auto; }
.cv-vtbl td { vertical-align: top; } .cv-vtbl .cv-motivo, .cv-vtbl .cv-result { max-width: 240px; font-size: 12.5px; color: var(--text-2); }
.cv-st { font-size: 12px; font-weight: 700; padding: 3px 9px; border-radius: 999px; } .cv-st.warn { background: rgba(245,165,36,.14); color: var(--warn); } .cv-st.live { background: rgba(239,68,68,.14); color: #fca5a5; }
.cv-st-sub { font-size: 11px; color: var(--text-2); margin-top: 4px; }
.cv-vazio { text-align: center; color: var(--emerald); padding: 26px !important; }
.cv-vcount { font-size: 12px; color: var(--text-2); margin-top: 10px; }

/* ==== COMPRAR PROXIES (quantidade mensal + desconto por volume) ============ */
/* container próprio (NÃO usa .modal-lg — aquele é grid 232px+1fr e cortava o resumo) */
.pxbuy-modal { width: min(720px, 94vw); max-height: 90vh; overflow-y: auto; background: var(--surface, var(--bg-card)); border: 1px solid var(--border); border-radius: 20px; box-shadow: var(--shadow-pop, 0 24px 60px -18px rgba(0,0,0,.7)); padding: 22px; }
.pxbuy-modal h3 { font-family: var(--font-head); font-size: 18px; margin: 0 0 6px; color: var(--text); }
.pxbuy-grid { display: grid; grid-template-columns: 1fr 300px; gap: 16px; margin: 8px 0 4px; }
@media (max-width: 720px) { .pxbuy-grid { grid-template-columns: 1fr; } }
.pxbuy-config { background: var(--bg-card); border: 1px solid var(--border-soft); border-radius: 14px; padding: 20px; text-align: center; }
.pxbuy-qh { font-family: var(--font-head); font-weight: 700; font-size: 17px; color: var(--text); }
.pxbuy-qs { font-size: 13px; color: var(--text-2); margin: 6px 0 18px; }
.pxbuy-counter { display: inline-flex; align-items: center; gap: 16px; background: rgba(148,163,184,.08); border-radius: 14px; padding: 8px 14px; }
.pxbuy-counter b { font-family: var(--font-head); font-size: 24px; min-width: 40px; }
.pxbuy-mm { width: 42px; height: 42px; border-radius: 11px; border: 0; background: var(--grad-accent); color: #fff; font-size: 22px; cursor: pointer; }
.pxbuy-perip { font-size: 13px; color: var(--text-2); margin: 14px 0 8px; } .pxbuy-perip b { color: var(--text); }
.pxbuy-range { width: 100%; accent-color: var(--accent); }
.pxbuy-rlbl { display: flex; justify-content: space-between; font-size: 11px; color: var(--text-2); }
.pxbuy-resumo { background: var(--bg-card); border: 1px solid var(--border-soft); border-radius: 14px; padding: 20px; }
.pxbuy-rh { font-family: var(--font-head); font-weight: 700; font-size: 15px; margin-bottom: 16px; }
.pxbuy-row { display: flex; justify-content: space-between; font-size: 13px; color: var(--text-2); padding: 8px 0; } .pxbuy-row b { color: var(--text); font-variant-numeric: tabular-nums; }
.pxbuy-sub { display: flex; align-items: baseline; justify-content: space-between; padding: 12px 0; border-top: 1px solid var(--border-soft); } .pxbuy-sub b { font-family: var(--font-head); font-size: 22px; color: var(--emerald); margin-left: auto; } .pxbuy-sub small { color: var(--text-2); font-size: 11px; }
.pxbuy-total { display: flex; justify-content: space-between; align-items: baseline; padding: 12px 0; border-top: 1px solid var(--border-soft); font-weight: 700; } .pxbuy-total b { font-family: var(--font-head); font-size: 20px; }
.pxbuy-go { width: 100%; margin-top: 14px; }

/* ── CLOUD LIVE — banner honesto, status da tabela, ações, modal de compra ── */
.cloud-demo-banner { display: flex; gap: 12px; align-items: flex-start; margin: 20px 0 14px; padding: 14px 16px; border-radius: 12px; border: 1px solid rgba(245,158,11,0.3); background: var(--warn-soft); }
.cloud-demo-ic { flex: 0 0 auto; font-size: 15px; line-height: 1.5; }
.cloud-demo-tx { font-size: 12.5px; line-height: 1.55; color: var(--text-2); } .cloud-demo-tx b { color: var(--text); }

.cs-status { display: inline-flex; align-items: center; gap: 6px; font-size: 12.5px; font-weight: 600; white-space: nowrap; }
.cs-status.cs-run  { color: var(--emerald); }
.cs-status.cs-prov { color: var(--text-2); }
.cs-status.cs-stop { color: var(--text-3); }
.cs-status.cs-nc   { color: var(--warn); }
.cs-status.cs-err  { color: var(--live); }
.cs-demo { margin-left: 6px; font-size: 10px; font-weight: 700; letter-spacing: .03em; color: var(--text-3); border: 1px solid var(--border-neutral); border-radius: 99px; padding: 1px 6px; cursor: help; }
.cs-sub { display: block; margin-top: 3px; font-size: 11px; font-weight: 500; color: var(--text-3); }
.cs-spin { width: 13px; height: 13px; border-radius: 50%; border: 2px solid var(--border-neutral); border-top-color: var(--accent); animation: co-spin 0.9s linear infinite; }
@media (prefers-reduced-motion: reduce) { .cs-spin { animation-duration: 2.4s; } }

.btn-danger { background: var(--live-soft); border: 1px solid rgba(239,68,68,0.4); color: var(--live); cursor: pointer; }
.btn-danger:hover { border-color: var(--live); }
.btn-amber { background: var(--warn-soft); border: 1px solid rgba(245,158,11,0.4); color: var(--warn); cursor: pointer; }
.btn-amber:hover { border-color: var(--warn); }
.btn[disabled], .btn:disabled { opacity: .5; cursor: not-allowed; }

.cloud-empty { display: flex; flex-direction: column; gap: 4px; align-items: center; text-align: center; padding: 40px 16px; color: var(--text-2); }
.cloud-empty b { color: var(--text); font-size: 14px; }
.cloud-empty span { font-size: 12.5px; }

/* modal de compra do estúdio (clone visual do pxbuy) */
.cl-plan-h { text-align: left; font-size: 12px; font-weight: 700; color: var(--text-2); margin: 18px 0 8px; }
.cl-plans { display: flex; flex-direction: column; gap: 8px; }
.cl-plan { position: relative; display: flex; align-items: center; gap: 10px; text-align: left; padding: 12px 14px; border-radius: 12px; border: 1px solid var(--border-soft); background: var(--bg-card); color: var(--text); cursor: pointer; font-family: inherit; }
.cl-plan:hover { border-color: var(--accent); }
.cl-plan.on { border-color: var(--accent); background: var(--accent-soft); }
.cl-plan-radio { flex: 0 0 auto; width: 16px; height: 16px; border-radius: 50%; border: 2px solid var(--border-neutral); }
.cl-plan.on .cl-plan-radio { border-color: var(--accent); box-shadow: inset 0 0 0 3px var(--accent); }
.cl-plan-main { flex: 1; display: flex; flex-direction: column; gap: 1px; }
.cl-plan-main b { font-size: 14px; } .cl-plan-main small { color: var(--text-2); font-size: 11.5px; margin-left: 4px; }
.cl-plan-main em { font-style: normal; font-size: 11px; color: var(--text-3); margin-top: 2px; }
.cl-plan-price { flex: 0 0 auto; font-family: var(--font-head); font-weight: 700; font-size: 15px; } .cl-plan-price small { font-size: 10.5px; color: var(--text-2); font-weight: 600; }
.cl-plan-pop { position: absolute; top: -8px; right: 12px; font-size: 9.5px; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; padding: 2px 7px; border-radius: 99px; background: var(--grad-accent, var(--accent)); color: #fff; }
.cl-region { display: block; text-align: left; margin-top: 16px; font-size: 12px; font-weight: 700; color: var(--text-2); }
.cl-region-sel { display: block; width: 100%; margin-top: 6px; background: rgba(148,163,184,.08); border: 1px solid var(--border-soft); border-radius: 10px; padding: 9px 11px; color: var(--text); font-family: inherit; font-size: 14px; }
.cl-region-sel:focus { outline: none; border-color: var(--accent); }
.cl-demo-note { margin-top: 12px; font-size: 11px; line-height: 1.5; color: var(--text-3); } .cl-demo-note b { color: var(--text-2); }

/* editor de curso (admin Aulas) */
.adm-f { display: block; margin: 14px 0; font-size: 13px; color: var(--text-2); text-align: left; }
.adm-f input, .adm-f select, .adm-f textarea { display: block; width: 100%; margin-top: 6px; background: rgba(148,163,184,.08); border: 1px solid var(--border-soft); border-radius: 10px; padding: 9px 11px; color: var(--text); font-family: inherit; font-size: 14px; }
.adm-f input:focus, .adm-f select:focus, .adm-f textarea:focus { outline: none; border-color: var(--accent); }
.adm-f textarea { resize: vertical; min-height: 64px; line-height: 1.5; }
/* P1-11 — preview 16:9 da capa (aula/curso) no admin */
.adm-capa { position: relative; width: 100%; aspect-ratio: 16 / 9; margin-top: 6px; border-radius: 10px; border: 1px solid var(--border-soft); background: rgba(148,163,184,.08) center / cover no-repeat; display: grid; place-items: center; overflow: hidden; }
.adm-capa-ph { color: var(--text-3); font-size: 12px; text-align: center; padding: 0 12px; }
.adm-capa + .upload-drop { margin-top: 8px; }

/* ==== CARD DE PERFIL COMPACTO ============================================= */
.rc-pchip { display: inline-flex; align-items: center; gap: 4px; }
.rc-pdot { width: 6px; height: 6px; border-radius: 50%; background: var(--text-2); }
.rc-pdot.on { background: var(--emerald); box-shadow: 0 0 6px var(--emerald); }
.rc-pchip.on { color: var(--emerald); } .rc-pchip.warn { color: var(--warn); }

.rc-band { display: grid; grid-template-columns: 1.4fr 1fr 1fr 1fr; gap: 8px; align-items: end; margin: 10px 0; padding: 10px 12px; background: rgba(148,163,184,.05); border-radius: 12px; }
.rc-band.has { background: rgba(16,185,129,.06); }
.rc-bc { display: flex; flex-direction: column; min-width: 0; }
.rc-bc b { font-family: var(--font-head); font-size: 14px; color: var(--text); font-variant-numeric: tabular-nums; }
.rc-bc.gmv b { font-size: 20px; color: var(--emerald); }
.rc-bc.ok b { color: var(--emerald); }
.rc-bc span { font-size: 10px; color: var(--text-2); white-space: nowrap; }

.rc-actions { display: flex; flex-direction: row; flex-wrap: wrap; gap: 6px; margin: 8px 0; }
.rc-actions .rc-b { flex: 1 1 calc(50% - 3px); padding: 8px 12px; font-size: 12.5px; min-width: 0; }
.rc-actions .rc-b:last-child:nth-child(odd) { flex-basis: 100%; }

.rc-activity { display: flex; align-items: center; gap: 8px; width: 100%; background: rgba(148,163,184,.05); border: 1px solid var(--border-soft); border-radius: 10px; padding: 8px 11px; cursor: pointer; font-family: inherit; text-align: left; }
.rc-activity:hover { border-color: var(--border); }
.rc-act-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--text-2); flex: none; }
.rc-act-dot.live { background: var(--live); animation: pulse 1.4s ease-in-out infinite; }
.rc-act-dot.rising { background: var(--warn); }
.rc-act-txt { flex: 1; min-width: 0; font-size: 12px; color: var(--text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.rc-act-more { font-size: 11px; color: var(--text-2); white-space: nowrap; }
.rc-chev { display: inline-block; transition: transform .2s; }
.rc-open .rc-chev { transform: rotate(180deg); }

/* live interativa v2 — fatia 1 (controle) */
.li-onair { display: flex; align-items: center; gap: 12px; margin: 12px 0; padding: 10px 14px; border: 1px solid var(--border-soft); border-radius: 12px; background: var(--bg-card); position: sticky; top: 0; z-index: 5; }
.li-onair.has { border-color: rgba(16,185,129,.4); }
.li-onair-txt { flex: 1; font-size: 13px; color: var(--text-2); }
.li-onair-txt b { color: var(--emerald); font-family: var(--font-head); }
.li-piece-foot { display: flex; align-items: center; gap: 8px; margin-top: 8px; }
.li-drag-hint { font-size: 10.5px; color: var(--text-2); opacity: 0; transition: opacity .2s; margin-left: auto; }
.li-piece.on .li-drag-hint { opacity: .7; }
.li-piece { opacity: .72; transition: opacity .15s; }
.li-piece.on { opacity: 1; }
.li-sim-badge { position: absolute; top: 10px; right: 10px; z-index: 7; font-size: 9.5px; font-weight: 800; letter-spacing: .06em; padding: 3px 8px; border-radius: 999px; background: rgba(245,165,36,.2); color: var(--warn); opacity: 0; transition: opacity .25s; pointer-events: none; }
.li-sim-badge.show { opacity: 1; }
.li-pop { animation: ckBump .3s var(--pop, ease) 1; }

/* ===== CHASSI P0 — selo de custo · barra de fluidez · mapa · âncoras ===== */
/* selo de CUSTO por peça (●/●●/●●●) — mesmo tier alimenta o Orçamento */
.li-cost { align-self: center; font-size: 8.5px; letter-spacing: 1px; line-height: 1; padding: 4px 6px; border-radius: 999px; font-weight: 800; white-space: nowrap; }
.li-cost-leve { color: var(--emerald); background: var(--emerald-soft); }
.li-cost-medio { color: var(--warn); background: var(--warn-soft); }
.li-cost-pesado { color: var(--live); background: var(--live-soft); }

/* BARRA FIXA — medidor de fluidez (fps + peças/orçamento) + pânico + moderação + edição */
.li-bar { position: sticky; top: 0; z-index: 6; display: flex; align-items: center; gap: 14px; flex-wrap: wrap; margin: 12px 0; padding: 10px 14px; border: 1px solid var(--border-soft); border-radius: 12px; background: var(--bg-card); }
.li-bar.li-over { border-color: rgba(245,158,11,.45); }
.li-meter { display: flex; align-items: center; gap: 12px; flex: 1 1 210px; min-width: 200px; }
.li-fps { display: flex; align-items: baseline; gap: 4px; flex: 0 0 auto; }
.li-fps b { font-family: var(--font-head); font-size: 16px; color: var(--emerald); font-variant-numeric: tabular-nums; }
.li-fps small { font-size: 10px; color: var(--text-3); }
.li-fps.li-fps-low b { color: var(--warn); }
.li-budget { display: flex; flex-direction: column; gap: 4px; flex: 1 1 120px; min-width: 110px; }
.li-budget-track { height: 6px; border-radius: 999px; background: var(--border-soft); overflow: hidden; }
.li-budget-track i { display: block; height: 100%; width: 0; border-radius: inherit; background: linear-gradient(90deg, var(--emerald), var(--warn)); transition: width .25s ease; }
.li-budget small { font-size: 10.5px; color: var(--text-3); }
.li-budget small b { color: var(--text-2); font-variant-numeric: tabular-nums; }
.li-degrade { font-size: 10px; font-weight: 800; color: var(--warn); background: var(--warn-soft); padding: 3px 8px; border-radius: 999px; white-space: nowrap; flex: 0 0 auto; }
.li-bar-actions { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.li-panic { color: var(--live) !important; }
.li-switch-mini { display: inline-flex; align-items: center; gap: 6px; font-size: 11px; color: var(--text-2); cursor: pointer; user-select: none; }
.li-switch-mini input { accent-color: var(--accent); }

/* MAPA DE PEÇAS — peças ligadas: ocultar · z-order · selecionar */
.li-map { margin: 0 0 12px; border: 1px solid var(--border-soft); border-radius: 12px; background: var(--bg-card); overflow: hidden; }
.li-map-head { padding: 9px 13px; font-size: 12px; font-weight: 700; border-bottom: 1px solid var(--border-soft); display: flex; gap: 8px; align-items: baseline; }
.li-map-head small { font-size: 10px; color: var(--text-3); font-weight: 500; }
.li-map-list { display: flex; flex-direction: column; }
.li-map-row { display: flex; align-items: center; gap: 8px; padding: 7px 12px; border-top: 1px solid var(--border-soft); cursor: pointer; transition: background .12s; }
.li-map-row:first-child { border-top: 0; }
.li-map-row:hover { background: var(--border-soft); }
.li-map-row.off { opacity: .5; }
.li-map-name { flex: 1; font-size: 12px; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.li-map-acts { display: flex; gap: 4px; }
.li-map-btn { width: 24px; height: 24px; border-radius: 7px; border: 1px solid var(--border-soft); background: var(--bg-raise); color: var(--text-2); font-size: 12px; cursor: pointer; display: grid; place-items: center; transition: var(--t); }
.li-map-btn:hover { color: var(--text); border-color: var(--border); }

/* ÂNCORAS arrastáveis das camadas de canvas — visíveis só no MODO EDIÇÃO */
.stfx-anchor { position: absolute; z-index: 6; display: none; align-items: center; gap: 5px; padding: 4px 9px 4px 6px; border-radius: 999px; background: rgba(15,16,23,.82); border: 1.5px dashed rgba(139,92,246,.7); color: #fff; font-size: 10.5px; font-weight: 700; white-space: nowrap; box-shadow: 0 4px 14px rgba(0,0,0,.4); }
.stfx-anchor i { font-style: normal; font-size: 13px; color: var(--accent); }
.st-fx-layer.li-edit .stfx-anchor { display: inline-flex; }
.st-fx-layer.li-edit { outline: 1px dashed rgba(139,92,246,.28); outline-offset: -2px; }

/* mapa: ocultar peça no vídeo / seleção destacada */
.st-fx-layer .li-hidden { display: none !important; }
.st-fx-layer .li-selected { outline: 2px solid var(--accent); outline-offset: 3px; border-radius: 6px; }
@media (prefers-reduced-motion: reduce) { .li-budget-track i { transition: none; } }

/* ---- drag-to-position dos overlays no preview (LGDrag) ---- */
.st-fx-layer [data-drag] { pointer-events: auto; touch-action: none; cursor: grab; user-select: none; -webkit-user-select: none; }
.st-fx-layer [data-fxk] { transform: scale(var(--li-scale, 1)); }
.st-fx-layer .lg-placed.lg-axis-xy { transform: translate(-50%, -50%) scale(var(--li-scale, 1)); }
.st-fx-layer .lg-placed.lg-axis-y { transform: translateY(-50%) scale(var(--li-scale, 1)); }
.st-fx-layer [data-drag].dragging { cursor: grabbing; z-index: 9; outline: 1.5px dashed rgba(255,255,255,.55); outline-offset: 3px; }
.lg-guide { position: absolute; pointer-events: none; opacity: 0; transition: opacity .15s; background: rgba(139,92,246,.55); z-index: 8; }
.lg-guide.v { left: 50%; top: 0; bottom: 0; width: 1px; }
.lg-guide.h { top: 50%; left: 0; right: 0; height: 1px; }
.st-fx-layer.lg-show-guides .lg-guide { opacity: 1; }

/* ---- FxEngine (canvas único de partículas) + ambiente CSS real ---- */
.st-fx-canvas { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; z-index: 2; }
.stfx-vinheta { position: absolute; inset: 0; pointer-events: none; box-shadow: inset 0 0 90px 30px rgba(0,0,0,.55); border-radius: inherit; animation: fxVinheta 4.5s ease-in-out infinite; }
@keyframes fxVinheta { 0%,100% { box-shadow: inset 0 0 90px 30px rgba(0,0,0,.55); } 50% { box-shadow: inset 0 0 120px 44px rgba(0,0,0,.7); } }
.stfx-varredura { position: absolute; inset: 0; pointer-events: none; overflow: hidden; }
.stfx-varredura::after { content: ""; position: absolute; top: -20%; bottom: -20%; width: 26%; left: -30%; background: linear-gradient(100deg, transparent, rgba(255,255,255,.14), transparent); transform: skewX(-12deg); animation: fxSweep 5.5s ease-in-out infinite; }
/* varredura por transform: o `left` ficou fixo em -30% e o percurso virou translateX.
   translateX é % da PRÓPRIA largura (26% do contêiner), então o trajeto de 140% do
   contêiner (-30% → 110%) equivale a 140/26 = 538,5% do elemento. Mesmo visual, sem layout. */
@keyframes fxSweep { 0% { transform: translateX(0) skewX(-12deg); } 60%,100% { transform: translateX(538.5%) skewX(-12deg); } }
.stfx-veu { position: absolute; inset: 0; pointer-events: none; background: var(--li-accent, #8B5CF6); opacity: .16; mix-blend-mode: overlay; }
@media (prefers-reduced-motion: reduce) { .stfx-vinheta, .stfx-varredura::after { animation: none; } }

/* histórico de LIVE */
.lh-live { display: flex; align-items: center; gap: 10px; }
.lh-thumb { width: 42px; height: 56px; border-radius: 8px; display: grid; place-items: center; color: rgba(255,255,255,.7); flex: none; }
.lh-id { font-size: 12px; color: var(--text-2); display: flex; align-items: center; gap: 4px; }
.lh-sub { color: var(--text-2); font-size: 11px; }

/* proxies v2: banner sem-BR + sublinha dos tiles */
.px-alert { display: flex; align-items: center; gap: 12px; margin: 14px 0 4px; padding: 12px 14px; border: 1px solid rgba(239,68,68,.35); border-radius: 12px; background: rgba(239,68,68,.07); }
.px-alert-ic { width: 26px; height: 26px; border-radius: 50%; background: rgba(239,68,68,.2); color: #fca5a5; font-weight: 800; display: grid; place-items: center; flex: none; }
.px-alert-tx { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.px-alert-tx b { color: var(--text); font-size: 13.5px; }
.px-alert-tx span { color: var(--text-2); font-size: 12px; }
/* variante NEUTRA: risco assumido por escolha (internet local) não é alarme */
.px-alert--local { border-color: var(--border-neutral); background: var(--bg-raise); }
.px-alert--local .px-alert-ic { background: var(--bg-card); color: var(--text-2); }
/* proxy dividida: âmbar (risco assumido), não vermelho (pendência que trava) */
.px-alert--share { border-color: rgba(245,158,11,.35); background: rgba(245,158,11,.07); }
.px-alert--share .px-alert-ic { background: rgba(245,158,11,.2); color: var(--warn); }
@media (max-width: 640px) { .px-alert { flex-wrap: wrap; row-gap: 10px; } .px-alert .btn { flex: 1 1 100%; } }
.stat-tile .t-s { font-size: 11px; color: var(--text-2); margin-top: 3px; }
.stat-tile .t-v small { font-size: 13px; color: var(--text-2); font-weight: 600; }

.rc-more { display: grid; grid-template-rows: 0fr; transition: grid-template-rows .25s var(--e, ease); }
.rc-open .rc-more { grid-template-rows: 1fr; margin-top: 10px; }
.rc-more-in { overflow: hidden; min-height: 0; display: flex; flex-direction: column; gap: 10px; }
@media (prefers-reduced-motion: reduce) { .rc-more { transition: none; } }


/* ==== SPLASH "Ignição do Diamante" — LiveGuru Studio ===================== */
/* 1 canvas + DOM animado só com opacity/transform (GPU-friendly).
   O canvas forma o ◆ na posição REAL do .lgs-mark (medida em runtime),
   então o crossfade canvas->DOM é pixel-perfect por construção.            */
#lgSplash {
  position: fixed; inset: 0; z-index: 9999;
  background:
    radial-gradient(900px 520px at 22% 12%, rgba(139, 92, 246, 0.10), transparent 60%),
    radial-gradient(760px 460px at 82% 88%, rgba(16, 185, 129, 0.07), transparent 60%),
    var(--bg);
  display: flex; align-items: center; justify-content: center;
  overflow: hidden; cursor: pointer;
  opacity: 1; transition: opacity .4s ease;
}
#lgSplash.saindo { opacity: 0; pointer-events: none; }
#lgSplash.oculto { display: none; }

.lgs-cv { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; }

/* halo que acende na lapidação — só opacity/transform */
.lgs-aura {
  position: absolute; z-index: 1; left: 50%; top: 50%;
  width: 440px; height: 440px; border-radius: 50%;
  background: radial-gradient(circle,
    rgba(139, 92, 246, 0.16) 0%, rgba(16, 185, 129, 0.05) 45%, transparent 70%);
  opacity: 0; transform: translate(-50%, -50%) scale(.72);
  transition: opacity .5s ease, transform .9s cubic-bezier(.22, 1, .36, 1);
  pointer-events: none; will-change: opacity, transform;
}
#lgSplash.pulso .lgs-aura,
#lgSplash.formado .lgs-aura { opacity: 1; transform: translate(-50%, -50%) scale(1); }

.lgs-boot {
  position: relative; z-index: 2;
  display: flex; flex-direction: column; align-items: center; gap: 18px;
  width: min(520px, 84vw);
}

/* wordmark DOM: o CONTAINER só anima opacity (SEM transform) — o rect do ◆
   medido pelo JS já é a posição final exata; nada pula no crossfade */
.lgs-word {
  font-family: var(--font-head);
  font-weight: 700; font-size: clamp(30px, 9vw, 54px); letter-spacing: .04em;
  display: flex; align-items: center; gap: 14px;
  opacity: 0; transition: opacity .35s ease; will-change: opacity;
}
#lgSplash.formado .lgs-word { opacity: 1; }

/* font-size preservado — o canvas do splash mede o rect/fontSize deste elemento p/ formar o ◆ */
.lgs-word .lgs-mark { font-size: clamp(24px, 6.6vw, 40px); width: 1.9em; height: 1.9em; display: inline-block; flex: 0 0 auto; }
.lgs-word b { font-weight: 700; }
.lgs-word b span { color: var(--accent); }
.lgs-word small {
  font-size: 12px; font-weight: 600; letter-spacing: .38em;
  color: var(--text-3); text-transform: uppercase;
  align-self: flex-end; margin-bottom: 9px;
}

/* o texto brota do diamante em cascata (transform/opacity só) */
.lgs-word b, .lgs-word small {
  opacity: 0; transform: translateX(-8px);
  transition: opacity .4s ease .10s, transform .45s cubic-bezier(.22, 1, .36, 1) .10s;
  will-change: opacity, transform;
}
.lgs-word small { transition-delay: .20s; }
#lgSplash.formado .lgs-word b,
#lgSplash.formado .lgs-word small { opacity: 1; transform: none; }

.lgs-line { display: flex; align-items: center; gap: 6px; min-height: 16px; }
.lgs-msg {
  font-family: var(--font-mono); font-size: 11px; font-weight: 500;
  letter-spacing: .16em; text-transform: uppercase; color: var(--text-3);
}
.lgs-caret {
  width: 6px; height: 12px; background: var(--emerald);
  animation: lgsCaret 1.1s steps(1) infinite;
}
@keyframes lgsCaret { 50% { opacity: 0; } }

.lgs-skip {
  position: absolute; bottom: 26px; right: 30px; z-index: 2;
  font-family: var(--font-mono); font-size: 10px; letter-spacing: .22em;
  text-transform: uppercase; color: var(--text-3); opacity: .65;
}

@media (prefers-reduced-motion: reduce) {
  .lgs-caret { animation: none; }
  .lgs-aura { transition: opacity .4s ease; transform: translate(-50%, -50%); }
  .lgs-word b, .lgs-word small { transition: opacity .4s ease; transform: none; }
}
/* ==== fim do bloco portável ============================================= */

/* ==========================================================================
   Fatia 4 — peças reativas ao bus lg:event (placar temas, radar, recorde,
   vitrine). Prefixo .stfx-; temas do placar: .plc-neon / .plc-led / .plc-luxo.
   ========================================================================== */
.stfx-placar .lbl .n { color: var(--li-accent, #10B981); font-weight: 800; }

/* LI v3 — MODELOS SÓ MUDAM PALETA (fonte consistente: a troca de letra é opt-in
   via .li3-font-mono/.li3-font-serif) e a cor do picker vale nos 3 modelos
   (var(--li-accent, fallback)); fundo/borda parametrizados (--li3-bg/--li3-border) */
/* tema NEON — vidro escuro com glow ciano/roxo */
.stfx-placar.plc-neon { background: var(--li3-bg, rgba(10,6,20,.78)); border-color: var(--li3-border, rgba(34,211,238,.55)); box-shadow: 0 0 14px rgba(34,211,238,.35), 0 0 30px rgba(139,92,246,.25), 0 6px 18px rgba(0,0,0,.45); }
.stfx-placar.plc-neon .big { color: var(--li-accent, #22D3EE); text-shadow: 0 0 8px rgba(34,211,238,.9), 0 0 18px rgba(139,92,246,.6); }
.stfx-placar.plc-neon .bar i { background: linear-gradient(90deg, var(--li-accent, #22D3EE), #8B5CF6); box-shadow: 0 0 8px rgba(34,211,238,.8); }

/* tema LED — painel preto, dígitos âmbar (mono só com "Fonte temática" ligada) */
.stfx-placar.plc-led { background: var(--li3-bg, #050505); border-color: var(--li3-border, #27272a); border-radius: 6px; }
.stfx-placar.plc-led .big { color: var(--li-accent, #FDE047); font-family: inherit; letter-spacing: .08em; text-shadow: 0 0 6px rgba(253,224,71,.55); }
.stfx-placar.plc-led .lbl { color: #86EFAC; letter-spacing: .18em; }
.stfx-placar.plc-led .lbl .n { color: var(--li-accent, #FDE047); }
.stfx-placar.plc-led .bar { background: #18181b; border-radius: 0; }
.stfx-placar.plc-led .bar i { background: var(--li-accent, #FDE047); border-radius: 0; }

/* tema LUXO — dourado sobre fundo âmbar profundo (serif só via Fonte temática) */
.stfx-placar.plc-luxo { background: var(--li3-bg, linear-gradient(160deg, rgba(24,16,4,.92), rgba(10,8,2,.88))); border-color: var(--li3-border, rgba(251,191,36,.55)); box-shadow: 0 8px 22px rgba(0,0,0,.5), inset 0 1px 0 rgba(251,191,36,.25); }
.stfx-placar.plc-luxo .big { color: var(--li-accent, #FBBF24); font-family: inherit; }
.stfx-placar.plc-luxo .lbl { color: #E7D8AE; letter-spacing: .2em; }
.stfx-placar.plc-luxo .lbl .n { color: var(--li-accent, #FBBF24); }
.stfx-placar.plc-luxo .bar i { background: linear-gradient(90deg, #B45309, var(--li-accent, #FBBF24)); }

/* LI v3 — fontes opt-in do placar (toggle "Fonte temática" na gaveta) */
.stfx-placar.li3-font-mono { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; }
.stfx-placar.li3-font-serif { font-family: Georgia, 'Times New Roman', serif; }

/* radar do agora — pilha fixa de toasts de venda (max 3) */
.stfx-radar { position: absolute; top: 64px; right: 10px; z-index: 6; display: flex; flex-direction: column; gap: 6px; align-items: flex-end; pointer-events: none; }
.stfx-toast { font-size: 11px; font-weight: 700; color: #fff; padding: 6px 10px; border-radius: 10px; background: rgba(16,185,129,.88); border: 1px solid rgba(255,255,255,.25); box-shadow: 0 6px 16px rgba(0,0,0,.4); white-space: nowrap; font-variant-numeric: tabular-nums; animation: stfxToastIn .35s cubic-bezier(.34,1.56,.64,1) 1; }
@keyframes stfxToastIn { 0% { transform: translateX(24px) scale(.7); opacity: 0; } 60% { transform: translateX(-3px) scale(1.06); } 100% { transform: none; opacity: 1; } }

/* Fatia 6 — radar em 3 tiers por valor: t1 discreto · t2 brilho · t3 VENDÃO */
.stfx-toast--t1 { font-size: 10px; font-weight: 600; opacity: .85; padding: 4px 8px; background: rgba(16,185,129,.62); }
.stfx-toast--t2 { background: linear-gradient(120deg, rgba(16,185,129,.92), rgba(34,211,238,.85)); box-shadow: 0 0 12px rgba(34,211,238,.5), 0 6px 16px rgba(0,0,0,.4); }
.stfx-toast--t3 { font-size: 13px; font-weight: 900; letter-spacing: .02em; padding: 8px 14px; background: linear-gradient(120deg, #B45309, #F59E0B, #EF4444); border-color: rgba(253,224,71,.85); box-shadow: 0 0 18px rgba(245,158,11,.85), 0 0 34px rgba(239,68,68,.5), 0 8px 20px rgba(0,0,0,.45); text-shadow: 0 1px 3px rgba(0,0,0,.55); animation: stfxToastIn .35s cubic-bezier(.34,1.56,.64,1) 1, stfxT3Shake .5s ease .35s 1; }
@keyframes stfxT3Shake { 0%, 100% { transform: none; } 20% { transform: translateX(-4px) rotate(-1.5deg); } 40% { transform: translateX(4px) rotate(1.5deg); } 60% { transform: translateX(-3px); } 80% { transform: translateX(3px); } }

/* recorde da noite — banner central no topo (centra por margin, sem transform:
   o transform dos [data-fxk] é reservado pro scale/drag) */
.stfx-recorde { position: absolute; top: 10px; left: 0; right: 0; margin: 0 auto; width: max-content; z-index: 6; display: flex; align-items: center; gap: 8px; padding: 7px 12px; border-radius: 999px; background: rgba(8,8,10,.78); border: 1px solid rgba(251,191,36,.6); box-shadow: 0 0 14px rgba(251,191,36,.3); font-size: 11px; color: #FDE68A; }
.stfx-recorde b { font-size: 10px; letter-spacing: .08em; }
.stfx-recorde .val { font-weight: 800; color: var(--li-accent, #FBBF24); font-variant-numeric: tabular-nums; }

/* vitrine viva — contador "restam N" com pulso vermelho a cada venda */
.stfx-vitrine .n { font-weight: 800; }
.stfx-vitrine.stfx-hot { animation: stfxHot .5s ease 1; }
@keyframes stfxHot { 0% { background: rgba(239,68,68,.95); box-shadow: 0 0 14px rgba(239,68,68,.7); } 100% { background: rgba(139,92,246,.86); } }

@media (prefers-reduced-motion: reduce) {
  .stfx-toast, .stfx-vitrine.stfx-hot { animation: none; }
}

/* ===== Fatia 5 — meta e urgência (pote / foguete / cronômetro / cupom / roda) ===== */

/* cronômetro de oferta — urgência (<60s): vermelho vivo pulsante */
.stfx-countdown.stfx-cd-urgent { background: rgba(220,38,38,.97); border-color: rgba(255,255,255,.5); box-shadow: 0 0 14px rgba(239,68,68,.75); animation: stfxCdUrgent .9s ease-in-out infinite; }
@keyframes stfxCdUrgent { 0%, 100% { transform: scale(var(--li-scale, 1)); } 50% { transform: scale(calc(var(--li-scale, 1) * 1.07)); } }
.stfx-countdown.stfx-cd-urgent.lg-placed.lg-axis-xy { animation: stfxCdUrgentXY .9s ease-in-out infinite; }
@keyframes stfxCdUrgentXY { 0%, 100% { transform: translate(-50%, -50%) scale(var(--li-scale, 1)); } 50% { transform: translate(-50%, -50%) scale(calc(var(--li-scale, 1) * 1.07)); } }

/* Fatia 6 — cronômetro tema ANEL (.cd-anel): círculo SVG que esvazia com o
   tempo (stroke-dashoffset pelo MESMO ticker), número no centro */
.stfx-countdown .cd-ring { display: none; }
.stfx-countdown.cd-anel { flex-direction: column; justify-content: center; gap: 1px; width: 74px; height: 74px; padding: 0; border-radius: 50%; background: rgba(8,8,10,.8); border-color: rgba(239,68,68,.55); }
.stfx-countdown.cd-anel .cd-ring { display: block; position: absolute; inset: 3px; transform: rotate(-90deg); }
.stfx-countdown.cd-anel .cd-ring circle { fill: none; stroke-width: 5; }
.stfx-countdown.cd-anel .cd-ring-bg { stroke: rgba(255,255,255,.14); }
.stfx-countdown.cd-anel .cd-ring-fg { stroke: var(--li-accent, #EF4444); stroke-linecap: round; stroke-dasharray: 163.36; filter: drop-shadow(0 0 4px rgba(239,68,68,.7)); transition: stroke-dashoffset .5s linear; }
.stfx-countdown.cd-anel .t { font-size: 13px; font-weight: 900; }

/* pote que enche — jarra ~90x120 com nível (height% via transição) */
.stfx-pote { position: absolute; right: 14px; bottom: 14px; width: 90px; height: 120px; display: flex; flex-direction: column; align-items: center; gap: 3px; }
.stfx-pote .pt-lid { width: 46px; height: 8px; border-radius: 4px 4px 0 0; background: rgba(255,255,255,.28); border: 1px solid rgba(255,255,255,.3); }
.stfx-pote .pt-jar { position: relative; width: 72px; flex: 1; border-radius: 8px 8px 26px 26px; background: var(--li3-bg, rgba(8,8,10,.45)); border: 2px solid var(--li3-border, rgba(255,255,255,.38)); overflow: hidden; box-shadow: inset 0 0 10px rgba(0,0,0,.4), 0 4px 14px rgba(0,0,0,.4); }
.stfx-pote .pt-fill { position: absolute; left: 0; right: 0; bottom: 0; display: block; background: linear-gradient(180deg, var(--li-accent, #F59E0B), rgba(245,158,11,.75)); box-shadow: 0 -2px 8px rgba(251,191,36,.55); transition: height .6s cubic-bezier(.22,1,.36,1); }
.stfx-pote .pt-pct { font-size: 10px; font-weight: 800; color: #fff; text-shadow: 0 1px 3px rgba(0,0,0,.7); font-variant-numeric: tabular-nums; }
.stfx-pote .pt-coin { position: absolute; top: 0; font-size: 12px; line-height: 1; pointer-events: none; animation: stfxCoinFall .7s ease-in 1 both; }
@keyframes stfxCoinFall { 0% { transform: translateY(-12px); opacity: 0; } 25% { opacity: 1; } 100% { transform: translateY(78px); opacity: 0; } }
.stfx-pote.pt-full .pt-jar { border-color: rgba(251,191,36,.9); box-shadow: 0 0 16px rgba(251,191,36,.8), 0 0 34px rgba(251,191,36,.4), inset 0 0 10px rgba(0,0,0,.4); animation: stfxPoteGlow 1.2s ease-in-out infinite; }
@keyframes stfxPoteGlow { 0%, 100% { box-shadow: 0 0 16px rgba(251,191,36,.8), 0 0 34px rgba(251,191,36,.4), inset 0 0 10px rgba(0,0,0,.4); } 50% { box-shadow: 0 0 24px rgba(251,191,36,1), 0 0 50px rgba(251,191,36,.6), inset 0 0 10px rgba(0,0,0,.4); } }

/* foguete da meta — 🚀 sobe pela trilha (bottom% via transição) */
.stfx-foguete { position: absolute; left: 16px; bottom: 14px; width: 34px; height: 128px; }
.stfx-foguete .fg-track { position: absolute; left: 50%; top: 8px; bottom: 0; width: 3px; margin-left: -1.5px; border-radius: 99px; background: linear-gradient(180deg, var(--li-accent, #F59E0B), rgba(255,255,255,.12)); opacity: .55; }
.stfx-foguete .fg-flag { position: absolute; top: -6px; left: 50%; transform: translateX(-50%); font-size: 13px; }
.stfx-foguete .fg-ship { position: absolute; left: 50%; bottom: 0; transform: translateX(-50%) rotate(-45deg); font-size: 22px; line-height: 1; filter: drop-shadow(0 2px 6px rgba(0,0,0,.5)); transition: bottom .6s cubic-bezier(.22,1,.36,1); }
.stfx-foguete.fg-launch .fg-ship { transition: transform 1.1s ease-in, opacity 1.1s ease-in; transform: translateX(-50%) translateY(-170px) rotate(-45deg); opacity: 0; }

/* cupom relâmpago — selo pulsante com shimmer varrendo */
.stfx-cupom { top: 12px; left: 10px; overflow: hidden; background: var(--li3-bg, linear-gradient(120deg, rgba(180,83,9,.94), rgba(245,158,11,.94))); border-color: var(--li3-border, rgba(253,224,71,.8)); box-shadow: 0 0 12px rgba(245,158,11,.55); font-size: 11px; animation: stfxCupomPulse 1.6s ease-in-out infinite; }
.stfx-cupom .cp-code { color: #1c1004; background: #FDE047; padding: 1px 6px; border-radius: 6px; letter-spacing: .06em; }
.stfx-cupom::after { content: ''; position: absolute; top: -20%; bottom: -20%; width: 34%; left: -50%; background: linear-gradient(100deg, transparent, rgba(255,255,255,.65), transparent); animation: stfxShimmer 2.2s ease-in-out infinite; }
/* idem: `left` fixo em -50%, percurso de 170% do contêiner sobre elemento de 34%
   = 500% do próprio elemento. Vale para .stfx-cupom::after e .stfx-cupomtimer::after,
   que têm a MESMA geometria (width 34% / left -50%). */
@keyframes stfxShimmer { 0% { transform: translateX(0); } 60%, 100% { transform: translateX(500%); } }
@keyframes stfxCupomPulse { 0%, 100% { box-shadow: 0 0 12px rgba(245,158,11,.55); } 50% { box-shadow: 0 0 20px rgba(253,224,71,.85); } }

/* roda da sorte — canvas 140px + botão Girar dentro da peça */
.stfx-roda { position: absolute; right: 14px; top: 84px; display: flex; flex-direction: column; align-items: center; gap: 6px; padding: 10px 10px 9px; border-radius: 14px; background: rgba(8,8,10,.72); border: 1px solid rgba(255,255,255,.16); backdrop-filter: blur(6px); box-shadow: 0 6px 18px rgba(0,0,0,.45); }
.stfx-roda .rd-cv { width: 140px; height: 140px; border-radius: 50%; box-shadow: 0 0 0 3px rgba(255,255,255,.22), 0 4px 14px rgba(0,0,0,.5); }
.stfx-roda .rd-ptr { position: absolute; top: 2px; left: 50%; transform: translateX(-50%); font-size: 13px; color: #fff; text-shadow: 0 1px 3px rgba(0,0,0,.8); z-index: 2; }
.stfx-roda .rd-go { font: 800 11px/1 var(--font-head, inherit); letter-spacing: .04em; color: #fff; padding: 6px 16px; border: 1px solid rgba(255,255,255,.3); border-radius: 999px; background: linear-gradient(120deg, #8B5CF6, #6D28D9); cursor: pointer; box-shadow: 0 3px 10px rgba(0,0,0,.4); }
.stfx-roda .rd-go:hover { filter: brightness(1.12); }
.stfx-roda .rd-go:disabled { opacity: .55; cursor: default; }
.stfx-roda .rd-win { position: absolute; left: 50%; bottom: -34px; transform: translateX(-50%); white-space: nowrap; font-size: 12px; font-weight: 800; color: #fff; padding: 6px 12px; border-radius: 999px; background: rgba(16,185,129,.92); border: 1px solid rgba(255,255,255,.3); box-shadow: 0 6px 16px rgba(0,0,0,.45); animation: stfxToastIn .35s cubic-bezier(.34,1.56,.64,1) 1; }

/* Fatia 6 — roda tema NEON: cores saturadas (paleta no canvas) + glow forte */
.stfx-roda.rd-neon { background: rgba(12,4,26,.82); border-color: rgba(168,85,247,.65); box-shadow: 0 0 16px rgba(168,85,247,.45), 0 0 34px rgba(34,211,238,.25), 0 6px 18px rgba(0,0,0,.45); }
.stfx-roda.rd-neon .rd-cv { box-shadow: 0 0 0 3px rgba(168,85,247,.75), 0 0 18px rgba(168,85,247,.65), 0 4px 14px rgba(0,0,0,.5); }
.stfx-roda.rd-neon .rd-go { background: linear-gradient(120deg, #A855F7, #22D3EE); box-shadow: 0 0 12px rgba(34,211,238,.55); }

/* Fatia 6 — roda tema CASSINO: vermelho/dourado + anel de "lâmpadas" em
   perseguição barata (repeating-conic-gradient mascarado + rotate em steps) */
.stfx-roda.rd-cassino { background: linear-gradient(160deg, rgba(60,8,8,.92), rgba(24,4,4,.9)); border-color: rgba(251,191,36,.7); box-shadow: 0 0 14px rgba(251,191,36,.35), 0 6px 18px rgba(0,0,0,.5); }
.stfx-roda.rd-cassino .rd-cv { box-shadow: 0 0 0 3px rgba(251,191,36,.55), 0 4px 14px rgba(0,0,0,.5); }
.stfx-roda.rd-cassino .rd-go { background: linear-gradient(120deg, #B91C1C, #F59E0B); border-color: rgba(253,224,71,.7); }
.stfx-roda.rd-cassino::before { content: ''; position: absolute; top: 80px; left: 50%; width: 160px; height: 160px; margin: -80px 0 0 -80px; border-radius: 50%; pointer-events: none; background: repeating-conic-gradient(#FDE047 0 8deg, rgba(253,224,71,.14) 8deg 30deg); -webkit-mask: radial-gradient(circle, transparent 70px, #000 71px, #000 77px, transparent 78px); mask: radial-gradient(circle, transparent 70px, #000 71px, #000 77px, transparent 78px); filter: drop-shadow(0 0 4px rgba(253,224,71,.8)); animation: rdChase .9s steps(4) infinite; }
@keyframes rdChase { to { transform: rotate(30deg); } }

@media (prefers-reduced-motion: reduce) {
  .stfx-countdown.stfx-cd-urgent, .stfx-pote.pt-full .pt-jar, .stfx-cupom, .stfx-cupom::after, .stfx-roda .rd-win, .stfx-pote .pt-coin { animation: none; }
  .stfx-pote .pt-fill, .stfx-foguete .fg-ship { transition: none; }
  /* Fatia 6 */
  .stfx-roda.rd-cassino::before, .stfx-combo .cb-in.cb-pop { animation: none; }
  .stfx-countdown.cd-anel .cd-ring-fg, .stfx-combo { transition: none; }
}

/* ==========================================================================
   GESTÃO DE PRODUTOS (.pv-) — tela per-perfil (Vitrine | Próxima live) +
   modal "Adicionar produtos". Reusa .tbl/.subtabs/.prof-search/.btn.
   ========================================================================== */
.pv-toolbar { display: flex; align-items: center; gap: 14px; margin-top: 18px; flex-wrap: wrap; }
.pv-toolbar .pv-search { flex: 1 1 240px; max-width: 340px; }
.pv-count { margin-left: auto; font-size: 12px; color: var(--text-3); }
.pv-tab-n { display: inline-block; min-width: 18px; padding: 1px 6px; border-radius: 99px; background: var(--accent-soft); color: var(--accent); font-size: 10.5px; font-weight: 700; }
.pv-bulk { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: 12px; padding: 8px 14px; border: 1px solid var(--border-neutral); border-radius: 12px; background: var(--bg-raise); font-size: 12.5px; color: var(--text-2); }
.pv-bulk-btns { display: flex; gap: 6px; }
.pv-tbl td { vertical-align: middle; }
.pv-cell-ck { width: 34px; }
.pv-cell-ck input { accent-color: var(--accent); cursor: pointer; }
.pv-row.pv-hid { opacity: .55; }
.pv-prod { display: flex; align-items: center; gap: 10px; min-width: 210px; }
.pv-thumb { width: 36px; height: 36px; border-radius: 9px; display: inline-flex; align-items: center; justify-content: center; font-size: 15px; flex: 0 0 auto; }
.pv-nome { font-weight: 600; color: var(--text); font-size: 13px; }
.pv-sub { font-size: 11px; color: var(--text-3); }
.pv-pill { display: inline-block; padding: 2px 9px; border-radius: 99px; font-size: 10.5px; font-weight: 700; white-space: nowrap; }
.pv-pill.ok { background: var(--emerald-soft); color: var(--emerald); }
.pv-pill.off { background: rgba(148, 163, 184, 0.14); color: var(--text-3); }
.pv-pill.warn { background: rgba(245, 158, 11, 0.14); color: var(--warn); }
.pv-acts { display: flex; align-items: center; gap: 6px; flex-wrap: nowrap; }
.pv-acts .btn { white-space: nowrap; flex: 0 0 auto; }
.pv-mini { width: 26px; height: 26px; border-radius: 7px; border: 1px solid var(--border-neutral); background: transparent; color: var(--text-3); font-size: 11px; cursor: pointer; transition: var(--t); flex: 0 0 auto; }
.pv-mini:hover:not(:disabled) { color: var(--text); border-color: var(--accent); }
.pv-mini:disabled { opacity: .35; cursor: default; }
.pv-danger { color: var(--live); }
.pv-danger:hover:not(:disabled) { color: var(--live); border-color: var(--live); }
/* próxima live — lista ordenada com pin único */
.pv-nl-list { margin-top: 16px; display: flex; flex-direction: column; gap: 8px; }
.pv-nl-row { display: flex; align-items: center; gap: 12px; padding: 10px 14px; border: 1px solid var(--border-card); border-radius: 12px; background: var(--bg-card); }
.pv-nl-row.pin { border-color: var(--accent); box-shadow: 0 0 0 1px var(--accent-soft); }
.pv-nl-row .pv-acts { margin-left: auto; }
.pv-nl-pos { width: 22px; text-align: center; color: var(--text-3); font-size: 12px; flex: 0 0 auto; }
.pv-nl-pin { display: inline-flex; align-items: center; cursor: pointer; font-size: 15px; opacity: .45; transition: var(--t); position: relative; }
.pv-nl-pin:hover { opacity: .85; }
.pv-nl-row.pin .pv-nl-pin { opacity: 1; }
.pv-nl-pin input { position: absolute; opacity: 0; pointer-events: none; }
.pv-note { margin-top: 14px; font-size: 12px; color: var(--text-3); }
/* modal "Adicionar produtos" */
.pv-modal { width: min(760px, 94vw); }
.pv-addp-tabs { display: flex; gap: 6px; margin: 14px 0 12px; border-bottom: 1px solid var(--border-soft); }
.pv-modal .pv-search { width: 100%; max-width: none; margin-top: 4px; }
.pv-addp-wrap { max-height: 320px; overflow-y: auto; margin-top: 12px; }
.pv-urls { width: 100%; margin-top: 6px; padding: 12px; border-radius: 12px; border: 1px solid var(--border-neutral); background: var(--bg-raise); color: var(--text); font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 12px; resize: vertical; }
.pv-urls::placeholder { color: var(--text-3); }
.pv-urls:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-soft); }
.pv-addp-foot { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: 16px; flex-wrap: wrap; }
.pv-addp-cta { display: inline-flex; align-items: center; gap: 10px; }

/* ==== ADM · FATURAMENTO (admfat-) — receita por SKU, margem, alertas, pedidos */
.admfat-head { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; margin-bottom: 18px; }
.admfat-period { margin: 0; }
.admfat-demo { display: inline-flex; align-items: center; padding: 3px 10px; border-radius: 999px; font-size: 10.5px; font-weight: 700; letter-spacing: .02em; color: var(--warn); background: rgba(245,158,11,0.12); border: 1px solid rgba(245,158,11,0.35); }
.admfat-cards { margin-bottom: 6px; }
.admfat-tile .admfat-v { font-size: 26px; }
.admfat-sub { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px; }
.admfat-chip { font-size: 10.5px; font-weight: 700; padding: 2px 8px; border-radius: 999px; background: var(--bg-raise); color: var(--text-3); border: 1px solid var(--border-soft); }
.admfat-chip.ok { color: var(--emerald); background: rgba(52,211,153,0.1); border-color: rgba(52,211,153,0.3); }
.admfat-chip.pend { color: var(--warn); background: rgba(245,158,11,0.1); border-color: rgba(245,158,11,0.3); }
.admfat-chip.reemb { color: var(--live); background: var(--live-soft); border-color: rgba(244,63,94,0.3); }
.admfat-block { margin-top: 22px; padding: 18px 20px; background: var(--bg-card); border: 1px solid var(--border-soft); border-radius: var(--r-card); }
.admfat-block .adm-side-title { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.admfat-mrow { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; padding: 9px 0; border-bottom: 1px solid var(--border-soft); font-size: 12.5px; color: var(--text-2); }
.admfat-mrow:last-child { border-bottom: 0; }
.admfat-mrow b { min-width: 150px; color: var(--text); font-size: 13px; }
.admfat-mv { font-variant-numeric: tabular-nums; }
.admfat-mnone { font-size: 11.5px; color: var(--text-3); font-style: italic; }
.admfat-sem { display: inline-flex; align-items: center; gap: 6px; font-weight: 700; font-variant-numeric: tabular-nums; }
.admfat-sem i { width: 8px; height: 8px; border-radius: 50%; flex: none; }
.admfat-sem.verde { color: var(--emerald); } .admfat-sem.verde i { background: var(--emerald); box-shadow: 0 0 6px rgba(52,211,153,0.6); }
.admfat-sem.amarelo { color: var(--warn); } .admfat-sem.amarelo i { background: var(--warn); box-shadow: 0 0 6px rgba(245,158,11,0.6); }
.admfat-sem.vermelho { color: var(--live); } .admfat-sem.vermelho i { background: var(--live); box-shadow: 0 0 6px rgba(244,63,94,0.6); }
.admfat-alert { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; padding: 12px 14px; border-radius: 12px; background: var(--live-soft); border: 1px solid rgba(244,63,94,0.35); }
.admfat-alert-badge { font-size: 10px; font-weight: 800; letter-spacing: .05em; text-transform: uppercase; color: var(--live); padding: 3px 8px; border-radius: 999px; background: rgba(244,63,94,0.14); border: 1px solid rgba(244,63,94,0.4); flex: none; }
.admfat-alert-txt { flex: 1; min-width: 220px; font-size: 12.5px; color: var(--text-2); }
.admfat-alert-txt b { color: var(--text); }
.admfat-note { margin: 12px 0 0; font-size: 11.5px; color: var(--text-3); font-style: italic; }
.admfat-tbl .admfat-pid { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 11.5px; color: var(--text-2); }
.admfat-buyer b { display: block; font-size: 12.5px; color: var(--text); }
.admfat-buyer small { display: block; font-size: 11px; color: var(--text-3); }
.admfat-st { font-size: 10.5px; font-weight: 700; padding: 2px 8px; border-radius: 999px; }
.admfat-st-pago { color: var(--emerald); background: rgba(52,211,153,0.12); }
.admfat-st-pendente { color: var(--warn); background: rgba(245,158,11,0.12); }
.admfat-st-reembolsado { color: var(--live); background: var(--live-soft); }

/* ==== ADM · CUSTOS & PREÇOS POR SKU (admcst-) — custo editável, farol 30%, escada do proxy */
.admcst-note { margin: 6px 0 14px; font-size: 12px; color: var(--text-3); }
.admcst-sku b { display: block; font-size: 12.5px; color: var(--text); }
.admcst-sku small { display: block; font-size: 11px; color: var(--text-3); }
.admcst-money { display: inline-flex; align-items: center; gap: 6px; }
.admcst-money > span { font-size: 10.5px; font-weight: 700; color: var(--text-3); flex: none; }
.admcst-in { width: 116px; padding: 6px 9px; border-radius: 9px; border: 1px solid var(--border-soft); background: var(--bg-raise); color: var(--text); font-family: inherit; font-size: 12.5px; font-variant-numeric: tabular-nums; transition: var(--t); }
.admcst-in-sm { width: 82px; }
.admcst-in::placeholder { color: var(--text-3); font-style: italic; font-size: 11.5px; }
.admcst-in:hover { border-color: var(--accent); }
.admcst-in:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-soft); }
.admcst-sel { border-radius: 9px; }
.admcst-margem { min-width: 170px; }
.admcst-vazio { font-size: 11.5px; color: var(--text-3); font-style: italic; }
.admcst-fura { display: block; margin-top: 3px; font-size: 10.5px; font-weight: 800; letter-spacing: .03em; text-transform: uppercase; color: var(--live); }
.admcst-escada { margin-top: 18px; padding: 14px 16px; border-radius: 12px; border: 1px dashed var(--border-soft); background: var(--bg-raise); }
.admcst-esc-title { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin: 0 0 10px; font-size: 13px; color: var(--text); }
.admcst-tier { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; padding: 8px 0; border-bottom: 1px solid var(--border-soft); font-size: 12.5px; color: var(--text-2); }
.admcst-tier:last-child { border-bottom: 0; }
.admcst-tier b { min-width: 78px; color: var(--text); font-size: 12.5px; }
.admcst-tier-p { font-variant-numeric: tabular-nums; }
.admcst-tier-cem .admcst-tier-p b { min-width: 0; color: var(--accent); }
.admcst-foot { margin-top: 14px; display: flex; justify-content: flex-end; }

/* ============================================================================
   COMUNIDADE v2 (cm2) — call da comunidade · reações fixas · rail direito
   ============================================================================ */
/* --- HOOK de fundo da tela Comunidade ---------------------------------------
   Fundo escuro atual por padrão. Pra ligar a imagem que o dono vai fornecer,
   troque a var abaixo por um url() apontando pro arquivo em assets/ (ex.:
   comunidade-bg.png). NÃO deixo o url() escrito aqui de propósito: o build
   reinlina assets referenciados e quebraria se o PNG ainda não existir.
   Se a var ficar em none, cai no fundo escuro atual (fail-safe). */
/* O fundo do beco pertence à TELA, não à coluna de conteúdo: pintado no
   .cm2-wrap (max-width 1000px) ele só aparecia numa faixa central/topo e o resto
   ficava preto. Agora vai no <section id="screen-comunidade">, com margens
   negativas que anulam o padding do .content — assim a cena ocupa a área toda —
   e background-attachment: fixed, que faz o `cover` ser calculado contra a
   VIEWPORT (parede à esquerda, cidade + drone no topo direito, graffiti à
   direita, tudo no enquadramento certo) e não rolar junto com o feed. */
#screen-comunidade {
  --cm2-bg-image: url("assets/comunidade-bg.jpg");   /* fundo do beco (ambiente) */
  position: relative;
  margin: -30px -34px -40px;    /* anula o padding do .content: a cena vai de borda a borda */
  padding: 30px 34px 40px;
  min-height: 100%;
}
/* O beco é uma CAMADA da tela, não o fundo da coluna de conteúdo: pintado no
   .cm2-wrap (max-width 1000px) ele virava uma faixa e o resto ficava preto.
   Aqui vira um ::before `sticky` de 100vh com margin-bottom negativa — ocupa
   zero no layout, fica grudado no topo enquanto o feed rola (nada de repetição
   feia) e, por ser filho da seção, NUNCA invade a topbar nem a sidebar.
   background-size 100% auto (e não cover) porque a arte é bem mais larga que a
   área útil: em cover as pontas seriam cortadas e sumiriam justamente o mascote
   e o graffiti à esquerda e o drone à direita. Assim a CENA INTEIRA aparece, e o
   pé dissolve no escuro pelo gradiente. */
#screen-comunidade::before {
  content: ""; position: sticky; top: 0; z-index: 0; display: block;
  height: 100vh; pointer-events: none;
  /* As margens negativas da seção a tiram do padding do .content, mas o padding é
     RE-ADICIONADO nela — e o ::before nasce dentro desse padding-box, deixando uma
     faixa morta de 30px no topo e 34px nas laterais. Aqui ele anula o padding do
     PRÓPRIO pai e encosta de borda a borda. O -100vh de baixo segue zerando a
     altura no layout (a camada não empurra o feed). */
  margin: -30px -34px -100vh;
  background-color: #0A0813;
  /* véu MÍNIMO por cima da arte (.06 → .22): a cena precisa APARECER. A
     legibilidade vem dos cards translúcidos, não de apagar o fundo. Se a var
     cair em none, o gradiente sozinho ainda cobre (fail-safe). */
  background-image: linear-gradient(180deg, rgba(9,8,14,.06) 0%, rgba(9,8,14,.22) 46%, rgba(10,8,19,.86) 78%, #0A0813 100%), var(--cm2-bg-image);
  background-size: cover, 100% auto;
  background-position: center, center top;
  background-repeat: no-repeat, no-repeat;
}
#screen-comunidade > * { position: relative; z-index: 1; }
/* telas estreitas: 100% de largura deixaria a arte numa tira fina no topo — aí
   vale mais recortar (cover). O recorte vai pro lado direito da cena (cidade,
   drone e cerca), que é a parte com leitura; o miolo é parede lisa. */
@media (max-width: 900px) {
  #screen-comunidade::before { background-size: cover, cover; background-position: center, 74% top; }
}
.comunidade-view-wrap.cm2-wrap { position: relative; background: none; }
/* Cards da Comunidade (e SÓ eles) ficam translúcidos — a arte do beco transparece
   por baixo, como na referência. A call neon e o post fixado seguem opacos de
   propósito: as regras deles vêm DEPOIS desta, com a mesma especificidade, então
   o próprio letreiro/destaque continua intacto. */
.cm2-wrap .card,
.cm2-wrap .post-card,
.cm2-wrap .composer,
.cm2-wrap .cm2-rail-card {
  background-color: rgba(14,13,22,.74);
  backdrop-filter: blur(10px) saturate(115%);
  -webkit-backdrop-filter: blur(10px) saturate(115%);
}

/* --- card da call (topo da aba, acima das tabs) --- */
/* Call da comunidade — LETREIRO NEON violeta: fundo quase-preto/roxo, borda
   neon e glow bloom ao redor (0 0 0 1px violeta + 0 0 30px violeta translúcido). */
.cm2-call { position: relative; display: flex; align-items: center; gap: var(--sp-4); flex-wrap: wrap; padding: var(--sp-5); margin-top: var(--sp-4);
  border-radius: 19px;
  border: 1px solid rgba(167,139,250,.65);
  background: radial-gradient(120% 140% at 50% -10%, rgba(139,92,246,.20), transparent 60%), linear-gradient(180deg, #16101f, #0c0a12 78%);
  box-shadow: 0 0 0 1px rgba(139,92,246,.55), 0 0 30px rgba(139,92,246,.35), 0 0 60px -14px rgba(139,92,246,.45), inset 0 1px 0 rgba(255,255,255,.04); }
.cm2-call::before { content: ''; position: absolute; inset: -3px; border-radius: inherit; z-index: -1; pointer-events: none;
  background: radial-gradient(60% 120% at 50% 0%, rgba(139,92,246,.45), transparent 64%); filter: blur(11px); opacity: .85; }
.cm2-call.cm2-aberta { border-color: rgba(52,211,153,.7); box-shadow: 0 0 0 1px rgba(16,185,129,.55), 0 0 30px rgba(16,185,129,.32), 0 0 60px -14px rgba(16,185,129,.45); }
.cm2-call.cm2-aberta::before { background: radial-gradient(60% 120% at 50% 0%, rgba(16,185,129,.42), transparent 64%); }
.cm2-call.cm2-aberta { background: radial-gradient(120% 140% at 50% -10%, rgba(16,185,129,.18), transparent 60%), linear-gradient(180deg, #0d1a15, #0a1210 78%); }
/* Botão "Me avisar" — CTA violeta preenchido, com brilho neon + estado avisado */
.cm2-avisar { font-weight: 700; flex: 0 0 auto; box-shadow: 0 0 18px -2px rgba(139,92,246,.6); }
.cm2-avisar.cm2-avisado { background: color-mix(in srgb, var(--emerald, #10B981) 16%, transparent); border: 1px solid rgba(16,185,129,.5); color: var(--emerald, #10B981); box-shadow: none; cursor: default; }
.cm2-call-info { flex: 1 1 220px; min-width: 0; }
/* Cabeçalho da Comunidade compacto — não come a dobra */
.cm2-wrap .page-kicker { margin-bottom: 2px; }
.cm2-wrap .page-title.com-title { font-size: 24px; margin: 0; }
.cm2-wrap .page-lead { margin: 3px 0 0; font-size: 13px; }
.cm2-wrap .page-head-row { margin-bottom: 4px; }
/* Kicker à esquerda em violeta, caixa-alta, com leve brilho */
.cm2-kicker { font-size: 11px; font-weight: 700; letter-spacing: .16em; text-transform: uppercase; color: #C4B5FD; text-shadow: 0 0 12px rgba(139,92,246,.65); }
.cm2-kicker.cm2-esmeralda { color: #6EE7B7; text-shadow: 0 0 12px rgba(16,185,129,.6); display: inline-flex; align-items: center; gap: 7px; }
.cm2-ponto { width: 8px; height: 8px; border-radius: 50%; background: var(--emerald); box-shadow: 0 0 0 0 var(--emerald-soft); }
@media (prefers-reduced-motion: no-preference) { .cm2-ponto { animation: pulse 1.4s var(--e) infinite; } }
.cm2-call-titulo { margin: 6px 0 0; font-size: 19px; font-weight: 700; line-height: 1.25; color: #fff; text-shadow: 0 1px 10px rgba(0,0,0,.4); }
.cm2-call-sub { margin: 3px 0 0; font-size: var(--fs-sm); color: var(--text-3); }

/* --- countdown estilo FLIP-CLOCK: cada bloco é uma caixinha própria --- */
.cm2-count { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.cm2-bloco { display: flex; flex-direction: column; align-items: center; min-width: 50px; padding: 8px 10px; border-radius: 11px;
  border: 1px solid rgba(167,139,250,.30);
  background: linear-gradient(180deg, rgba(139,92,246,.14), rgba(255,255,255,.02) 55%), #191225;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.06), 0 4px 10px -6px rgba(0,0,0,.6); }
.cm2-bloco b { font-size: 20px; font-weight: 700; line-height: 1; color: #fff; font-variant-numeric: tabular-nums; letter-spacing: .01em; }
.cm2-bloco small { margin-top: 4px; font-size: 9px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: #A78BFA; }
.cm2-sep { color: rgba(167,139,250,.55); font-weight: 700; font-size: 16px; }

/* --- reações fixas no rodapé do post (pílulas arredondadas discretas) --- */
.cm2-reacs { display: inline-flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.cm2-reac { display: inline-flex; align-items: center; gap: 5px; padding: 3px 9px; border-radius: 99px; border: 1px solid var(--border-neutral); background: transparent; color: var(--text-3); font-size: 13px; line-height: 1.4; cursor: pointer; font-family: inherit; transition: var(--t); }
.cm2-reac b { font-size: 11px; font-weight: 600; font-variant-numeric: tabular-nums; }
.cm2-reac:hover { border-color: var(--border); background: var(--bg-raise); color: var(--text-2); }
.cm2-reac.ativa { border-color: rgba(139, 92, 246, .45); background: var(--accent-soft); color: var(--text); }

/* --- mobile: a fileira de 5 cards não cabe → só o container das abas rola na
   horizontal (scroll suave, sem barra feia); zero overflow da página --- */
@media (max-width: 640px) {
  .comunidade-tabs {
    display: flex; grid-template-columns: none;
    flex-wrap: nowrap; overflow-x: auto; overflow-y: hidden;
    gap: 8px; padding-bottom: 4px; margin-inline: 0;
    scroll-snap-type: x proximity; -webkit-overflow-scrolling: touch;
    scrollbar-width: none; -ms-overflow-style: none;
  }
  .comunidade-tabs::-webkit-scrollbar { display: none; }
  .comunidade-tab { flex: 0 0 118px; min-height: 132px; scroll-snap-align: start; padding: 0 6px 8px; }
  .comunidade-tab .cm2-tab-lbl { font-size: 10.5px; padding: 4px 9px; }
}

/* --- etiqueta de post fixado (pílula violeta translúcida, canto sup. direito) --- */
.cm2-fixado { margin-left: auto; align-self: flex-start; flex: 0 0 auto; font-size: 11px; font-weight: 700; white-space: nowrap; color: #C4B5FD; background: rgba(139,92,246,.16); border: 1px solid rgba(167,139,250,.45); border-radius: 99px; padding: 3px 10px; box-shadow: 0 0 14px -4px rgba(139,92,246,.7); }

/* --- POST FIXADO em destaque NEON (herói do feed) — só o fixado ganha isto --- */
.post-card.post-fixado { position: relative; border: 1px solid rgba(167,139,250,.6);
  background: radial-gradient(120% 90% at 50% -20%, rgba(139,92,246,.12), transparent 55%), var(--bg-card);
  box-shadow: 0 0 0 1px rgba(139,92,246,.30), 0 0 26px -6px rgba(139,92,246,.42); }
.post-card.post-fixado .post-card-tag { color: #C4B5FD; letter-spacing: .1em; text-shadow: 0 0 10px rgba(139,92,246,.5); }

/* --- layout 2 colunas (feed + rail sticky) só em telas largas --- */
.cm2-rail { display: none; }
@media (min-width: 1100px) {
  .comunidade-view-wrap.cm2-wrap { max-width: 1000px; }
  .cm2-cols { display: grid; grid-template-columns: minmax(0, 1fr) 280px; gap: var(--sp-6); align-items: start; }
  .cm2-rail { display: flex; flex-direction: column; gap: var(--sp-4); position: sticky; top: var(--sp-4); margin-top: var(--sp-5); }
}
.cm2-rail-card { padding: var(--sp-4); }
.cm2-rail-titulo { margin: 0 0 var(--sp-3); font-size: 12px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--text-3); }
/* avatares lado a lado com respiro — sem overlap; "+N" ancorado à DIREITA */
.cm2-faces { display: flex; align-items: center; gap: 10px; flex-wrap: nowrap; }
.cm2-faces > * { margin-left: 0; }
.cm2-faces .cm2-faces-mais { margin-left: auto; }
.cm2-faces-mais { margin-left: var(--sp-2); font-size: var(--fs-sm); font-weight: 600; color: var(--text-3); }
.cm2-top { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 14px; }
.cm2-top-item { display: flex; align-items: center; gap: 12px; min-width: 0; }
.cm2-top-pos { font-size: 12px; font-weight: 700; color: var(--text-3); width: 20px; flex: 0 0 auto; font-variant-numeric: tabular-nums; }
.cm2-top-nome { font-size: var(--fs-sm); color: var(--text-2); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cm2-regras { margin: 0; padding-left: 18px; display: flex; flex-direction: column; gap: 6px; font-size: var(--fs-sm); color: var(--text-2); line-height: 1.45; }

/* ==========================================================================
   ESTÚDIO DE VOZ IA (.vz-) — saldo, clone com consentimento, geração ao vivo
   ========================================================================== */
.vz-beta, .vz-side-beta { font-size: 9px; font-weight: 800; letter-spacing: .08em; padding: 2px 6px; border-radius: 999px; background: var(--accent-soft); color: var(--accent); vertical-align: middle; }
.vz-side-beta { background: var(--accent); color: #fff; }
.vz-saldo { margin-top: 18px; }
.vz-honest { display: flex; gap: 12px; align-items: flex-start; margin: 16px 0 4px; padding: 12px 14px; border: 1px solid var(--warn-soft); background: var(--warn-soft); border-radius: var(--r-card); font-size: var(--fs-sm); color: var(--text-2); line-height: 1.5; }
.vz-honest b { color: var(--text); }
.vz-honest-ic { font-size: 18px; line-height: 1; flex: 0 0 auto; }
.vz-subtabs { margin-top: 18px; }
.vz-body { margin-top: 16px; }
.vz-card { padding: 18px; margin-bottom: 16px; }
.vz-h3 { margin: 0 0 4px; font-size: var(--fs-lg); color: var(--text); }
.vz-row { display: flex; align-items: flex-end; gap: 14px; flex-wrap: wrap; margin-bottom: 14px; }
.vz-field { display: flex; flex-direction: column; gap: 6px; font-size: 11px; letter-spacing: .04em; color: var(--text-2); font-weight: 600; flex: 1 1 220px; min-width: 0; }
.vz-field-lbl { font-size: 11px; letter-spacing: .04em; color: var(--text-2); font-weight: 600; align-self: center; }
.vz-clone-btn { flex: 0 0 auto; }
.vz-modo { align-items: center; }
.vz-radio { display: inline-flex; align-items: center; gap: 6px; font-size: var(--fs-sm); color: var(--text-2); cursor: pointer; font-weight: 500; }
.vz-radio input { accent-color: var(--accent); }
.vz-state { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; font-size: var(--fs-sm); color: var(--text-2); padding: 10px 12px; background: var(--bg-raise); border: 1px solid var(--border-neutral); border-radius: var(--r-btn); margin-bottom: 12px; }
.vz-state b { color: var(--text); }
.vz-state-sub { color: var(--text-3); font-size: var(--fs-meta); }
.vz-state-dot { width: 9px; height: 9px; border-radius: 50%; background: var(--text-3); flex: 0 0 auto; }
.vz-state-dot.on { background: var(--emerald); box-shadow: 0 0 0 3px var(--emerald-soft); }
@media (prefers-reduced-motion: no-preference) { .vz-state-dot.on { animation: pulse 1.4s var(--e) infinite; } }
.vz-cost { font-size: var(--fs-sm); color: var(--text-2); margin-bottom: 14px; }
.vz-cost b { color: var(--text); }
.vz-cost-sub { color: var(--text-3); font-size: var(--fs-meta); }
.vz-actions { display: flex; gap: 10px; flex-wrap: wrap; }
.vz-gen { display: flex; flex-direction: column; gap: 10px; margin-top: 12px; }
.vz-input { width: 100%; padding: 10px 12px; background: var(--bg-raise); border: 1px solid var(--border-neutral); color: var(--text); font-size: 14px; border-radius: var(--r-btn); font-family: var(--font-body); }
.vz-input:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-soft); }
.vz-textarea { resize: vertical; min-height: 64px; }
.vz-gen-foot { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.vz-cost-tag { font-size: var(--fs-sm); font-weight: 600; color: var(--accent); background: var(--accent-soft); padding: 5px 10px; border-radius: 999px; }
.vz-warn-inline { margin: 10px 0 0; font-size: var(--fs-sm); color: var(--warn); }
.vz-voices-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 14px; }
.vz-voice { display: flex; flex-direction: column; justify-content: space-between; gap: 14px; padding: 16px; background: var(--bg-raise); border: 1px solid var(--border-neutral); border-radius: var(--r-card); min-height: 120px; }
.vz-voice.ok { border-color: var(--emerald-soft); }
.vz-voice.warn { border-color: var(--warn-soft); }
.vz-voice.live { border-color: var(--live-soft); }
.vz-voice-h { display: flex; align-items: center; gap: 10px; }
.vz-voice-ic { font-size: 20px; line-height: 1; }
.vz-voice-id { display: flex; flex-direction: column; gap: 5px; min-width: 0; }
.vz-voice-id b { color: var(--text); font-size: 14px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.vz-badge { display: inline-flex; align-items: center; gap: 4px; font-size: 11px; font-weight: 600; width: fit-content; padding: 2px 8px; border-radius: 999px; background: var(--border-neutral); color: var(--text-2); }
.vz-badge.ok { background: var(--emerald-soft); color: var(--emerald); }
.vz-badge.warn { background: var(--warn-soft); color: var(--warn); }
.vz-badge.live { background: var(--live-soft); color: var(--live); }
.vz-badge.off { background: var(--border-neutral); color: var(--text-3); }
.vz-voice-foot { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.vz-card-hint { font-size: var(--fs-meta); color: var(--text-3); }
.vz-revoke { color: var(--live); }
.vz-voice-add { cursor: pointer; align-items: center; justify-content: center; text-align: center; gap: 6px; border-style: dashed; color: var(--text-2); font-size: var(--fs-sm); transition: var(--t); }
.vz-voice-add:hover { border-color: var(--accent); color: var(--text); }
.vz-voice-add-ic { font-size: 26px; line-height: 1; color: var(--accent); }
.vz-voice-add small { color: var(--text-3); font-size: var(--fs-meta); }
.vz-tbl th, .vz-tbl td { text-align: left; }
.vz-tag { display: inline-flex; font-size: 11px; font-weight: 600; padding: 2px 8px; border-radius: 999px; background: var(--accent-soft); color: var(--accent); }
.vz-tag.live { background: var(--emerald-soft); color: var(--emerald); }
/* Modal de clonagem (multi-step) */
.vz-modal { max-width: 460px; }
.vz-steps { display: flex; gap: 6px; margin-bottom: 16px; }
.vz-dot { flex: 1; height: 4px; border-radius: 999px; background: var(--border-neutral); transition: var(--t); }
.vz-dot.on { background: var(--accent); }
.vz-step h3 { margin: 4px 0 10px; }
.vz-step-k { font-size: 11px; letter-spacing: .06em; text-transform: uppercase; color: var(--accent); font-weight: 700; }
.vz-legal { font-size: var(--fs-sm); color: var(--text-2); line-height: 1.55; margin: 0 0 14px; }
.vz-legal b { color: var(--text); }
.vz-modal .vz-field { margin-bottom: 14px; }
.vz-check { display: flex; align-items: flex-start; gap: 8px; font-size: var(--fs-sm); color: var(--text-2); line-height: 1.5; cursor: pointer; }
.vz-check input { accent-color: var(--accent); margin-top: 2px; flex: 0 0 auto; }
.vz-check b { color: var(--text); }
.vz-challenge { margin: 0 0 14px; padding: 14px 16px; background: var(--bg-raise); border-left: 3px solid var(--accent); border-radius: 8px; color: var(--text); font-size: 15px; font-style: italic; line-height: 1.5; }
.vz-resumo { margin: 0; padding-left: 18px; display: flex; flex-direction: column; gap: 6px; font-size: var(--fs-sm); color: var(--text-2); line-height: 1.5; }
.vz-resumo b { color: var(--text); }
/* Histórico — coluna de comentário resumido */
.vz-hist-txt { max-width: 260px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; color: var(--text-2); }
/* Modal de compra — packs do catálogo do servidor */
.vz-packs { display: grid; grid-template-columns: repeat(auto-fit, minmax(110px, 1fr)); gap: 10px; }
.vz-pack { position: relative; display: flex; flex-direction: column; gap: 4px; align-items: center; padding: 16px 10px 14px; background: var(--bg-raise); border: 1px solid var(--border-neutral); border-radius: var(--r-card); cursor: pointer; color: var(--text-2); font-family: var(--font-body); transition: var(--t); }
.vz-pack:hover { border-color: var(--accent); }
.vz-pack.on { border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-soft); color: var(--text); }
.vz-pack-tag { position: absolute; top: -8px; left: 50%; transform: translateX(-50%); font-size: 9px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; padding: 2px 8px; border-radius: 999px; background: var(--accent); color: #fff; white-space: nowrap; }
.vz-pack-min { font-size: 18px; font-weight: 800; color: var(--text); }
.vz-pack-cr { font-size: var(--fs-meta); color: var(--text-3); }
.vz-pack-preco { margin-top: 4px; font-size: var(--fs-sm); font-weight: 700; color: var(--accent); }
@media (prefers-reduced-motion: reduce) { .vz-pack, .vz-dot, .vz-voice-add { transition: none; } }
@media (max-width: 640px) { .vz-row { flex-direction: column; align-items: stretch; } .vz-field { flex: 1 1 auto; } }

/* ---- Banco de voz (motor banco+mixer, projeção DEMO) ---- */
.vz-bnk-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; margin-bottom: 12px; flex-wrap: wrap; }
.vz-bnk-head .card-sub { margin: 4px 0 0; }
.vz-bnk-gauge { flex: 0 0 auto; display: flex; flex-direction: column; align-items: flex-end; line-height: 1.1; }
.vz-bnk-gauge-v { font-family: var(--font-head); font-size: 22px; font-weight: 800; color: var(--emerald); font-variant-numeric: tabular-nums; }
.vz-bnk-gauge-k { font-size: var(--fs-meta); color: var(--text-3); }
.vz-bnk-bar { height: 7px; border-radius: 99px; background: var(--bg-raise); border: 1px solid var(--border-soft); overflow: hidden; margin-bottom: 14px; }
.vz-bnk-bar i { display: block; height: 100%; border-radius: 99px; background: linear-gradient(90deg, var(--accent), var(--emerald)); transition: width .5s var(--e); }
.vz-bnk-cats { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 10px; }
.vz-bnk-cat { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 10px 12px; background: var(--bg-raise); border: 1px solid var(--border-neutral); border-radius: var(--r-btn); }
.vz-bnk-cat.ok { border-color: var(--emerald-soft); }
.vz-bnk-cat.montando { border-color: var(--warn-soft); }
.vz-bnk-cat-lbl { font-size: var(--fs-sm); color: var(--text); font-weight: 600; }
.vz-bnk-cat-st { font-size: 11px; font-weight: 700; padding: 2px 8px; border-radius: 999px; white-space: nowrap; }
.vz-bnk-cat.ok .vz-bnk-cat-st { background: var(--emerald-soft); color: var(--emerald); }
.vz-bnk-cat.montando .vz-bnk-cat-st { background: var(--warn-soft); color: var(--warn); }
@media (prefers-reduced-motion: reduce) { .vz-bnk-bar i { transition: none; } }

/* ---- Reação ao vivo (write-through) ---- */
.vz-seal { display: inline-flex; vertical-align: middle; margin-left: 8px; font-size: 10.5px; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; padding: 3px 9px; border-radius: 999px; background: var(--emerald-soft); color: var(--emerald); }
.vz-react-empty { margin-top: 14px; padding: 16px; text-align: center; font-size: var(--fs-sm); color: var(--text-3); background: var(--bg-raise); border: 1px dashed var(--border-neutral); border-radius: var(--r-card); }
.vz-react-empty b { color: var(--text-2); }
.vz-react-out { margin-top: 14px; display: flex; flex-direction: column; gap: 12px; }
.vz-react-cmt { font-size: var(--fs-sm); color: var(--text-2); padding: 10px 12px; background: var(--bg-raise); border: 1px solid var(--border-neutral); border-radius: var(--r-btn); }
.vz-react-cmt b { color: var(--text); }
.vz-react-tag { display: inline-flex; margin-right: 8px; font-size: 10px; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; padding: 2px 7px; border-radius: 999px; background: var(--accent-soft); color: var(--accent); }
.vz-react-tag.venda { background: var(--emerald-soft); color: var(--emerald); }
.vz-react-ans { display: flex; gap: 10px; align-items: flex-start; padding: 12px 14px; background: var(--accent-soft); border: 1px solid var(--border-card); border-radius: var(--r-card); }
.vz-react-ans-ic { font-size: 18px; line-height: 1.3; flex: 0 0 auto; }
.vz-react-ans p { margin: 0 0 6px; font-size: 14px; color: var(--text); line-height: 1.5; }
.vz-react-sign { font-size: var(--fs-meta); color: var(--text-3); line-height: 1.4; }
.vz-react-sign b { color: var(--warn); }

/* ---- Engine ---- */
.vz-eng-chips { display: flex; gap: 10px; flex-wrap: wrap; margin: 12px 0 6px; }
.vz-eng-chip { display: inline-flex; align-items: center; gap: 8px; padding: 8px 14px; border-radius: 999px; border: 1px solid var(--border-neutral); background: var(--bg-raise); color: var(--text-2); font-family: var(--font-body); font-size: var(--fs-sm); font-weight: 600; cursor: pointer; transition: var(--t); }
.vz-eng-chip:hover { border-color: var(--accent); color: var(--text); }
.vz-eng-chip.on { border-color: var(--accent); background: var(--accent-soft); color: var(--text); box-shadow: 0 0 0 1px var(--accent-soft); }
.vz-eng-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--text-3); flex: 0 0 auto; }
.vz-eng-chip.on .vz-eng-dot { background: var(--emerald); box-shadow: 0 0 0 3px var(--emerald-soft); }
.vz-eng-note { margin: 10px 0 0; font-size: var(--fs-sm); color: var(--text-2); line-height: 1.5; display: flex; gap: 8px; align-items: flex-start; }
.vz-eng-note b { color: var(--text); }
@media (prefers-reduced-motion: reduce) { .vz-eng-chip { transition: none; } }

/* ---- Plano & horas ---- */
.vz-plan-row { display: flex; gap: 16px; align-items: stretch; flex-wrap: wrap; margin-top: 12px; }
.vz-plan-metric { flex: 1 1 260px; min-width: 0; display: flex; flex-direction: column; justify-content: center; gap: 8px; }
.vz-plan-metric-top { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; font-size: var(--fs-sm); color: var(--text-2); }
.vz-plan-metric-top b { color: var(--text); font-family: var(--font-head); font-variant-numeric: tabular-nums; }
.vz-plan-bar { height: 8px; border-radius: 99px; background: var(--bg-raise); border: 1px solid var(--border-soft); overflow: hidden; }
.vz-plan-bar i { display: block; height: 100%; border-radius: 99px; }
.vz-plan-bar.ok i { background: linear-gradient(90deg, var(--accent), var(--emerald)); }
.vz-plan-bar.mid i { background: linear-gradient(90deg, var(--accent), var(--warn)); }
.vz-plan-bar.warn i { background: var(--warn); }
.vz-plan-slots { flex: 0 0 auto; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px; min-width: 96px; padding: 10px 16px; background: var(--bg-raise); border: 1px solid var(--border-neutral); border-radius: var(--r-card); }
.vz-plan-slots-k { font-size: var(--fs-meta); color: var(--text-3); }
.vz-plan-slots-v { font-family: var(--font-head); font-size: 20px; font-weight: 800; color: var(--text); font-variant-numeric: tabular-nums; }
.vz-plan-slots-s { font-size: var(--fs-meta); color: var(--text-3); }
.vz-antipreco { border-color: var(--border-card); background: var(--accent-soft); }

/* ==========================================================================
   CHECKOUT EMBUTIDO (mock honesto) — 1 componente reusável (.co-*)
   Reusa .overlay / .modal-sm / .btn. Dark-first, coerente com o resto.
   ========================================================================== */
.co-modal { width: min(440px, 94vw); }
.co-head { display: flex; align-items: center; gap: 10px; margin-bottom: 14px; }
.co-head h3 { flex: 1 1 auto; font-size: 18px; margin: 0; }
.co-back { flex: 0 0 auto; width: 30px; height: 30px; border-radius: 9px; border: 1px solid var(--border-neutral); background: var(--bg-raise); color: var(--text-2); font-size: 20px; line-height: 1; cursor: pointer; transition: var(--t); }
.co-back:hover { border-color: var(--accent); color: var(--text); }
.co-x { flex: 0 0 auto; width: 30px; height: 30px; border-radius: 9px; border: 0; background: transparent; color: var(--text-3); font-size: 15px; cursor: pointer; transition: var(--t); }
.co-x:hover { background: var(--bg-raise); color: var(--text); }
.co-kicker { font-size: 10.5px; letter-spacing: .06em; text-transform: uppercase; color: var(--warn); font-weight: 700; margin: -6px 0 8px; }
.co-titulo { font-size: 13.5px; color: var(--text-2); margin: 0 0 14px; }

.co-resumo { background: var(--bg-card); border: 1px solid var(--border-soft); border-radius: 14px; padding: 14px 16px; margin-bottom: 16px; }
.co-resumo-k { font-size: 10px; letter-spacing: .12em; text-transform: uppercase; color: var(--text-3); font-weight: 700; margin-bottom: 8px; }
.co-resumo-row { display: flex; justify-content: space-between; gap: 12px; font-size: 13px; color: var(--text-2); padding: 5px 0; }
.co-resumo-row b { color: var(--text); font-variant-numeric: tabular-nums; text-align: right; }
.co-resumo-total { display: flex; justify-content: space-between; align-items: baseline; margin-top: 6px; padding-top: 10px; border-top: 1px solid var(--border-soft); font-weight: 700; }
.co-resumo-total span { font-size: 13px; color: var(--text-2); }
.co-resumo-total b { font-family: var(--font-head); font-size: 20px; color: var(--text); font-variant-numeric: tabular-nums; }

.co-q { font-size: 13px; font-weight: 600; color: var(--text); margin: 0 0 10px; }
.co-methods { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-bottom: 16px; }
.co-method { display: flex; flex-direction: column; align-items: center; gap: 3px; padding: 18px 12px; background: var(--bg-raise); border: 1px solid var(--border-neutral); border-radius: var(--r-card); cursor: pointer; color: var(--text); font-family: var(--font-body); transition: var(--t); }
.co-method:hover { border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-soft); transform: translateY(-1px); }
.co-method-ic { font-size: 24px; line-height: 1; }
.co-method b { font-size: 14px; }
.co-method small { font-size: 11px; color: var(--text-3); }

.co-badge { display: flex; gap: 7px; font-size: 11.5px; line-height: 1.5; color: var(--text-3); background: var(--accent-soft); border: 1px solid var(--border-card); border-radius: 12px; padding: 10px 12px; margin-top: 4px; }
.co-badge b { color: var(--text-2); }

.co-total-line { font-size: 13px; color: var(--text-2); margin: 0 0 14px; }
.co-total-line b { font-family: var(--font-head); font-size: 16px; color: var(--text); font-variant-numeric: tabular-nums; }

.co-field { display: block; margin-bottom: 12px; }
.co-field > span { display: block; font-size: 11px; letter-spacing: .03em; color: var(--text-2); font-weight: 600; margin-bottom: 6px; }
.co-input { width: 100%; height: 42px; padding: 0 14px; border-radius: 10px; background: var(--bg-raise); border: 1px solid var(--border-neutral); color: var(--text); font-size: 14px; font-family: var(--font-body); transition: var(--t); }
.co-input:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-soft); }
.co-field-row { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.co-field-row .co-field { margin-bottom: 12px; }

.co-token-note { display: flex; gap: 7px; font-size: 11.5px; line-height: 1.5; color: var(--text-2); background: var(--emerald-soft); border: 1px solid rgba(16,185,129,0.25); border-radius: 12px; padding: 10px 12px; margin: 4px 0 12px; }
.co-token-note b { color: var(--text); }

.co-qr { width: 156px; height: 156px; margin: 4px auto 16px; border-radius: 12px; background: repeating-conic-gradient(#fff 0 25%, #111 0 50%) 50%/16px 16px; border: 1px solid var(--border-neutral); }
.co-copy-k { font-size: 11px; color: var(--text-3); font-weight: 600; margin-bottom: 6px; }
.co-copy-row { display: flex; gap: 8px; align-items: center; margin-bottom: 14px; }
.co-copy-input { flex: 1 1 auto; min-width: 0; height: 38px; padding: 0 12px; border-radius: 10px; background: var(--bg-raise); border: 1px solid var(--border-neutral); color: var(--text-2); font-size: 12px; font-family: var(--font-mono, monospace); text-overflow: ellipsis; }
.co-copy-input:focus { outline: none; border-color: var(--accent); }
.co-copy-row .btn-sm { flex: 0 0 auto; }
.co-wait { font-size: 12px; line-height: 1.55; color: var(--text-2); background: var(--warn-soft); border: 1px solid rgba(245,158,11,0.28); border-radius: 12px; padding: 11px 13px; margin-bottom: 12px; }
.co-wait b { color: var(--text); }

.co-proc { display: flex; flex-direction: column; align-items: center; gap: 12px; padding: 34px 10px 30px; text-align: center; }
.co-proc b { font-size: 15px; color: var(--text); }
.co-proc small { font-size: 12px; color: var(--text-3); }
.co-spin { width: 40px; height: 40px; border-radius: 50%; border: 3px solid var(--border-neutral); border-top-color: var(--accent); animation: co-spin 0.9s linear infinite; }
@keyframes co-spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .co-spin { animation-duration: 2.4s; } .co-method:hover { transform: none; } }

.co-ok { display: flex; flex-direction: column; align-items: center; gap: 10px; padding: 20px 6px 6px; text-align: center; }
.co-ok-ic { width: 52px; height: 52px; border-radius: 50%; display: grid; place-items: center; background: var(--emerald-soft); color: var(--emerald); font-size: 26px; font-weight: 800; border: 1px solid rgba(16,185,129,0.35); }
.co-ok > b { font-size: 17px; color: var(--text); }
.co-ok-demo { color: var(--text-3); font-weight: 600; }
.co-server-note { font-size: 12.5px; line-height: 1.6; color: var(--text-2); margin: 2px 0 0; }
.co-server-note b { color: var(--text); }

@media (max-width: 480px) { .co-methods { grid-template-columns: 1fr; } .co-field-row { grid-template-columns: 1fr; } }

/* ==========================================================================
   P1 — PEÇAS NOVAS DA LIVE INTERATIVA (A Números · C Gifts · D Celebração ·
   ⬆ Ticker/Pulso). Mesma linguagem dos overlays stfx (vidro escuro, tabular).
   Posições default não-sobrepostas; todas arrastáveis no vídeo (LGDrag).
   ========================================================================== */

/* A · Viewers ao vivo — odômetro CSS (colunas 0-9 rolando por translateY) */
.stfx-viewers { top: 44px; left: 10px; }
.stfx-viewers .vw-ic { font-size: 11px; }
.stfx-viewers .vw-lbl { font-size: 8.5px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--emerald); }
.stfx-viewers .od { display: inline-flex; font-variant-numeric: tabular-nums; font-weight: 900; font-size: 14px; line-height: 1.15; }
.stfx-viewers .od-d { width: .62em; height: 1.15em; overflow: hidden; }
.stfx-viewers .od-strip { display: flex; flex-direction: column; transition: transform .5s cubic-bezier(.22,1,.36,1); }
.stfx-viewers .od-u { height: 1.15em; line-height: 1.15em; text-align: center; }

/* A · Likes & diamantes — countUp inteiro */
.stfx-likes { top: 100px; left: 10px; }
.stfx-likes .lk-n, .stfx-likes .dia-n { font-weight: 900; font-variant-numeric: tabular-nums; color: var(--li-accent, #fff); }
.stfx-likes .lk-sub { font-size: 8.5px; font-weight: 700; opacity: .7; }
.stfx-likes .lk-dia { margin-left: 4px; color: #A5F3FC; }

/* A · GMV / faturamento — countUp R$ */
.stfx-gmv { top: 140px; left: 10px; }
.stfx-gmv .gmv-lbl { font-size: 8.5px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; opacity: .72; }
.stfx-gmv .gmv-n { font-weight: 900; font-variant-numeric: tabular-nums; color: var(--li-accent, #6EE7B7); }

/* A · Pulso (ECG) — modo Hype (batida mais rápida/quente) + pulso por venda */
.stfx-ecg.ecg-hype path { stroke: #F87171; stroke-width: 2.8; filter: drop-shadow(0 0 7px rgba(239,68,68,.95)); animation-duration: .9s; }
.stfx-ecg.ecg-beat { animation: stfxEcgBeat .5s ease 1; }
@keyframes stfxEcgBeat { 0%, 100% { filter: none; opacity: .95; } 35% { filter: drop-shadow(0 0 9px rgba(239,68,68,.9)); opacity: 1; } }

/* C · Alerta de gift — nome + tier (S/A/B/C server-authoritative) */
.stfx-giftalert { position: absolute; top: 30%; left: 50%; margin-left: -112px; width: 224px; z-index: 6; display: flex; align-items: center; gap: 9px; padding: 8px 12px; border-radius: 14px; background: rgba(8,8,10,.78); border: 1px solid rgba(255,255,255,.18); backdrop-filter: blur(6px); box-shadow: 0 6px 18px rgba(0,0,0,.45); opacity: .9; }
.stfx-giftalert .ga-ic { font-size: 20px; }
.stfx-giftalert .ga-body { display: flex; flex-direction: column; gap: 1px; min-width: 0; flex: 1; }
.stfx-giftalert .ga-user { font-size: 12px; font-weight: 900; color: #fff; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.stfx-giftalert .ga-gift { font-size: 10px; font-weight: 700; color: var(--text-2, #cbd5e1); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.stfx-giftalert .ga-tier { font-size: 9px; font-weight: 900; letter-spacing: .04em; padding: 3px 8px; border-radius: 999px; background: rgba(255,255,255,.14); color: #fff; white-space: nowrap; }
.stfx-giftalert.ga-show { opacity: 1; box-shadow: 0 0 16px rgba(139,92,246,.5), 0 6px 18px rgba(0,0,0,.45); animation: stfxGiftIn .4s cubic-bezier(.34,1.56,.64,1) 1; }
@keyframes stfxGiftIn { 0% { transform: scale(var(--li-scale, 1)) translateY(-8px); opacity: 0; } 100% { opacity: 1; } }
/* tiers: S ouro · A roxo · B ciano · C neutro */
.stfx-giftalert[data-tier="S"] { border-color: rgba(251,191,36,.7); }
.stfx-giftalert[data-tier="S"].ga-show .ga-tier { background: linear-gradient(120deg, #B45309, #F59E0B); }
.stfx-giftalert[data-tier="A"].ga-show .ga-tier { background: linear-gradient(120deg, #6D28D9, #A855F7); }
.stfx-giftalert[data-tier="B"].ga-show .ga-tier { background: linear-gradient(120deg, #0369A1, #22D3EE); color: #06202b; }
.stfx-giftalert[data-tier="C"].ga-show .ga-tier { background: rgba(255,255,255,.2); }

/* C · Trem de gifts — MESMO renderer/animação do combo (stfxComboPop) */
.stfx-gifttrain { display: block; top: 58%; left: 0; right: 0; text-align: center; font-size: 22px; font-weight: 900; color: #fff; background: none; border: 0; box-shadow: none; padding: 0; max-width: none; text-shadow: 0 0 12px var(--live), 0 2px 4px rgba(0,0,0,.6); opacity: 0; visibility: hidden; transition: opacity .25s ease, visibility .25s; }
.stfx-gifttrain.cb-show { opacity: 1; visibility: visible; }
.stfx-gifttrain .gt-in { display: inline-block; transform: scale(var(--cb-scale, 1)); }
.stfx-gifttrain .gt-in.cb-pop { animation: stfxComboPop .45s cubic-bezier(.34,1.56,.64,1) 1; }

/* D · Chuva de moedas — emissor + moedas 🪙 caindo em DOM */
.stfx-moedas { position: absolute; left: 50%; top: 8%; width: 180px; height: 165px; margin-left: -90px; pointer-events: none; }
.stfx-moedas .cr-spout { position: absolute; top: -8px; left: 50%; transform: translateX(-50%); font-size: 20px; filter: drop-shadow(0 2px 6px rgba(0,0,0,.5)); }
.stfx-moedas .cr-coin { position: absolute; top: 0; font-size: 16px; line-height: 1; animation: stfxCoinRain 1.6s ease-in 1 both; }
@keyframes stfxCoinRain { 0% { transform: translateY(-10px) rotate(0); opacity: 0; } 15% { opacity: 1; } 100% { transform: translateY(155px) rotate(200deg); opacity: 0; } }

/* D · "+R$" floats na venda — valor sobe e some */
.stfx-rsfloat { position: absolute; left: 50%; top: 50%; width: 160px; height: 96px; margin: -48px 0 0 -80px; pointer-events: none; }
.stfx-rsfloat .rs-float { position: absolute; bottom: 0; font-size: 15px; font-weight: 900; color: var(--li-accent, #34D399); text-shadow: 0 0 10px rgba(16,185,129,.7), 0 2px 4px rgba(0,0,0,.6); font-variant-numeric: tabular-nums; white-space: nowrap; animation: stfxRsFloat 1.3s ease-out 1 both; }
@keyframes stfxRsFloat { 0% { transform: translateY(10px) scale(.7); opacity: 0; } 20% { opacity: 1; transform: translateY(0) scale(1); } 100% { transform: translateY(-62px) scale(1); opacity: 0; } }

/* ⬆ Ticker trocável — faixa com os últimos 6 itens do feed */
.stfx-ticker { position: absolute; left: 0; right: 0; bottom: 8%; margin: 0 auto; width: max-content; max-width: 92%; z-index: 6; display: flex; align-items: center; padding: 5px 10px; border-radius: 999px; background: rgba(8,8,10,.72); border: 1px solid rgba(255,255,255,.16); backdrop-filter: blur(6px); box-shadow: 0 4px 14px rgba(0,0,0,.42); overflow: hidden; }
.stfx-ticker .tk-track { display: flex; gap: 6px; align-items: center; }
.stfx-ticker .tk-item { font-size: 10px; font-weight: 800; color: #fff; padding: 3px 8px; border-radius: 999px; background: color-mix(in srgb, var(--li-accent, #8B5CF6) 42%, transparent); white-space: nowrap; font-variant-numeric: tabular-nums; }
.stfx-ticker .tk-item.tk-in { animation: stfxToastIn .3s cubic-bezier(.34,1.56,.64,1) 1; }

@media (prefers-reduced-motion: reduce) {
  .stfx-viewers .od-strip { transition: none; }
  .stfx-ecg.ecg-beat, .stfx-giftalert.ga-show, .stfx-gifttrain .gt-in.cb-pop,
  .stfx-moedas .cr-coin, .stfx-rsfloat .rs-float, .stfx-ticker .tk-item.tk-in { animation: none; }
  .stfx-gifttrain { transition: none; }
}

/* ===== P2 · B Mecânicas (server-authoritative) — só RENDER do assinado ===== */
/* PK · Cabo de guerra — barra full-width entre 2 lados */
.stfx-pk { position: absolute; left: 50%; top: 14%; transform: translateX(-50%) scale(var(--li-scale, 1)); width: min(360px, 76%); display: flex; flex-direction: column; gap: 5px; padding: 8px 11px; border-radius: 12px; background: rgba(8,8,10,.74); border: 1px solid rgba(255,255,255,.16); backdrop-filter: blur(6px); box-shadow: 0 6px 18px rgba(0,0,0,.45); z-index: 7; }
.stfx-pk .pk-row { display: flex; align-items: center; justify-content: space-between; gap: 8px; font-size: 11px; }
.stfx-pk .pk-side { display: flex; align-items: center; gap: 5px; min-width: 0; }
.stfx-pk .pk-b { justify-content: flex-end; }
.stfx-pk .pk-lbl { font-weight: 800; color: #fff; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 88px; }
.stfx-pk .pk-score { font-weight: 900; font-variant-numeric: tabular-nums; color: #cbd5e1; }
.stfx-pk .pk-vs { font-size: 9px; font-weight: 900; letter-spacing: .1em; color: #94a3b8; padding: 2px 7px; border-radius: 999px; background: rgba(255,255,255,.1); white-space: nowrap; }
.stfx-pk .pk-bar { position: relative; height: 12px; border-radius: 999px; overflow: hidden; background: linear-gradient(90deg, rgba(239,68,68,.28), rgba(34,211,238,.28)); border: 1px solid rgba(255,255,255,.14); }
.stfx-pk .pk-fill-a { display: block; height: 100%; width: 50%; background: linear-gradient(90deg, var(--li-accent, #EF4444), #f87171); box-shadow: 0 0 10px rgba(239,68,68,.6); transition: width .5s cubic-bezier(.34,1.2,.64,1); }
.stfx-pk .pk-knob { position: absolute; top: 50%; left: 50%; width: 4px; height: 18px; margin-left: -2px; transform: translateY(-50%); background: #fff; border-radius: 2px; box-shadow: 0 0 8px rgba(255,255,255,.9); transition: left .5s cubic-bezier(.34,1.2,.64,1); }
.stfx-pk.pk-lead-a .pk-a .pk-lbl { color: #f87171; text-shadow: 0 0 8px rgba(239,68,68,.7); }
.stfx-pk.pk-lead-b .pk-b .pk-lbl { color: #22D3EE; text-shadow: 0 0 8px rgba(34,211,238,.7); }
.stfx-pk .pk-win { text-align: center; font-size: 13px; font-weight: 900; color: #FBBF24; text-shadow: 0 0 10px rgba(251,191,36,.7); padding-top: 2px; }
.stfx-pk.pk-ended .pk-bar { filter: saturate(1.3) brightness(1.1); }

/* Subathon — chip relógio; +Xs flash sobe e some */
.stfx-subathon { position: absolute; left: 50%; top: 8%; transform: translateX(-50%) scale(var(--li-scale, 1)); display: inline-flex; align-items: center; gap: 6px; z-index: 7; }
.stfx-subathon .sb-ic { font-size: 15px; }
.stfx-subathon .sb-lbl { font-size: 8px; font-weight: 900; letter-spacing: .14em; color: #22D3EE; }
.stfx-subathon .t { font-size: 15px; font-weight: 900; font-variant-numeric: tabular-nums; color: #fff; text-shadow: 0 0 8px rgba(34,211,238,.5); }
.stfx-subathon.sb-ending .t { color: #f87171; text-shadow: 0 0 10px rgba(239,68,68,.8); animation: stfxSubEnd 1s ease-in-out infinite; }
@keyframes stfxSubEnd { 0%,100% { opacity: 1; } 50% { opacity: .5; } }
.stfx-subathon .sb-flash { position: absolute; right: -6px; top: -14px; font-size: 12px; font-weight: 900; color: #34D399; text-shadow: 0 0 8px rgba(16,185,129,.8); animation: stfxSubFlash 1.2s ease-out 1 both; pointer-events: none; }
@keyframes stfxSubFlash { 0% { transform: translateY(6px) scale(.7); opacity: 0; } 20% { opacity: 1; transform: translateY(0) scale(1); } 100% { transform: translateY(-26px); opacity: 0; } }

/* Boss · meta coletiva — barra de HP full-width + emoji */
.stfx-boss { position: absolute; left: 50%; top: 12%; transform: translateX(-50%) scale(var(--li-scale, 1)); width: min(360px, 76%); display: flex; flex-direction: column; gap: 5px; padding: 8px 11px; border-radius: 12px; background: rgba(8,8,10,.74); border: 1px solid rgba(255,255,255,.16); backdrop-filter: blur(6px); box-shadow: 0 6px 18px rgba(0,0,0,.45); z-index: 7; }
.stfx-boss .bs-row { display: flex; align-items: center; gap: 7px; font-size: 11px; }
.stfx-boss .bs-emoji { font-size: 18px; filter: drop-shadow(0 2px 5px rgba(0,0,0,.5)); }
.stfx-boss .bs-name { font-weight: 900; letter-spacing: .06em; color: #fff; }
.stfx-boss .bs-hp-txt { margin-left: auto; font-weight: 900; font-variant-numeric: tabular-nums; color: #cbd5e1; }
.stfx-boss .bs-bar { height: 12px; border-radius: 999px; overflow: hidden; background: rgba(255,255,255,.14); border: 1px solid rgba(255,255,255,.14); }
.stfx-boss .bs-fill { display: block; height: 100%; width: 100%; background: linear-gradient(90deg, #22C55E, #4ADE80); transition: width .5s cubic-bezier(.34,1.2,.64,1); }
.stfx-boss.bs-p2 .bs-fill { background: linear-gradient(90deg, #F59E0B, #FBBF24); }
.stfx-boss.bs-p3 .bs-fill { background: linear-gradient(90deg, #DC2626, #f87171); box-shadow: 0 0 10px rgba(239,68,68,.6); }
.stfx-boss.bs-p3 .bs-emoji { animation: stfxBossEnrage .7s ease-in-out infinite; }
@keyframes stfxBossEnrage { 0%,100% { transform: scale(1); } 50% { transform: scale(1.18) rotate(-4deg); } }
.stfx-boss .bs-dead { text-align: center; font-size: 13px; font-weight: 900; color: #FBBF24; text-shadow: 0 0 10px rgba(251,191,36,.8); padding-top: 2px; }
.stfx-boss.bs-is-dead { filter: grayscale(.3); }
.stfx-boss.bs-is-dead .bs-emoji { opacity: .5; animation: none; }

@media (prefers-reduced-motion: reduce) {
  .stfx-pk .pk-fill-a, .stfx-pk .pk-knob, .stfx-boss .bs-fill { transition: none; }
  .stfx-subathon.sb-ending .t, .stfx-subathon .sb-flash, .stfx-boss.bs-p3 .bs-emoji { animation: none; }
}

/* ===================== P3 · peças novas (leve/médio) ===================== */
/* A · Cupom relâmpago com timer — banner de urgência (faixa; contagem no ticker único) */
.stfx-cupomtimer { position: absolute; left: 0; right: 0; top: 10%; margin: 0 auto; width: max-content; max-width: 80%; z-index: 7; display: inline-flex; align-items: center; gap: 9px; padding: 7px 13px; border-radius: 12px; background: var(--li3-bg, linear-gradient(120deg, rgba(153,27,27,.92), rgba(239,68,68,.92))); border: 1px solid var(--li3-border, rgba(253,224,71,.6)); box-shadow: 0 6px 18px rgba(0,0,0,.45), 0 0 14px rgba(239,68,68,.5); white-space: nowrap; overflow: hidden; }
.stfx-cupomtimer::after { content: ''; position: absolute; top: -20%; bottom: -20%; width: 34%; left: -50%; background: linear-gradient(100deg, transparent, rgba(255,255,255,.5), transparent); animation: stfxShimmer 2.4s ease-in-out infinite; }
.stfx-cupomtimer .cpt-ic { font-size: 16px; }
.stfx-cupomtimer .cpt-lbl { font-size: 9px; font-weight: 900; letter-spacing: .12em; color: #FEF3C7; }
.stfx-cupomtimer .cpt-code { font-size: 12px; font-weight: 900; color: #1c1004; background: #FDE047; padding: 2px 7px; border-radius: 6px; letter-spacing: .05em; }
.stfx-cupomtimer .cpt-timer { font-size: 12px; font-weight: 800; color: #fff; }
.stfx-cupomtimer .cpt-timer .t { font-variant-numeric: tabular-nums; }
.stfx-cupomtimer.cpt-urgent { animation: stfxCupomPulse 1s ease-in-out infinite; }
.stfx-cupomtimer.cpt-urgent .cpt-timer .t { color: #FDE047; text-shadow: 0 0 8px rgba(253,224,71,.85); }
.stfx-cupomtimer.cpt-expired { filter: grayscale(.5) brightness(.8); }
.stfx-cupomtimer.cpt-expired::after { animation: none; }

/* C · Coroa top-gifter — card do maior gift (tier server-authoritative) */
.stfx-coroa { position: absolute; top: 26%; left: 50%; margin-left: -116px; width: 232px; z-index: 7; display: flex; align-items: center; gap: 9px; padding: 8px 12px; border-radius: 14px; background: rgba(8,8,10,.8); border: 1px solid rgba(251,191,36,.4); backdrop-filter: blur(6px); box-shadow: 0 6px 18px rgba(0,0,0,.45); opacity: .9; }
.stfx-coroa .cw-crown { font-size: 22px; filter: drop-shadow(0 2px 6px rgba(251,191,36,.6)); }
.stfx-coroa .cw-body { display: flex; flex-direction: column; gap: 1px; min-width: 0; flex: 1; }
.stfx-coroa .cw-user { font-size: 12px; font-weight: 900; color: var(--li-accent, #FBBF24); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.stfx-coroa .cw-gift { font-size: 10px; font-weight: 700; color: var(--text-2, #cbd5e1); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.stfx-coroa .cw-tier { font-size: 9px; font-weight: 900; letter-spacing: .04em; padding: 3px 8px; border-radius: 999px; background: rgba(255,255,255,.14); color: #fff; white-space: nowrap; }
.stfx-coroa.cw-crowned { opacity: 1; box-shadow: 0 0 16px rgba(251,191,36,.5), 0 6px 18px rgba(0,0,0,.45); }
.stfx-coroa[data-tier="S"] { border-color: rgba(251,191,36,.8); }
.stfx-coroa[data-tier="S"] .cw-tier { background: linear-gradient(120deg, #B45309, #F59E0B); }
.stfx-coroa[data-tier="A"] .cw-tier { background: linear-gradient(120deg, #6D28D9, #A855F7); }
.stfx-coroa[data-tier="B"] .cw-tier { background: linear-gradient(120deg, #0369A1, #22D3EE); color: #06202b; }

/* D · Chuva de diamantes — gemas caindo (variante diamante/ouro/rubi); reusa stfxCoinRain */
.stfx-diamantes { position: absolute; left: 50%; top: 8%; width: 180px; height: 165px; margin-left: -90px; pointer-events: none; }
.stfx-diamantes .dm-spout { position: absolute; top: -8px; left: 50%; transform: translateX(-50%); font-size: 20px; filter: drop-shadow(0 2px 6px rgba(0,0,0,.5)); }
.stfx-diamantes .dm-gem { position: absolute; top: 0; font-size: 16px; line-height: 1; animation: stfxCoinRain 1.6s ease-in 1 both; }

/* D · Serpentina — só o emissor (as fitas vivem no canvas do FxEngine) */
.stfx-serpentina { position: absolute; left: 50%; top: 24%; width: 30px; height: 30px; margin-left: -15px; text-align: center; pointer-events: none; }
.stfx-serpentina .sp-spout { font-size: 22px; filter: drop-shadow(0 2px 6px rgba(0,0,0,.5)); }

/* B · Enquete por comentário — barras ASSINADAS (server conta; cliente só pinta) */
.stfx-enquete { position: absolute; left: 50%; top: 16%; transform: translateX(-50%); width: min(320px, 74%); z-index: 7; display: flex; flex-direction: column; gap: 6px; padding: 9px 12px; border-radius: 12px; background: rgba(8,8,10,.78); border: 1px solid rgba(255,255,255,.16); backdrop-filter: blur(6px); box-shadow: 0 6px 18px rgba(0,0,0,.45); }
.stfx-enquete .eq-head { display: flex; align-items: center; gap: 7px; }
.stfx-enquete .eq-ic { font-size: 15px; }
.stfx-enquete .eq-prompt { font-size: 11px; font-weight: 900; color: #fff; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.stfx-enquete .eq-bars { display: flex; flex-direction: column; gap: 5px; }
.stfx-enquete .eq-bar { display: flex; align-items: center; gap: 7px; font-size: 10px; }
.stfx-enquete .eq-lab { flex: 0 0 66px; font-weight: 800; color: #cbd5e1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.stfx-enquete .eq-track { flex: 1; height: 10px; border-radius: 999px; overflow: hidden; background: rgba(255,255,255,.12); border: 1px solid rgba(255,255,255,.12); }
.stfx-enquete .eq-fill { display: block; height: 100%; width: 0; background: linear-gradient(90deg, #0369A1, var(--li-accent, #22D3EE)); transition: width .5s cubic-bezier(.34,1.2,.64,1); }
.stfx-enquete .eq-bar.eq-lead .eq-fill { background: linear-gradient(90deg, #7C3AED, #A855F7); box-shadow: 0 0 8px rgba(168,85,247,.6); }
.stfx-enquete .eq-bar.eq-lead .eq-lab { color: #fff; }
.stfx-enquete .eq-val { flex: 0 0 auto; font-weight: 900; font-variant-numeric: tabular-nums; color: #e2e8f0; white-space: nowrap; }
.stfx-enquete .eq-win { text-align: center; font-size: 12px; font-weight: 900; color: #FBBF24; text-shadow: 0 0 10px rgba(251,191,36,.7); padding-top: 2px; }
.stfx-enquete.eq-ended .eq-track { filter: saturate(1.25) brightness(1.08); }

@media (prefers-reduced-motion: reduce) {
  .stfx-diamantes .dm-gem { animation: none; }
  .stfx-cupomtimer.cpt-urgent, .stfx-cupomtimer::after { animation: none; }
  .stfx-enquete .eq-fill { transition: none; }
}

/* ============================================================================
   PROXIES v2 (px2-) — chips-filtro, linhas expansíveis, kebab, painel técnico.
   Nota de cor: neste proto --live é o VERMELHO do "AO VIVO"; o verde de "ok"
   é var(--emerald) (mesmo token do .px-status ativo) e o bad usa #f87171.
   ============================================================================ */

/* chips-filtro (substituem os stat-tiles) */
.px2-chips { display: flex; gap: 8px; flex-wrap: wrap; margin: 16px 0 14px; }
.px2-chip {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 6px 12px; border-radius: 999px;
  border: 1px solid var(--border-neutral); background: var(--bg-card);
  color: var(--text-2); font-size: 13px; cursor: pointer;
}
.px2-chip b { font-weight: 600; }
.px2-chip:hover { border-color: var(--accent); }
.px2-chip.active { border-color: var(--accent); color: var(--accent); }
.px2-chip--ok b { color: var(--emerald); }
.px2-chip--warn b { color: var(--warn); }
.px2-chip--bad b { color: #f87171; }
.px2-chip--mute b { color: var(--text-3); }

/* linha fechada */
.px2-row { cursor: pointer; }
.px2-row--open td { border-bottom: 0; }
.px2-row--warn td:first-child { box-shadow: inset 3px 0 0 var(--warn); }
.px2-row--bad td:first-child { box-shadow: inset 3px 0 0 #f87171; }
.px2-cell-main { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.px2-chev { color: var(--text-3); font-size: 11px; width: 12px; flex: none; }
.px2-name { font-weight: 600; color: var(--text); }
.px2-selo {
  font-size: 10px; text-transform: uppercase; letter-spacing: .05em;
  padding: 2px 6px; border-radius: 5px;
  border: 1px solid var(--border-neutral); color: var(--text-3);
}

/* vínculo proxy ↔ perfil */
.px2-perfil {
  display: inline-flex; align-items: center; gap: 6px;
  background: none; border: 0; padding: 0;
  color: var(--text-2); font-size: 13px; cursor: pointer;
}
.px2-perfil:hover { color: var(--accent); text-decoration: underline; }
.px2-handle { color: var(--text-3); }
.px2-dot { width: 8px; height: 8px; border-radius: 50%; display: inline-block; flex: none; }
.px2-livre {
  background: none; border: 1px dashed var(--border-neutral);
  color: var(--text-3); padding: 4px 10px; border-radius: 8px;
  font-size: 12px; cursor: pointer;
}
.px2-livre:hover { border-color: var(--accent); color: var(--accent); }
/* proxy dividida entre perfis: a lista cresce e o selo diz o número em voz alta */
.px2-perfis { display: flex; flex-direction: column; align-items: flex-start; gap: 4px; min-width: 0; }
.px2-share {
  font-family: inherit; font-size: 11px; font-weight: 700; line-height: 1.2;
  padding: 3px 9px; border-radius: 99px; cursor: pointer;
  color: var(--warn); background: rgba(245,158,11,.12); border: 1px solid rgba(245,158,11,.34);
  transition: var(--t);
}
.px2-share:hover { background: rgba(245,158,11,.2); }

/* uso */
.px2-uso { display: flex; flex-direction: column; gap: 4px; min-width: 140px; }
.px2-bar { height: 5px; border-radius: 99px; background: var(--border-neutral); overflow: hidden; }
.px2-bar i { display: block; height: 100%; background: var(--accent); border-radius: inherit; }
.px2-bar--warn i { background: var(--warn); }
.px2-uso-txt { font-size: 12px; color: var(--text-3); }

/* estado-frase semáforo */
.px2-state { font-size: 13px; white-space: nowrap; }
.px2-state--ok { color: var(--emerald); }
.px2-state--warn { color: var(--warn); }
.px2-state--bad { color: #f87171; }
.px2-state--mute { color: var(--text-3); }

/* ações: 1 primário contextual + kebab (substitui o pente nowrap de 5 botões) */
.px2-acts { display: flex; justify-content: flex-end; align-items: center; gap: 6px; white-space: nowrap; }
.px2-menu { position: relative; display: inline-block; }
.px2-menu-btn {
  background: none; border: 1px solid var(--border-neutral); border-radius: 8px;
  color: var(--text-2); width: 28px; height: 28px; line-height: 1;
  font-size: 15px; cursor: pointer;
}
.px2-menu-btn:hover { border-color: var(--accent); color: var(--accent); }
.px2-menu-pop {
  display: none; position: absolute; right: 0; top: calc(100% + 4px);
  min-width: 180px; z-index: 30; padding: 4px;
  background: var(--bg-card); border: 1px solid var(--border-neutral);
  border-radius: 10px; box-shadow: 0 8px 24px rgba(0, 0, 0, .35);
}
.px2-menu.open .px2-menu-pop { display: block; }
.px2-menu-pop button {
  display: block; width: 100%; text-align: left;
  padding: 8px 10px; border: 0; border-radius: 6px;
  background: none; color: var(--text-2); font-size: 13px; cursor: pointer;
}
.px2-menu-pop button:hover { background: rgba(255, 255, 255, .05); }
.px2-menu-pop button.danger { color: #f87171; }
/* o .tbl-wrap rola no eixo X e cortaria o pop — com kebab aberto, libera o overflow */
.px2-wrap.menu-open { overflow: visible; }

/* painel expandido */
.px2-detail td { padding-top: 0; }
.px2-panel {
  margin: 0 4px 12px 24px; padding: 14px 16px;
  background: var(--bg-card); border: 1px solid var(--border-neutral); border-radius: 12px;
  display: grid; grid-template-columns: repeat(2, minmax(220px, 1fr)); gap: 10px 24px;
}
.px2-kv { display: flex; align-items: center; gap: 8px; font-size: 13px; color: var(--text-2); }
.px2-kv > span:first-child {
  color: var(--text-3); font-size: 11px; min-width: 80px;
  text-transform: uppercase; letter-spacing: .04em; flex: none;
}
.px2-addr { font-family: var(--font-mono); font-size: 12px; }
.px2-copy {
  background: none; border: 1px solid var(--border-neutral); border-radius: 6px;
  color: var(--text-3); padding: 2px 7px; font-size: 12px; cursor: pointer;
}
.px2-copy:hover { border-color: var(--accent); color: var(--accent); }
.px2-panel-acts { grid-column: 1 / -1; display: flex; gap: 8px; padding-top: 4px; }

/* vazios */
.px2-empty {
  padding: 32px; text-align: center; color: var(--text-3);
  border: 1px dashed var(--border-neutral); border-radius: 12px; margin-top: 8px;
}
.px2-empty .btn { margin-top: 12px; }
.px2-empty-acts { display: flex; gap: 8px; justify-content: center; }

@media (max-width: 820px) {
  .px2-panel { grid-template-columns: 1fr; }
}

/* pills da escada de desconto do pxBuy (lei de margem ≥30% — ver pxDesc no app.js) */
.pxbuy-tiers { display: flex; flex-wrap: wrap; justify-content: center; gap: 6px; margin-top: 12px; }
.pxbuy-tier {
  padding: 4px 10px; border-radius: 999px;
  border: 1px solid var(--border-neutral);
  font-size: 11px; color: var(--text-2); white-space: nowrap;
}
.pxbuy-tier.active { border-color: var(--accent); color: var(--text); background: rgba(139, 92, 246, .10); }
.pxbuy-tier.consult { border-style: dashed; color: var(--text-3); }

/* ==========================================================================
   LI v3 — Live Interativa: meta configurável, aparência por peça, palco que
   assume as peças, mídia local (banners + vídeo por cima) e peças novas.
   Prefixo li3-. Tudo simulado ganha rótulo honesto (.li3-demo-tag).
   ========================================================================== */
/* controle sem efeito não aparece (canvas sem cor; fullscreen sem tamanho) */
.li3-noctl { display: none !important; }

/* rótulo honesto de demo */
.li3-demo-tag { font-size: 8px; letter-spacing: .08em; text-transform: uppercase; color: #8b8b93; }

/* linha de configuração nas gavetas (meta, código do cupom, texto da manchete…) */
.li3-meta-row { display: flex; flex-direction: column; gap: 4px; margin: 8px 0; }
.li3-meta-lbl { font-size: 11px; font-weight: 600; color: var(--text-2); }
.li3-meta-input { background: rgba(255,255,255,.06); border: 1px solid var(--border-neutral); border-radius: 8px; padding: 6px 8px; color: var(--text); font-size: 12px; font-variant-numeric: tabular-nums; font-family: inherit; }
.li3-meta-input:focus { outline: none; border-color: var(--accent); }
textarea.li3-meta-input { resize: vertical; min-height: 54px; }
.li3-up { text-transform: uppercase; }

/* controles de aparência (fundo/borda) por peça */
.li3-ap-row { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin: 6px 0 8px; }
.li3-ap-item { display: inline-flex; align-items: center; gap: 5px; font-size: 11px; color: var(--text-2); cursor: pointer; user-select: none; }
.li3-ap-item input[type="checkbox"] { accent-color: var(--accent); }
.li3-ap-item input[type="color"] { width: 24px; height: 18px; border: 0; padding: 0; background: none; cursor: pointer; }
.li3-ftog { margin-top: 6px; display: flex; }

/* hint de ciclo demo (Combo/Quiz/Enquete) */
.li3-hint { display: block; margin: 6px 0 2px; font-size: 10.5px; color: var(--warn); }

/* PALCO ASSUME AS PEÇAS: peça no ar → placeholder some, palco preto */
.st-stage.li3-fx-live { background: #000; }
.st-stage.li3-fx-live #stEmpty { display: none; }

/* âncoras piscando por 4s ao ligar peça de canvas fora do Modo edição */
.st-fx-layer.li3-edit-flash .stfx-anchor { display: inline-flex; animation: li3AnchorPulse 1s ease-in-out infinite; }
@keyframes li3AnchorPulse { 0%, 100% { box-shadow: 0 4px 14px rgba(0,0,0,.4); } 50% { box-shadow: 0 0 0 6px rgba(139,92,246,.25), 0 4px 14px rgba(0,0,0,.4); } }

/* "Ver na cena": flash na peça / na seção Banners */
.li3-flash { outline: 2px solid var(--accent) !important; outline-offset: 3px; border-radius: 6px; animation: li3FlashPulse 1.2s ease 1; }
@keyframes li3FlashPulse { 0% { outline-color: transparent; } 30% { outline-color: var(--accent); } 100% { outline-color: transparent; } }

/* troca suave de conteúdo (rotativos / avaliações) */
.li3-swap { animation: li3Swap .3s ease 1; }
@keyframes li3Swap { 0% { opacity: 0; transform: translateY(4px); } 100% { opacity: 1; transform: none; } }

/* alinhamento dos overlays de texto (texto na tela / rotativos) */
.stfx-headline.li3-al-left { text-align: left; }
.stfx-headline.li3-al-center { text-align: center; }
.stfx-headline.li3-al-right { text-align: right; }
.stfx-headline.li3-texto, .stfx-headline.li3-rotativos { text-align: center; }

/* cronômetro (overlay) — chip próprio que tica pelo ticker único */
.stfx-cdovl { top: 70px; right: 10px; font-variant-numeric: tabular-nums; }
.stfx-cdovl .t { font-weight: 900; }

/* cupom relâmpago — flash "copiado" no ⚡ Testar */
.stfx-cupom.li3-copied::before { content: '✓ copiado'; position: absolute; inset: 0; display: grid; place-items: center; background: rgba(6,32,20,.92); color: #6EE7B7; font-size: 10px; font-weight: 900; letter-spacing: .06em; animation: li3Copied 1.1s ease 1 both; z-index: 2; }
@keyframes li3Copied { 0% { opacity: 0; } 15%, 80% { opacity: 1; } 100% { opacity: 0; visibility: hidden; } }

/* Quantos compraram — contador reativo */
.li3-compradores { left: 10px; top: 44px; }
.li3-compradores .li3-cnum { color: var(--li-accent, #A78BFA); font-weight: 900; font-variant-numeric: tabular-nums; }

/* Duelo de produtos — 2 barras que comparam vendas simuladas */
.li3-duelo { position: absolute; left: 8%; right: 8%; top: 30%; display: flex; flex-direction: column; gap: 6px; padding: 9px 11px; border-radius: 12px; background: var(--li3-bg, rgba(8,8,10,.72)); border: 1px solid var(--li3-border, rgba(255,255,255,.16)); backdrop-filter: blur(6px); box-shadow: 0 6px 18px rgba(0,0,0,.45); }
.li3-duelo .dl-head { display: flex; align-items: center; gap: 8px; font-size: 10px; font-weight: 900; letter-spacing: .06em; color: #fff; }
.li3-duelo .dl-row { display: flex; align-items: center; gap: 8px; }
.li3-duelo .dl-name { flex: 0 0 64px; font-size: 10px; font-weight: 700; color: #cbd5e1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.li3-duelo .dl-track { flex: 1; height: 8px; border-radius: 99px; background: rgba(255,255,255,.12); overflow: hidden; }
.li3-duelo .dl-fill { display: block; height: 100%; border-radius: 99px; transition: width .45s cubic-bezier(.34,1.2,.64,1); }
.li3-duelo .dl-a { background: linear-gradient(90deg, var(--li-accent, #8B5CF6), #A78BFA); }
.li3-duelo .dl-b { background: linear-gradient(90deg, #F59E0B, #FBBF24); }
.li3-duelo .dl-row b { font-size: 11px; font-weight: 900; color: #fff; min-width: 18px; text-align: right; font-variant-numeric: tabular-nums; }
.li3-duelo.dl-lead-a .dl-row:nth-child(2) .dl-name, .li3-duelo.dl-lead-b .dl-row:nth-child(3) .dl-name { color: #fff; }

/* Avaliações — card BRANCO com avaliação mock rotativa */
.li3-aval { position: absolute; left: 10px; bottom: 26%; width: 46%; max-width: 200px; display: flex; flex-direction: column; gap: 3px; padding: 9px 11px; border-radius: 12px; background: #fff; color: #111; box-shadow: 0 8px 22px rgba(0,0,0,.45); }
.li3-aval .av-stars { color: #F59E0B; font-size: 12px; letter-spacing: .1em; }
.li3-aval .av-txt { margin: 0; font-size: 11px; line-height: 1.4; color: #333; }
.li3-aval .av-user { font-size: 10px; color: #777; }
.li3-aval .li3-demo-tag { color: #aaa; }
.li3-aval.li3-aval-alt.li3-swap { animation: li3AvalAlt .3s ease 1; }
@keyframes li3AvalAlt { 0% { opacity: 0; transform: scale(.96); } 100% { opacity: 1; transform: none; } }

/* SEÇÃO BANNERS (lista de imagens locais) */
.li3-banners, .li3-pip-card { border: 1px solid var(--border-neutral); border-radius: 12px; padding: 10px 12px; margin: 0 0 12px; background: var(--bg-card); }
.li3-bn-head { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.li3-bn-head b { font-size: 12.5px; }
.li3-bn-add { margin-left: auto; display: inline-flex; align-items: center; gap: 5px; padding: 4px 11px; border-radius: 8px; border: 1px solid var(--accent); background: var(--accent-soft); color: var(--accent); font-weight: 700; font-size: 10.5px; cursor: pointer; transition: var(--t); }
.li3-bn-add:hover { background: var(--accent); color: #fff; }
.li3-bn-list { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 8px; }
.li3-bn-item { position: relative; width: 84px; height: 48px; border-radius: 8px; overflow: hidden; border: 2px solid transparent; padding: 0; cursor: pointer; background: #111; }
.li3-bn-item img { width: 100%; height: 100%; object-fit: cover; display: block; }
.li3-bn-item.active { border-color: var(--accent); box-shadow: 0 0 0 2px var(--accent-soft); }
.li3-bn-x { position: absolute; top: 2px; right: 2px; width: 16px; height: 16px; border-radius: 50%; background: rgba(0,0,0,.7); color: #fff; font-size: 10px; display: grid; place-items: center; }
.li3-bn-empty { font-size: 11px; color: var(--text-3); }

/* banner no palco (desliza na vertical pelo LGDrag, eixo y — left/right ficam) */
.li3-banner { position: absolute; left: 0; right: 0; margin: 0 auto; top: 14%; transform: translateY(-50%) scale(var(--li-scale, 1)); width: 70%; max-width: 70%; }
.li3-banner img { width: 100%; display: block; filter: drop-shadow(0 6px 18px rgba(0,0,0,.4)); }

/* card + node do Vídeo por cima (PiP) */
.li3-pip-opts { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin-top: 8px; }
.li3-pip-hint { display: block; margin-top: 7px; font-size: 10px; color: var(--text-3); }
.li3-pip { position: absolute; right: 4%; bottom: 20%; width: 26%; aspect-ratio: 16/10; border-radius: 10px; overflow: hidden; border: 1.5px solid rgba(255,255,255,.9); box-shadow: 0 8px 24px rgba(0,0,0,.5); background: #000; }
.li3-pip video { width: 100%; height: 100%; object-fit: cover; display: block; pointer-events: none; }
.li3-pip .li3-pip-resize { position: absolute; right: 2px; bottom: 2px; width: 14px; height: 14px; cursor: nwse-resize; border-right: 2px solid #fff; border-bottom: 2px solid #fff; opacity: .8; }

/* acento do picker em peças que ignoravam a cor (subathon/boss/combo) */
.stfx-subathon .t { color: var(--li-accent, #fff); font-weight: 900; }
.stfx-boss .bs-name { color: var(--li-accent, #fff); }
.stfx-combo { text-shadow: 0 0 12px var(--li-accent, var(--live)), 0 2px 4px rgba(0,0,0,.6); }
.stfx-radar .stfx-toast { border-color: color-mix(in srgb, var(--li-accent, #10B981) 45%, rgba(255,255,255,.25)); }

@media (prefers-reduced-motion: reduce) {
  .st-fx-layer.li3-edit-flash .stfx-anchor, .li3-flash, .li3-swap, .li3-aval.li3-aval-alt.li3-swap { animation: none; }
}

/* ==========================================================================
   VOZ IA — HUB (sub-abas) + ÁUDIOS GRAVADOS (galeria + config de preset)
   Reusa .fx-card/.fx-audio-row/.amb-* (já estilizados). Prefixos vzhub-/audgr-.
   ========================================================================== */
.vzhub-subtabs { margin: 4px 0 18px; }
.vzhub-subtabs .subtab { font-size: 13.5px; }
.vzhub-section { margin-top: 16px; }
.vzhub-section .fx-card { margin: 0; }

/* botão minúsculo p/ ações de faixa */
.btn.xs { height: 26px; padding: 0 8px; font-size: 12px; border-radius: 8px; }

/* --- galeria --- */
.audgr-intro { margin-bottom: 18px; }
.audgr-grid {
  display: grid; gap: 14px;
  grid-template-columns: repeat(auto-fill, minmax(190px, 1fr));
}
.audgr-card {
  display: flex; flex-direction: column; align-items: flex-start; gap: 8px;
  padding: 16px; border-radius: 16px; text-align: left; cursor: pointer;
  background: var(--bg-raise); border: 1px solid var(--border-neutral);
  color: var(--text); transition: var(--t); min-height: 150px;
}
.audgr-card:hover { border-color: var(--accent); transform: translateY(-2px); box-shadow: 0 12px 30px rgba(0,0,0,.35); }
.audgr-card-vis {
  width: 52px; height: 52px; border-radius: 14px; display: flex;
  align-items: center; justify-content: center; box-shadow: inset 0 0 0 1px rgba(255,255,255,.08);
}
.audgr-card-vis.sm { width: 40px; height: 40px; border-radius: 11px; }
.audgr-card-ini { font-size: 22px; font-weight: 800; color: #fff; text-shadow: 0 1px 6px rgba(0,0,0,.45); }
.audgr-card-vis.sm .audgr-card-ini { font-size: 17px; }
.audgr-card-nome { font-size: 15px; font-weight: 700; line-height: 1.25; }
.audgr-card-tags { display: flex; flex-wrap: wrap; gap: 6px; margin-top: auto; }
.audgr-chip {
  display: inline-flex; align-items: center; font-size: 11px; font-weight: 600;
  padding: 3px 9px; border-radius: 99px; color: var(--accent);
  background: rgba(139,92,246,.12); border: 1px solid rgba(139,92,246,.3);
}
.audgr-chip.muted { color: var(--text-3); background: var(--bg-raise); border-color: var(--border-neutral); }
.audgr-card-meta { font-size: 11.5px; color: var(--text-3); }
.audgr-card-new {
  align-items: center; justify-content: center; text-align: center; gap: 6px;
  border-style: dashed; color: var(--text-2);
}
.audgr-card-new:hover { color: var(--text); }
.audgr-card-new-ic { font-size: 30px; font-weight: 300; line-height: 1; color: var(--accent); }
.audgr-card-new-txt { font-size: 14px; font-weight: 700; }
.audgr-card-new small { font-size: 11px; color: var(--text-3); }

/* --- config do preset --- */
.audgr-cfg-head { display: flex; align-items: center; gap: 14px; margin-bottom: 18px; flex-wrap: wrap; }
.audgr-cfg-title { display: flex; align-items: center; gap: 12px; }
.audgr-cfg-title h3 { margin: 0; }
.audgr-cfg-title .audgr-chip { margin-top: 4px; }
.audgr-faixas { list-style: none; margin: 12px 0 4px; padding: 0; display: flex; flex-direction: column; gap: 8px; }
.audgr-faixa {
  display: flex; align-items: center; gap: 10px; padding: 9px 12px;
  border-radius: 10px; background: var(--bg-raise); border: 1px solid var(--border-neutral);
}
.audgr-faixa.playing { border-color: var(--accent); box-shadow: inset 3px 0 0 var(--accent); }
.audgr-faixa-ord {
  width: 22px; height: 22px; flex: 0 0 auto; border-radius: 6px; font-size: 11px; font-weight: 800;
  display: inline-flex; align-items: center; justify-content: center;
  background: rgba(139,92,246,.14); color: var(--accent);
}
.audgr-faixa-nome { flex: 1; font-size: 13px; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.audgr-faixa-acts { display: flex; gap: 4px; flex: 0 0 auto; }
.audgr-faixa-acts .btn.xs:disabled { opacity: .35; cursor: default; }
.audgr-del:hover { border-color: var(--live) !important; color: var(--live) !important; }
.audgr-faixa-empty { list-style: none; padding: 14px; text-align: center; color: var(--text-3); font-size: 12.5px; border: 1px dashed var(--border-neutral); border-radius: 10px; }
.audgr-add { display: flex; gap: 8px; margin-top: 12px; }
.audgr-add .vz-input { flex: 1; }
.audgr-loopall { display: flex; align-items: center; gap: 8px; margin-top: 12px; font-size: 12.5px; color: var(--text-2); cursor: pointer; }
.audgr-cfg-foot { display: flex; justify-content: flex-end; margin-top: 18px; }
/* mix do preset — modo, picotar, volumes, ducking, faixa fixa */
.audgr-modo { flex-direction: column; align-items: stretch; gap: 8px; margin: 6px 0 4px; }
.audgr-modo-opt { align-items: flex-start; flex-wrap: wrap; padding: 8px 10px; border: 1px solid var(--border-soft); border-radius: var(--r-btn); }
.audgr-modo-opt b { font-weight: 600; color: var(--text); }
.audgr-modo-opt small { flex-basis: 100%; margin-left: 22px; color: var(--text-3); font-size: 10.5px; }
.audgr-trecho, .audgr-duck-row { flex-direction: row; align-items: center; gap: 8px; margin-top: 10px; }
.audgr-trecho > span, .audgr-duck-row > span { flex: 0 0 auto; text-transform: none; font-size: 10.5px; color: var(--text-2); font-weight: 600; }
.audgr-duck-row > span { flex: 0 0 108px; }
.audgr-trecho input[type=range], .audgr-duck-row input[type=range] { flex: 1; }
.audgr-trecho-val, .audgr-duck-val { font-size: 11px; color: var(--text-2); min-width: 44px; text-align: right; }
.audgr-vol-row { grid-template-columns: minmax(0,1fr) minmax(130px,190px); }
.audgr-vol-row .fx-mini { grid-column: auto; flex-direction: row; align-items: center; gap: 8px; }
.audgr-vol-row .fx-mini input[type=range] { flex: 1; }
.audgr-vol-val { font-size: 11px; color: var(--text-2); min-width: 34px; text-align: right; }
/* faixa fixa = 4º modo: dropdown revelado dentro do card de modo */
.audgr-fixa-wrap { margin: 4px 0 10px; padding: 10px; border: 1px solid var(--border-soft); border-radius: var(--r-btn); background: var(--bg-raise); }
.audgr-fixa-lbl { display: block; font-size: 10.5px; letter-spacing: .04em; color: var(--text-2); font-weight: 600; margin-bottom: 6px; }
.audgr-fixa-sel { width: 100%; }
.audgr-fixa-wrap .st-pl-hint { display: block; margin-top: 6px; }
/* ⚙ Ajuste fino do ducking — recolhe ataque/release (jargão) */
.audgr-duck-fino { margin-top: 12px; border-top: 1px dashed var(--border-soft); padding-top: 8px; }
.audgr-duck-fino > summary { cursor: pointer; font-size: 11.5px; color: var(--text-2); font-weight: 600; list-style: none; user-select: none; padding: 2px 0; }
.audgr-duck-fino > summary::-webkit-details-marker { display: none; }
.audgr-duck-fino > summary::before { content: "▸"; display: inline-block; margin-right: 6px; color: var(--text-3); transition: transform .15s ease; }
.audgr-duck-fino[open] > summary::before { transform: rotate(90deg); }
.audgr-duck-fino-body { padding-top: 2px; }
/* copy honesto: áudio fica no PC do usuário */
.audgr-local-note { margin: 12px 0 0; font-size: 11.5px; line-height: 1.5; color: var(--text-2); background: var(--bg-raise); border: 1px solid var(--border-soft); border-radius: var(--r-btn); padding: 9px 11px; }
.audgr-local-note-cloud { color: var(--text-3); }
/* 🎉 som da comemoração — 1 clipe (nome + testar + remover) */
.audgr-cel-hint { margin: 0 0 10px; font-size: 12px; line-height: 1.5; color: var(--text-2); }
.audgr-duck-toggle { margin-top: 10px; }
.audgr-cel-has { display: flex; align-items: center; gap: 10px; padding: 10px 12px; border: 1px solid var(--border-soft); border-radius: var(--r-btn); background: var(--bg-raise); }
.audgr-cel-ic { flex: 0 0 auto; font-size: 18px; }
.audgr-cel-nome { flex: 1; font-size: 13px; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.audgr-cel-acts { display: flex; gap: 4px; flex: 0 0 auto; }
/* ⚙ Avançado — recolhe picote, anti-detecção e ambiente sintético */
.audgr-adv > summary { cursor: pointer; list-style: none; user-select: none; display: flex; align-items: center; gap: 8px; font-weight: 600; font-size: 14px; color: var(--text); }
.audgr-adv > summary::-webkit-details-marker { display: none; }
.audgr-adv > summary::before { content: "▸"; color: var(--text-3); transition: transform .15s ease; }
.audgr-adv[open] > summary::before { transform: rotate(90deg); }
.audgr-adv-sum small { font-weight: 400; font-size: 11.5px; color: var(--text-3); }
.audgr-adv-body { margin-top: 14px; }

/* --- modal novo preset --- */
.audgr-modal-head { display: flex; align-items: center; gap: 10px; margin-bottom: 6px; }
.audgr-modal-head h3 { margin: 0; }
.audgr-modal-ic { font-size: 24px; }
.audgr-modal .vz-field { margin-top: 12px; }

/* ==========================================================================
   FASE 2a — Estúdio: galeria de presets de vídeo (mesmo padrão de Áudios
   gravados, prefixo estp-). Tile de gradiente determinístico reusa audgrColor.
   ========================================================================== */
.estp-back { margin-bottom: 12px; }
.estp-intro { margin-bottom: 18px; }
.estp-grid {
  display: grid; gap: 14px;
  grid-template-columns: repeat(auto-fill, minmax(190px, 1fr));
}
.estp-card {
  display: flex; flex-direction: column; align-items: flex-start; gap: 8px;
  padding: 16px; border-radius: 16px; text-align: left; cursor: pointer;
  background: var(--bg-raise); border: 1px solid var(--border-neutral);
  color: var(--text); transition: var(--t); min-height: 150px;
}
.estp-card:hover { border-color: var(--accent); transform: translateY(-2px); box-shadow: 0 12px 30px rgba(0,0,0,.35); }
.estp-card-vis {
  width: 52px; height: 52px; border-radius: 14px; display: flex;
  align-items: center; justify-content: center; box-shadow: inset 0 0 0 1px rgba(255,255,255,.08);
}
.estp-card-ini { font-size: 22px; font-weight: 800; color: #fff; text-shadow: 0 1px 6px rgba(0,0,0,.45); }
.estp-card-nome { font-size: 15px; font-weight: 700; line-height: 1.25; }
.estp-card-tags { display: flex; flex-wrap: wrap; gap: 6px; margin-top: auto; }
.estp-chip {
  display: inline-flex; align-items: center; font-size: 11px; font-weight: 600;
  padding: 3px 9px; border-radius: 99px; color: var(--accent);
  background: rgba(139,92,246,.12); border: 1px solid rgba(139,92,246,.3);
}
.estp-chip.muted { color: var(--text-3); background: var(--bg-raise); border-color: var(--border-neutral); }
.estp-card-meta { font-size: 11.5px; color: var(--text-3); }
.estp-card-new {
  align-items: center; justify-content: center; text-align: center; gap: 6px;
  border-style: dashed; color: var(--text-2);
}
.estp-card-new:hover { color: var(--text); }
.estp-card-new-ic { font-size: 30px; font-weight: 300; line-height: 1; color: var(--accent); }
.estp-card-new-txt { font-size: 14px; font-weight: 700; }
.estp-card-new small { font-size: 11px; color: var(--text-3); }
.estp-modal-head { display: flex; align-items: center; gap: 10px; margin-bottom: 6px; }
.estp-modal-head h3 { margin: 0; }
.estp-modal-ic { font-size: 24px; }
.estp-modal .vz-field { margin-top: 12px; }

/* ==========================================================================
   VZ-6 — MARKETPLACE de roteiros (Comunidade, comu-). Faixa → galeria de
   receitas → mini-fluxo de importar → publicar como receita. A "lei" (o preço
   não viaja) fica visível em selo/nota em todo passo.
   ========================================================================== */
.comu-wrap { margin: 6px 0 16px; }
.comu-banda {
  display: flex; align-items: center; gap: 12px; width: 100%; text-align: left;
  padding: 13px 16px; border-radius: 14px; cursor: pointer; color: var(--text);
  background: linear-gradient(135deg, rgba(139,92,246,.14), rgba(236,72,153,.10));
  border: 1px solid rgba(139,92,246,.34); transition: var(--t);
}
.comu-banda:hover { border-color: var(--accent); transform: translateY(-1px); box-shadow: 0 10px 26px rgba(0,0,0,.3); }
.comu-banda-on { border-color: rgba(139,92,246,.5); }
.comu-banda-ic { font-size: 22px; line-height: 1; flex: 0 0 auto; }
.comu-banda-tx { display: flex; flex-direction: column; gap: 2px; flex: 1; min-width: 0; }
.comu-banda-tx b { font-size: 14.5px; }
.comu-banda-tx small { font-size: 11.5px; color: var(--text-3); line-height: 1.45; }
.comu-banda-tx small b { color: var(--text-2); font-size: inherit; }
.comu-banda-cta { flex: 0 0 auto; font-size: 12px; font-weight: 700; color: var(--accent); }
.comu-lei {
  display: flex; gap: 10px; align-items: flex-start; margin: 12px 0; padding: 10px 13px;
  border-radius: 12px; font-size: 12px; line-height: 1.5; color: var(--text-2);
  background: var(--bg-raise); border: 1px dashed rgba(139,92,246,.42);
}
.comu-lei b { color: var(--text); }
.comu-lei-ic { font-size: 16px; line-height: 1; flex: 0 0 auto; }
.comu-grid {
  display: grid; gap: 14px; margin-top: 12px;
  grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
}
.comu-card {
  display: flex; flex-direction: column; gap: 10px; padding: 16px; border-radius: 16px;
  background: var(--bg-raise); border: 1px solid var(--border-neutral); transition: var(--t);
}
.comu-card:hover { border-color: rgba(139,92,246,.5); transform: translateY(-2px); box-shadow: 0 12px 30px rgba(0,0,0,.35); }
.comu-card-top { display: flex; align-items: center; gap: 12px; }
.comu-card-vis {
  width: 46px; height: 46px; border-radius: 13px; flex: 0 0 auto; font-size: 22px;
  display: flex; align-items: center; justify-content: center;
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.08);
}
.comu-card-hd { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.comu-card-tt { font-size: 15px; font-weight: 700; line-height: 1.2; }
.comu-card-nicho { font-size: 11.5px; color: var(--text-3); font-weight: 600; }
.comu-card-resumo { font-size: 12.5px; color: var(--text-2); line-height: 1.5; margin: 0; }
.comu-card-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.comu-chip {
  display: inline-flex; align-items: center; font-size: 11px; font-weight: 600;
  padding: 3px 9px; border-radius: 99px; color: var(--accent);
  background: rgba(139,92,246,.12); border: 1px solid rgba(139,92,246,.3);
}
.comu-card-selo {
  font-size: 10.5px; font-weight: 600; color: var(--text-3); line-height: 1.4;
  padding: 7px 10px; border-radius: 10px; background: var(--bg); border: 1px solid var(--border-neutral);
}
.comu-card-btn { align-self: flex-start; margin-top: 2px; }
/* ---- mini-fluxo de importar ---- */
.comu-imp-card { display: flex; flex-direction: column; gap: 14px; }
.comu-sel { flex: 1; min-width: 220px; }
.comu-imp-vazio { font-size: 12.5px; color: var(--text-2); display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.comu-imp-preco {
  display: flex; flex-direction: column; gap: 2px; padding: 12px 14px; border-radius: 12px;
  background: linear-gradient(135deg, rgba(16,185,129,.10), rgba(139,92,246,.08));
  border: 1px solid rgba(16,185,129,.32);
}
.comu-imp-preco-k { font-size: 11px; font-weight: 700; letter-spacing: .03em; text-transform: uppercase; color: var(--text-3); }
.comu-imp-preco-v { font-size: 20px; font-weight: 800; color: var(--text); }
.comu-imp-preco small { font-size: 11px; color: var(--text-3); }
.comu-imp-foot { display: flex; flex-direction: column; gap: 6px; }
.comu-imp-demo { font-size: 11px; color: var(--text-3); }
/* ---- publicar como receita (modal) ---- */
.comu-pub-cols { display: flex; gap: 12px; margin-top: 14px; flex-wrap: wrap; }
.comu-pub-col { flex: 1 1 180px; padding: 12px 14px; border-radius: 12px; background: var(--bg-raise); border: 1px solid var(--border-neutral); }
.comu-pub-vai { border-color: rgba(16,185,129,.4); }
.comu-pub-nao { border-color: rgba(239,68,68,.4); }
.comu-pub-t { font-size: 12px; font-weight: 700; margin-bottom: 8px; }
.comu-pub-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 6px; }
.comu-pub-list li { font-size: 12px; line-height: 1.4; padding-left: 18px; position: relative; color: var(--text-2); }
.comu-pub-y::before { content: "✓"; position: absolute; left: 0; color: var(--emerald, #10b981); font-weight: 700; }
.comu-pub-n::before { content: "✕"; position: absolute; left: 0; color: #ef4444; font-weight: 700; }
.comu-pub-lei {
  margin-top: 14px; padding: 10px 13px; border-radius: 10px; font-size: 12px; font-weight: 600;
  color: var(--text-2); background: var(--bg-raise); border: 1px dashed rgba(139,92,246,.42);
}

/* ==========================================================================
   VZ-3 — Preset de PRODUTO (prodp-). Form rico em 4 grupos + galeria estp-.
   ========================================================================== */
.prodp-row { display: flex; flex-wrap: wrap; gap: 14px; align-items: flex-start; }
.prodp-field { margin-top: 4px; }
.prodp-selo {
  display: inline-flex; align-items: center; font-size: 10px; font-weight: 700;
  letter-spacing: .02em; padding: 1px 7px; border-radius: 99px; margin-left: 6px;
  color: var(--accent); background: rgba(139,92,246,.12); border: 1px solid rgba(139,92,246,.3);
  text-transform: none;
}
.prodp-hint { display: block; font-size: 10.5px; color: var(--text-3); font-weight: 500; margin-top: 4px; text-transform: none; letter-spacing: 0; }
/* ---- Selo da IA ("sugerido pela IA · revise") — distinto do "↳ do link" (preenchido, gradiente + estrela) ---- */
.prodp-selo.prodp-ia {
  color: #fff; border-color: transparent;
  background: linear-gradient(135deg, var(--accent), #EC4899);
  box-shadow: 0 0 10px rgba(139,92,246,.45); gap: 4px;
}
.prodp-ia-x {
  display: inline-flex; align-items: center; justify-content: center; width: 15px; height: 15px;
  margin-left: 2px; padding: 0; border: none; border-radius: 99px; cursor: pointer; line-height: 1;
  font-size: 10px; color: #fff; background: rgba(255,255,255,.22);
}
.prodp-ia-x:hover { background: rgba(255,255,255,.4); }
.prodp-chip-ia { color: var(--accent); font-size: 11px; }
.prodp-chip-iaon { border-color: rgba(139,92,246,.45); box-shadow: inset 0 0 0 1px rgba(236,72,153,.18); }
/* ---- Barra da IA ("nosso cérebro") ---- */
.prodp-iabar { border-color: rgba(139,92,246,.35); }
.prodp-iabar-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; flex-wrap: wrap; }
.prodp-iabar-head > div { flex: 1 1 260px; min-width: 0; }
.prodp-ia-banner {
  font-size: 12px; line-height: 1.5; color: var(--text-2); font-weight: 600;
  padding: 10px 12px; border-radius: 10px; margin-top: 10px;
  background: linear-gradient(135deg, rgba(139,92,246,.12), rgba(236,72,153,.09));
  border: 1px solid rgba(139,92,246,.32);
}
.prodp-ia-prop {
  margin-top: 12px; padding: 12px 14px; border-radius: 12px;
  background: var(--bg-raise); border: 1px dashed rgba(139,92,246,.45);
}
.prodp-ia-prop-t { font-size: 11px; font-weight: 700; letter-spacing: .04em; color: var(--text-2); margin-bottom: 8px; text-transform: uppercase; }
.prodp-ia-prop-list { list-style: none; margin: 0 0 12px; padding: 0; display: flex; flex-direction: column; gap: 5px; }
.prodp-ia-prop-list li { font-size: 12.5px; color: var(--text); line-height: 1.4; }
.prodp-ia-prop-list b { color: var(--text-2); font-weight: 700; }
.prodp-ia-prop-actions { display: flex; gap: 10px; flex-wrap: wrap; }
.prodp-ia-prop-actions small { font-weight: 500; opacity: .85; }
/* ---- Tom derivado da faixa de preço (read-only) ---- */
.prodp-tomfaixa {
  font-size: 12px; line-height: 1.45; color: var(--text-2); font-weight: 600;
  padding: 9px 12px; border-radius: 10px; margin: 10px 0 4px;
  background: var(--accent-soft); border: 1px solid rgba(139,92,246,.28);
}
.prodp-tomfaixa b { color: var(--text); }
/* ---- Loja opcional + hint ---- */
.prodp-loja-wrap { flex: 1 1 220px; min-width: 0; display: flex; flex-direction: column; }
.prodp-loja-wrap .prodp-field { flex: 0 0 auto; }
.prodp-opt { font-size: 10px; font-weight: 600; color: var(--text-3); text-transform: none; letter-spacing: 0; }
/* ---- Specs a confirmar (sugeridas pela IA) ---- */
.prodp-specs-sug { margin-top: 12px; padding: 12px 14px; border-radius: 12px; background: var(--bg-raise); border: 1px dashed rgba(139,92,246,.4); }
.prodp-specs-list { list-style: none; margin: 0 0 6px; padding: 0; display: flex; flex-direction: column; gap: 8px; }
.prodp-spec-item { display: flex; align-items: center; gap: 10px; font-size: 12.5px; color: var(--text); }
.prodp-spec-val { flex: 1 1 auto; min-width: 0; }
.prodp-linkbar { border-color: rgba(139,92,246,.35); }
.prodp-link-row { display: flex; gap: 10px; align-items: stretch; flex-wrap: wrap; }
.prodp-link-row .vz-input { flex: 1 1 260px; }
.prodp-cdc {
  font-size: 11.5px; line-height: 1.45; color: var(--text-2); font-weight: 600;
  padding: 9px 12px; border-radius: 10px; margin-bottom: 12px;
  background: rgba(245,158,11,.09); border: 1px solid rgba(245,158,11,.28);
}
.prodp-price-lock, .prodp-price-anc { flex: 1 1 220px; min-width: 0; }
.prodp-check {
  display: inline-flex; align-items: center; gap: 8px; font-size: 12px; font-weight: 600;
  color: var(--text-2); margin-top: 8px; cursor: pointer;
}
.prodp-check input { accent-color: var(--accent); }
.prodp-anctri {
  border: 1px dashed var(--border-neutral); border-radius: 12px;
  padding: 12px 14px; margin: 6px 0 12px;
}
.prodp-anctri-t, .prodp-block-t { display: block; font-size: 11px; font-weight: 700; letter-spacing: .04em; color: var(--text-2); margin-bottom: 8px; }
.prodp-block { margin-top: 14px; }
.prodp-block-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 8px; }
.prodp-block-head .prodp-block-t { margin-bottom: 0; }
.prodp-chips, .prodp-objs { list-style: none; margin: 0 0 8px; padding: 0; display: flex; flex-wrap: wrap; gap: 8px; }
.prodp-objs { flex-direction: column; }
.prodp-chip-item {
  display: inline-flex; align-items: center; gap: 6px; font-size: 12.5px; font-weight: 600;
  padding: 5px 6px 5px 12px; border-radius: 99px; color: var(--text);
  background: var(--bg-raise); border: 1px solid var(--border-neutral);
}
.prodp-chips-empty { font-size: 12px; color: var(--text-3); font-style: italic; }
.prodp-chip-del {
  display: inline-flex; align-items: center; justify-content: center; width: 20px; height: 20px;
  border-radius: 99px; border: none; cursor: pointer; font-size: 12px; line-height: 1;
  color: var(--text-3); background: transparent;
}
.prodp-chip-del:hover { color: #fff; background: var(--danger, #EF4444); }
.prodp-obj-item {
  display: flex; align-items: flex-start; justify-content: space-between; gap: 10px;
  padding: 9px 12px; border-radius: 10px; width: 100%;
  background: var(--bg-raise); border: 1px solid var(--border-neutral);
}
.prodp-obj-qa { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.prodp-obj-qa b { font-size: 12.5px; color: var(--text); }
.prodp-obj-qa span { font-size: 12px; color: var(--text-2); }
.prodp-add { display: flex; gap: 8px; align-items: stretch; flex-wrap: wrap; }
.prodp-add .vz-input { flex: 1 1 200px; }
.prodp-add-obj .vz-input { flex: 1 1 160px; }

/* ==========================================================================
   2b.2 — Automação · galeria de presets de REAÇÃO (aump-). Gêmea de estp-.
   ========================================================================== */
.aump-intro { margin-bottom: 18px; }
.aump-grid {
  display: grid; gap: 14px;
  grid-template-columns: repeat(auto-fill, minmax(190px, 1fr));
}
.aump-card {
  display: flex; flex-direction: column; align-items: flex-start; gap: 8px;
  padding: 16px; border-radius: 16px; text-align: left; cursor: pointer;
  background: var(--bg-raise); border: 1px solid var(--border-neutral);
  color: var(--text); transition: var(--t); min-height: 150px;
}
.aump-card:hover { border-color: var(--accent); transform: translateY(-2px); box-shadow: 0 12px 30px rgba(0,0,0,.35); }
.aump-card-vis {
  width: 52px; height: 52px; border-radius: 14px; display: flex;
  align-items: center; justify-content: center; box-shadow: inset 0 0 0 1px rgba(255,255,255,.08);
}
.aump-card-ini { font-size: 22px; font-weight: 800; color: #fff; text-shadow: 0 1px 6px rgba(0,0,0,.45); }
.aump-card-nome { font-size: 15px; font-weight: 700; line-height: 1.25; }
.aump-card-tags { display: flex; flex-wrap: wrap; gap: 6px; margin-top: auto; }
.aump-chip {
  display: inline-flex; align-items: center; font-size: 11px; font-weight: 600;
  padding: 3px 9px; border-radius: 99px; color: var(--accent);
  background: rgba(139,92,246,.12); border: 1px solid rgba(139,92,246,.3);
}
.aump-chip.muted { color: var(--text-3); background: var(--bg-raise); border-color: var(--border-neutral); }
.aump-card-meta { font-size: 11.5px; color: var(--text-3); }
.aump-card-new {
  align-items: center; justify-content: center; text-align: center; gap: 6px;
  border-style: dashed; color: var(--text-2);
}
.aump-card-new:hover { color: var(--text); }
.aump-card-new-ic { font-size: 30px; font-weight: 300; line-height: 1; color: var(--accent); }
.aump-card-new-txt { font-size: 14px; font-weight: 700; }
.aump-card-new small { font-size: 11px; color: var(--text-3); }
.aump-modal-head { display: flex; align-items: center; gap: 10px; margin-bottom: 6px; }
.aump-modal-head h3 { margin: 0; }
.aump-modal-ic { font-size: 24px; }
.aump-modal .vz-field { margin-top: 12px; }
.aump-back { margin-bottom: 12px; }
.aump-canvas-ph {
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 10px; text-align: center; padding: 60px 24px; border-radius: 18px;
  border: 1px dashed var(--border-neutral); background: var(--bg-raise); color: var(--text-2);
}
.aump-canvas-ph-ic { font-size: 40px; }
.aump-canvas-ph b { color: var(--text); font-size: 17px; }
.aump-canvas-ph p { max-width: 460px; font-size: 13px; line-height: 1.5; margin: 0; }

/* 2b.3 — Canvas de nós embutido por dentro do preset de Automação */
.aump-canvas-host { position: relative; }
.aump-canvas-frame {
  display: block; width: 100%; height: calc(100vh - 320px); min-height: 520px;
  border: 1px solid var(--border-soft); border-radius: 14px; background: #08090F;
}

/* 2b.5 — termômetro N/4 no card do perfil */
.rc-termo {
  display: inline-flex; align-items: center; gap: 3px; font-size: 11px; font-weight: 700;
  font-variant-numeric: tabular-nums; padding: 2px 8px; border-radius: 999px; cursor: pointer;
  border: 1px solid var(--border-neutral); background: var(--bg-raise); color: var(--text-2);
  transition: var(--t);
}
.rc-termo:hover { border-color: var(--accent); color: var(--text); }
.rc-termo.zero { color: var(--live); border-color: rgba(239,68,68,.32); background: var(--live-soft); }
.rc-termo.part { color: var(--warn); border-color: rgba(245,158,11,.32); background: var(--warn-soft); }
.rc-termo.full { color: var(--emerald); border-color: rgba(16,185,129,.35); background: var(--emerald-soft); }

/* 2b.4 — aba Vincular (tela nativa) */
.fnvinc-pane { margin-top: 14px; }
.fnvinc-empty { padding: 48px 24px; text-align: center; color: var(--text-2); border: 1px dashed var(--border-neutral); border-radius: 16px; }
.fnvinc-wrap { display: flex; flex-direction: column; gap: 18px; }
/* Cabeçalho da tela de Presets de Live: absorveu a barra de resumo que ficava
   logo abaixo (nome/prontidão/chips eram repetição do que o hub do canvas já
   mostra). Vira um bloco único — menos altura, uma informação em um lugar só. */
.fnvinc-head { display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap;
  padding: 10px 14px; border: 1px solid var(--border-soft); border-radius: var(--r-btn); background: var(--bg-raise); }
.fnvinc-title { margin: 4px 0 0; font-size: 22px; font-weight: 800; }
.fnvinc-perfil { display: flex; flex-direction: column; gap: 5px; min-width: 260px; }
.fnvinc-perfil > span, .fnvinc-field > span {
  font-size: 11px; letter-spacing: .03em; color: var(--text-2); font-weight: 600; text-transform: uppercase;
}
.fnvinc-field > span small { text-transform: none; letter-spacing: 0; color: var(--text-3); font-weight: 500; margin-left: 6px; }
.fnvinc-select {
  width: 100%; padding: 10px 12px; border-radius: 10px; font-size: 13.5px;
  background: var(--bg-raise); border: 1px solid var(--border-neutral); color: var(--text);
  cursor: pointer; transition: var(--t);
}
.fnvinc-select:focus { outline: none; border-color: var(--accent); }
.fnvinc-grid { display: grid; grid-template-columns: minmax(0,1.4fr) minmax(280px,1fr); gap: 20px; align-items: start; }
.fnvinc-col { display: flex; flex-direction: column; gap: 14px; }
.fnvinc-field { display: flex; flex-direction: column; gap: 6px; }
.fnvinc-side { gap: 14px; }
.fnvinc-termo-box { border: 1px solid var(--border-soft); background: var(--bg-card); border-radius: 16px; padding: 16px; }
.fnvinc-termo-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 6px; }
.fnvinc-termo-n { font-size: 34px; font-weight: 800; line-height: 1; color: var(--warn); font-variant-numeric: tabular-nums; }
.fnvinc-termo-n.full { color: var(--emerald); }
.fnvinc-termo-n span { font-size: 18px; color: var(--text-3); font-weight: 600; }
.fnvinc-cklist { list-style: none; margin: 14px 0 0; padding: 0; display: flex; flex-direction: column; gap: 8px; }
.fnvinc-ck { display: flex; align-items: flex-start; gap: 9px; }
.fnvinc-ck-ic {
  flex: 0 0 auto; width: 18px; height: 18px; border-radius: 50%; display: inline-flex;
  align-items: center; justify-content: center; font-size: 11px; font-weight: 800; margin-top: 1px;
}
.fnvinc-ck.ok  .fnvinc-ck-ic { color: var(--emerald); background: var(--emerald-soft); }
.fnvinc-ck.no  .fnvinc-ck-ic { color: var(--live);    background: var(--live-soft); }
.fnvinc-ck.warn .fnvinc-ck-ic { color: var(--warn);   background: var(--warn-soft); }
.fnvinc-ck-tx { display: flex; flex-direction: column; gap: 1px; }
.fnvinc-ck-tx b { font-size: 12.5px; font-weight: 600; }
.fnvinc-ck-tx small { font-size: 11px; color: var(--text-3); line-height: 1.4; }
.fnvinc-ck-tag { font-size: 9.5px; text-transform: uppercase; letter-spacing: .04em; color: var(--text-3); margin-left: 6px; padding: 1px 5px; border-radius: 5px; border: 1px solid var(--border-soft); }
.fnvinc-rodar { width: 100%; justify-content: center; }
.fnvinc-rodar:disabled { opacity: .55; cursor: not-allowed; }
.fnvinc-hint { font-size: 11.5px; color: var(--text-3); line-height: 1.5; margin: 0; }
@media (max-width: 900px) { .fnvinc-grid { grid-template-columns: 1fr; } }

/* ==========================================================================
   Vincular — CANVAS DE VINCULAÇÃO (fvcanvas-). Só camada visual: nós estilo
   "canvas de nós" + arestas SVG que acendem conforme o validarPlano.
   ========================================================================== */
.fvcanvas-wrap { display: flex; flex-direction: column; gap: 14px; }
.fvcanvas-stage { display: flex; flex-direction: column; border: 1px solid var(--border-neutral); border-radius: 20px; overflow: hidden; background: var(--bg-card); }
.fvcanvas-field {
  position: relative; flex: 1; min-height: clamp(540px, 72vh, 820px); overflow: hidden;
  background-color: var(--bg);
  background-image: radial-gradient(circle, rgba(148,163,184,.12) 1px, transparent 1.4px);
  background-size: 26px 26px; background-position: 40px 40px;
}
.fvcanvas-field::before { content: ''; position: absolute; inset: 0; z-index: 0; pointer-events: none;
  background: radial-gradient(120% 90% at 40% 45%, rgba(139,92,246,.12), transparent 62%); }
.fvcanvas-edges { position: absolute; inset: 0; width: 100%; height: 100%; z-index: 1; pointer-events: none; overflow: visible; }
.fvcanvas-edge { fill: none; stroke-width: 2.4px; stroke-linecap: round; transition: stroke .2s, opacity .2s; }
.fvcanvas-edge.on { stroke: var(--emerald); filter: drop-shadow(0 0 5px rgba(16,185,129,.55)); }
.fvcanvas-edge.off { stroke: var(--live); stroke-dasharray: 5 6; opacity: .7; }
.fvcanvas-edge.opt { stroke: var(--text-3); stroke-dasharray: 3 7; opacity: .45; }
.fvcanvas-nodes { position: absolute; inset: 0; z-index: 2; }
.fvcanvas-node {
  position: absolute; width: 220px; transform: translate(-50%, -50%);
  background: linear-gradient(180deg, var(--bg-raise), var(--bg-card));
  border: 1px solid var(--border-neutral); border-radius: 14px; box-shadow: var(--shadow-card);
  border-top: 3px solid var(--node-cat, var(--text-3));
}
.fvcanvas-node.cat-video { --node-cat: #8B5CF6; }
.fvcanvas-node.cat-audio { --node-cat: #06B6D4; }
.fvcanvas-node.cat-automacao { --node-cat: #F59E0B; }
.fvcanvas-node.cat-roteiro { --node-cat: #EC4899; }
.fvcanvas-node.st-on { box-shadow: 0 0 0 1px rgba(16,185,129,.35), var(--shadow-card); }
.fvcanvas-nhead { display: flex; align-items: center; gap: 8px; padding: 9px 11px; }
.fvcanvas-ico { font-size: 16px; line-height: 1; }
.fvcanvas-ntx { flex: 1; min-width: 0; }
.fvcanvas-ntx b { display: block; font-size: 12.5px; font-weight: 700; line-height: 1.15; }
.fvcanvas-ntx small { display: block; font-size: 10.5px; color: var(--text-3); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.fvcanvas-dot { width: 9px; height: 9px; border-radius: 50%; background: var(--text-3); flex: none; }
.fvcanvas-node.st-on .fvcanvas-dot { background: var(--emerald); box-shadow: 0 0 6px rgba(16,185,129,.7); }
.fvcanvas-node.st-off .fvcanvas-dot { background: var(--live); }
.fvcanvas-node.st-opt .fvcanvas-dot { background: var(--text-3); opacity: .6; }
.fvcanvas-nbody { padding: 0 11px 11px; display: flex; flex-direction: column; gap: 7px; }
.fvcanvas-sel { width: 100%; }
.fvcanvas-bar { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; padding: 14px 16px; border-top: 1px solid var(--border-neutral); background: var(--bg-card); }
.fvcanvas-ready { display: flex; align-items: baseline; gap: 2px; color: var(--warn); font-variant-numeric: tabular-nums; }
.fvcanvas-ready b { font-size: 26px; font-weight: 800; line-height: 1; }
.fvcanvas-ready span { font-size: 15px; color: var(--text-3); font-weight: 700; }
.fvcanvas-ready i { font-size: 10.5px; text-transform: uppercase; letter-spacing: .05em; color: var(--text-3); margin-left: 6px; font-style: normal; }
.fvcanvas-ready.full { color: var(--emerald); }
.fvcanvas-chips { display: flex; gap: 6px; flex-wrap: wrap; flex: 1; min-width: 0; }
.fvcanvas-chip { display: inline-flex; align-items: center; gap: 5px; font-size: 10.5px; font-weight: 600; padding: 3px 9px; border-radius: 99px; border: 1px solid var(--border-neutral); color: var(--text-2); background: var(--bg-raise); }
.fvcanvas-chip i { width: 7px; height: 7px; border-radius: 50%; background: var(--text-3); flex: none; }
.fvcanvas-chip.ok { color: var(--emerald); border-color: rgba(16,185,129,.3); }
.fvcanvas-chip.ok i { background: var(--emerald); }
.fvcanvas-chip.no { color: var(--live); border-color: rgba(239,68,68,.3); }
.fvcanvas-chip.no i { background: var(--live); }
.fvcanvas-chip.warn { color: var(--warn); border-color: rgba(245,158,11,.3); }
.fvcanvas-chip.warn i { background: var(--warn); }
.fvcanvas-rodar { margin-left: auto; min-width: 180px; justify-content: center; }
.fvcanvas-rodar:disabled { opacity: .55; cursor: not-allowed; }
.fvcanvas-foot { margin: 0; }
@media (max-width: 768px) {
  .fvcanvas-field { min-height: 0; padding: 14px; background-image: none; }
  .fvcanvas-field::before { display: none; }
  .fvcanvas-edges { display: none; }
  .fvcanvas-nodes { position: static; }
  .fvcanvas-node { position: static !important; width: 100% !important; transform: none !important; margin-bottom: 12px; }
  .fvcanvas-node:last-child { margin-bottom: 0; }
  .fvcanvas-chips { order: 3; flex-basis: 100%; }
  .fvcanvas-rodar { margin-left: 0; width: 100%; }
}

/* ==========================================================================
   ONBOARDING QR GUIADO (onbq-) — stepper honesto de 3 passos p/ conectar conta
   (baixar app → extensão → escanear QR). Reusa .overlay / .modal-sm / .btn.
   Encenação demo; o perfil só vira linked ao concluir o fluxo.
   ========================================================================== */
.onbq-modal { width: min(440px, 94vw); text-align: left; }
.onbq-hd h3 { font-size: 19px; margin-bottom: 6px; }
.onbq-hd p { color: var(--text-3); font-size: 12.5px; margin: 0 0 16px; line-height: 1.5; }

/* stepper 1-2-3 com trilho de progresso */
.onbq-steps { list-style: none; display: flex; align-items: flex-start; margin: 0 0 18px; padding: 0; }
.onbq-step { flex: 1 1 0; display: flex; flex-direction: column; align-items: center; gap: 6px; position: relative; }
.onbq-step + .onbq-step::before {
  content: ''; position: absolute; top: 13px; left: -50%; width: 100%; height: 2px;
  background: var(--border-neutral); z-index: 0;
}
.onbq-step.on + .onbq-step::before, .onbq-step.done::before { }
.onbq-step.done + .onbq-step::before { background: linear-gradient(90deg, var(--emerald), var(--border-neutral)); }
.onbq-step-n {
  position: relative; z-index: 1; width: 28px; height: 28px; border-radius: 50%;
  display: inline-flex; align-items: center; justify-content: center;
  font-size: 12.5px; font-weight: 800; border: 1px solid var(--border-neutral);
  background: var(--bg-raise); color: var(--text-3); transition: var(--t);
}
.onbq-step.on .onbq-step-n { border-color: var(--accent); color: #fff; background: var(--grad-accent); box-shadow: 0 0 14px var(--accent-soft); }
.onbq-step.done .onbq-step-n { border-color: var(--emerald); color: #fff; background: var(--grad-ok); }
.onbq-step-lb { font-size: 10.5px; color: var(--text-3); text-align: center; line-height: 1.25; max-width: 84px; }
.onbq-step.on .onbq-step-lb { color: var(--text-2); font-weight: 600; }
.onbq-step.done .onbq-step-lb { color: var(--emerald); }

.onbq-body { min-height: 168px; display: flex; flex-direction: column; gap: 12px; }
.onbq-why { font-size: 12px; color: var(--text-2); line-height: 1.5; background: var(--accent-soft); border: 1px solid var(--border-card); border-radius: 12px; padding: 10px 12px; }
.onbq-cta { width: 100%; justify-content: center; }
.onbq-honest { font-size: 10.5px; color: var(--text-3); text-align: center; line-height: 1.4; margin-top: -4px; }

/* check "já instalei" */
.onbq-check { display: flex; align-items: center; gap: 10px; cursor: pointer; user-select: none; font-size: 13px; color: var(--text-2); padding: 10px 12px; border: 1px solid var(--border-neutral); border-radius: 12px; transition: var(--t); }
.onbq-check:hover { border-color: var(--accent); }
.onbq-check.on { border-color: var(--emerald); background: var(--emerald-soft); color: var(--text); }
.onbq-check input { position: absolute; opacity: 0; width: 0; height: 0; }
.onbq-check-bx { flex: 0 0 auto; width: 20px; height: 20px; border-radius: 6px; border: 1px solid var(--border-neutral); background: var(--bg-raise); display: inline-flex; align-items: center; justify-content: center; font-size: 12px; font-weight: 800; color: #fff; transition: var(--t); }
.onbq-check.on .onbq-check-bx { background: var(--grad-ok); border-color: var(--emerald); }

/* passo 3 — QR + espera */
.onbq-qr-wrap { display: flex; justify-content: center; padding: 4px 0; }
.onbq-qr-svg { border-radius: 14px; box-shadow: 0 8px 24px rgba(0,0,0,.4); }
.onbq-qr-cap { font-size: 11px; color: var(--text-3); text-align: center; line-height: 1.4; }
.onbq-qr-cap b { color: var(--warn); }
.onbq-wait { display: flex; align-items: center; justify-content: center; gap: 9px; font-size: 13px; color: var(--text-2); font-weight: 600; padding: 6px 0; }
.onbq-spin { width: 16px; height: 16px; border-radius: 50%; border: 2px solid var(--border-neutral); border-top-color: var(--accent); animation: onbqSpin .8s linear infinite; }
@keyframes onbqSpin { to { transform: rotate(360deg); } }

.onbq-final { display: flex; align-items: center; gap: 12px; padding: 16px; border-radius: 14px; border: 1px solid rgba(16,185,129,.3); background: var(--emerald-soft); animation: fade .25s var(--e); margin: auto 0; }
.onbq-final-ic { font-size: 30px; line-height: 1; }
.onbq-final-tx { display: flex; flex-direction: column; gap: 2px; }
.onbq-final-tx b { font-size: 15px; color: var(--text); }
.onbq-final-tx small { font-size: 12px; color: var(--text-2); }

.onbq-foot:empty { display: none; }
.onbq-foot .btn[disabled] { opacity: .5; cursor: not-allowed; }

/* ============================================================================
   VZ-4 — WIZARD "Novo roteiro" (Produto → Ajuste → Gerar) na aba Roteiros.
   ============================================================================ */
.rotw { border: 1px solid var(--border-card); border-radius: 18px; background: var(--bg-card); overflow: hidden; animation: fade .2s var(--e); }
.rotw-head { display: flex; align-items: flex-start; gap: 12px; padding: 14px 18px; border-bottom: 1px solid var(--border-neutral); background: var(--bg-alt); }
.rotw-cancel { flex: none; margin-top: 6px; }
/* Trilho de nós conectados (Produto → Ajuste → Gerar) */
.rotw-trilho { display: flex; align-items: stretch; flex: 1; min-width: 0; }
.rotwn { position: relative; flex: 1 1 0; min-width: 0; display: flex; align-items: center; gap: 10px; text-align: left;
  padding: 12px 13px; border: 1px solid var(--border-card); border-radius: 14px; background: var(--bg-card); cursor: pointer;
  overflow: hidden; transition: border-color .15s var(--e), background .15s var(--e), transform .12s var(--e); }
.rotwn:not([disabled]):hover { border-color: var(--accent); transform: translateY(-1px); }
.rotwn[disabled] { cursor: default; opacity: .5; }
.rotwn-accent { position: absolute; top: 0; left: 0; right: 0; height: 3px; background: var(--border-neutral); }
.rotwn-ic { font-size: 20px; line-height: 1; flex: none; filter: grayscale(.5); opacity: .75; }
.rotwn-tx { display: flex; flex-direction: column; min-width: 0; }
.rotwn-tx b { font-size: 13.5px; font-weight: 700; color: var(--text-2); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.rotwn-tx small { font-size: 11px; color: var(--text-3); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.rotwn-dot { flex: none; margin-left: auto; width: 18px; height: 18px; border-radius: 999px; display: inline-flex; align-items: center; justify-content: center;
  font-size: 11px; font-weight: 800; color: var(--text-3); background: var(--bg-raise); border: 1px solid var(--border-neutral); }
.rotwn-link { flex: 0 0 24px; align-self: center; height: 2px; background: var(--border-neutral); }
.rotwn-link.is-done { background: var(--emerald, #10B981); }
/* faixa de cor por nó (ativo/feito) */
.rotwn-prod.is-on .rotwn-accent, .rotwn-prod.is-done .rotwn-accent { background: var(--accent, #8b5cf6); }
.rotwn-ajuste.is-on .rotwn-accent, .rotwn-ajuste.is-done .rotwn-accent { background: var(--cyan, #22d3ee); }
.rotwn-gerar.is-on .rotwn-accent, .rotwn-gerar.is-done .rotwn-accent { background: var(--emerald, #10B981); }
/* nó ativo */
.rotwn.is-on { background: var(--bg-raise); border-color: var(--accent); }
.rotwn.is-on .rotwn-ic { filter: none; opacity: 1; }
.rotwn.is-on .rotwn-tx b { color: var(--text); }
.rotwn.is-on .rotwn-dot { color: #fff; background: var(--accent); border-color: var(--accent); animation: rotwnPulse 1.7s var(--e) infinite; }
/* nó concluído */
.rotwn.is-done .rotwn-ic { filter: none; opacity: .95; }
.rotwn.is-done .rotwn-tx b { color: var(--text); }
.rotwn.is-done .rotwn-dot { color: #fff; background: var(--emerald, #10B981); border-color: var(--emerald, #10B981); }
@keyframes rotwnPulse { 0%,100% { box-shadow: 0 0 0 0 rgba(139,92,246,.5); } 50% { box-shadow: 0 0 0 5px rgba(139,92,246,0); } }
@media (max-width: 720px) {
  .rotw-head { flex-direction: column; }
  .rotw-trilho { flex-wrap: wrap; gap: 8px; }
  .rotwn { flex: 1 1 100%; }
  .rotwn-link { display: none; }
  .rotw-cancel { margin-top: 0; align-self: flex-end; }
}
.rotw-body { padding: 20px 18px 18px; }
.rotw-title { font-family: var(--font-head, inherit); font-size: 17px; font-weight: 700; margin: 0 0 4px; color: var(--text); }
.rotw-lead { font-size: 13px; color: var(--text-2); margin: 0 0 16px; max-width: 62ch; }
.rotw-row { display: flex; align-items: flex-end; gap: 12px; flex-wrap: wrap; margin-bottom: 14px; }
.rotw-sel { flex: 1; min-width: 220px; }
.rotw-grid2 { display: grid; grid-template-columns: repeat(2, 1fr); gap: 14px; margin-bottom: 14px; }
@media (max-width: 720px) { .rotw-grid2 { grid-template-columns: 1fr; } }
.rotw-resumo { border: 1px solid var(--border-card); border-radius: 14px; background: var(--bg-alt); padding: 14px 16px; margin-bottom: 4px; }
.rotw-resumo-nome { font-weight: 700; font-size: 14px; color: var(--text); margin-bottom: 9px; }
.rotw-chips { display: flex; flex-wrap: wrap; gap: 7px; }
.rotw-chip { display: inline-flex; align-items: center; gap: 5px; font-size: 11.5px; font-weight: 600; color: var(--text-2);
  background: var(--bg-card); border: 1px solid var(--border-neutral); border-radius: 999px; padding: 4px 10px; }
.rotw-resumo-meta { font-size: 11.5px; color: var(--text-3); margin-top: 9px; }
.rotw-gerar { display: flex; flex-direction: column; align-items: center; gap: 8px; padding: 18px 0 6px; }
.rotw-cta { font-size: 15px; padding: 12px 26px; }
.rotw-demo { font-size: 11px; color: var(--text-3); }
.rotw-nav { display: flex; justify-content: space-between; gap: 12px; margin-top: 20px; padding-top: 14px; border-top: 1px solid var(--border-neutral); }
.rotw-nav .btn[disabled] { opacity: .5; cursor: not-allowed; }

/* ============================================================================
   MISSÃO 2 — PREÇO DINÂMICO (prodp-). O preço vem do link e é re-checado antes
   da live: selo "puxado do link · há X", oferta detectada e status no card.
   ============================================================================ */
.prodp-preco-status { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-top: 7px; }
.prodp-preco-selo {
  display: inline-flex; align-items: center; font-size: 10.5px; font-weight: 700;
  padding: 2px 8px; border-radius: 99px; letter-spacing: .02em; text-transform: none;
}
.prodp-preco-selo.ok { color: var(--emerald); background: var(--emerald-soft, rgba(16,185,129,.12)); border: 1px solid rgba(16,185,129,.32); }
.prodp-preco-selo.warn { color: var(--warn); background: var(--warn-soft, rgba(245,158,11,.1)); border: 1px solid rgba(245,158,11,.32); }
.prodp-preco-oferta {
  display: inline-flex; align-items: center; font-size: 10.5px; font-weight: 700;
  padding: 2px 8px; border-radius: 99px; color: var(--live);
  background: var(--live-soft, rgba(239,68,68,.1)); border: 1px solid rgba(239,68,68,.32);
}
/* card da galeria: preço + frescor da checagem */
.prodp-card-preco { display: inline-flex; align-items: center; gap: 8px; font-size: 12px; color: var(--text); }
.prodp-card-chk { font-size: 10.5px; font-weight: 700; padding: 1px 7px; border-radius: 99px; }
.prodp-card-chk.ok { color: var(--emerald); background: var(--emerald-soft, rgba(16,185,129,.12)); border: 1px solid rgba(16,185,129,.3); }
.prodp-card-chk.warn { color: var(--warn); background: var(--warn-soft, rgba(245,158,11,.1)); border: 1px solid rgba(245,158,11,.3); }

/* status informativo "💰 Preço checado?" na barra do canvas de Vincular
   (ao lado dos chips — NÃO é gate; validarPlano intacto) */
.fvcanvas-preco {
  display: inline-flex; align-items: center; gap: 7px; flex: 0 0 auto;
  font-size: 11px; font-weight: 700; padding: 4px 10px; border-radius: 99px;
}
.fvcanvas-preco.ok { color: var(--emerald); background: var(--emerald-soft, rgba(16,185,129,.12)); border: 1px solid rgba(16,185,129,.32); }
.fvcanvas-preco.warn { color: var(--warn); background: var(--warn-soft, rgba(245,158,11,.1)); border: 1px solid rgba(245,158,11,.32); }
.fvcanvas-preco-btn {
  border: 1px solid rgba(245,158,11,.45); background: transparent; color: var(--warn);
  font-size: 10.5px; font-weight: 700; padding: 2px 8px; border-radius: 99px;
  cursor: pointer; transition: var(--t); font-family: inherit;
}
.fvcanvas-preco-btn:hover { background: rgba(245,158,11,.14); }
.fvcanvas-preco-btn:disabled { opacity: .55; cursor: default; }

/* ============================================================================
   FP — PRESETS DE LIVE: o hub 🧩, o nó 🧠 do cérebro, o empty-state e a escolha
   de TIPO. O leque muda de forma por tipo (3 folhas no gravado, 4 no de IA); o
   posicionamento vem em % do JS — aqui só a pele e as LARGURAS que a topologia
   assume (hub 250px, folha 220px, cérebro 180px).
   ============================================================================ */
.fvcanvas-fpre { --node-cat: #22D3EE; width: 250px; box-shadow: var(--shadow-pop); }
.fvcanvas-fpre.st-on { --node-cat: var(--emerald); }
.fvcanvas-fpre .fvcanvas-nbody { gap: 8px; }
.fpre-tipo-chip {
  display: inline-flex; align-items: center; gap: 5px; align-self: flex-start;
  font-size: 11px; font-weight: 700; padding: 3px 10px; border-radius: 99px;
  border: 1px solid var(--border-neutral); background: var(--bg-raise); color: var(--text-2);
}
.fpre-tipo-chip.t-ia { color: #22D3EE; border-color: rgba(34,211,238,.4); }
.fpre-tipo-chip.t-gravado { color: #F59E0B; border-color: rgba(245,158,11,.4); }
.fpre-hub-ready { display: flex; align-items: baseline; gap: 6px; color: var(--warn); font-variant-numeric: tabular-nums; }
.fpre-hub-ready.ok { color: var(--emerald); }
.fpre-hub-ready b { font-size: 20px; font-weight: 800; line-height: 1; }
.fpre-hub-ready i { font-size: 9.5px; font-style: normal; color: var(--text-3); font-weight: 600; line-height: 1.2; }
.fpre-hub-tipos { display: flex; gap: 5px; }
.fpre-tipo-bt {
  flex: 1; font-family: inherit; font-size: 10px; font-weight: 700; cursor: pointer;
  padding: 4px 6px; border-radius: 8px; border: 1px solid var(--border-neutral);
  background: transparent; color: var(--text-3); transition: var(--t); white-space: nowrap;
  overflow: hidden; text-overflow: ellipsis;
}
.fpre-tipo-bt:hover { color: var(--text); border-color: var(--text-3); }
.fpre-tipo-bt.on { color: var(--text); border-color: var(--node-cat); background: var(--bg-raise); }
.fpre-hub-sujo { font-size: 10px; font-weight: 700; color: var(--warn); }

/* 🧠 cérebro do roteiro — só existe quando o roteiro TEM mente vinculada */
.fvcanvas-mente { --node-cat: #A78BFA; width: 180px; }
.fvcanvas-mente-tx { font-size: 10.5px; color: var(--text-3); line-height: 1.35; }

/* empty-state: sem nenhum preset a tela vira o convite a criar (com o TIPO) */
.fpre-empty {
  padding: 40px 24px; text-align: center; border: 1px dashed var(--border-neutral);
  border-radius: 20px; background: var(--bg-card);
}
.fpre-empty-ic { font-size: 40px; line-height: 1; }
.fpre-empty h3 { margin: 12px 0 0; font-size: 19px; font-weight: 800; }
.fpre-empty > p { margin: 8px auto 0; max-width: 640px; font-size: 12.5px; color: var(--text-2); line-height: 1.6; }
.fpre-empty-ops { display: flex; gap: 14px; justify-content: center; flex-wrap: wrap; margin-top: 22px; }
.fpre-empty-op {
  display: flex; flex-direction: column; gap: 4px; align-items: flex-start; text-align: left;
  width: 300px; max-width: 100%; padding: 16px; cursor: pointer; font-family: inherit;
  border: 1px solid var(--border-neutral); border-radius: 16px; background: var(--bg-raise);
  transition: var(--t);
}
.fpre-empty-op:hover { border-color: var(--accent); transform: translateY(-2px); }
.fpre-empty-op-ic { font-size: 24px; line-height: 1; }
.fpre-empty-op b { font-size: 14px; font-weight: 800; color: var(--text); }
.fpre-empty-op small { font-size: 11.5px; color: var(--text-3); line-height: 1.45; }
.fpre-empty-op-cta { margin-top: 6px; font-size: 11px; font-weight: 800; color: var(--accent); }
.fpre-empty-nota { margin: 18px 0 0; font-size: 11px; color: var(--text-3); }

/* modal "Novo preset de live" — a escolha do tipo é radio puro (sem estado JS) */
.fpre-tipo-pick { display: flex; flex-direction: column; gap: 8px; margin-top: 12px; }
.fpre-tipo-op {
  display: grid; grid-template-columns: auto 1fr; grid-template-rows: auto auto;
  gap: 2px 10px; align-items: center; padding: 10px 12px; cursor: pointer;
  border: 1px solid var(--border-neutral); border-radius: 12px; background: var(--bg-raise);
  transition: var(--t);
}
.fpre-tipo-op:has(input:checked) { border-color: var(--accent); background: var(--bg-card); }
.fpre-tipo-op input { grid-row: 1 / span 2; grid-column: 1; margin: 0; accent-color: var(--accent); }
.fpre-tipo-ic { display: none; }
.fpre-tipo-op b { grid-column: 2; font-size: 13px; font-weight: 800; color: var(--text); }
.fpre-tipo-op small { grid-column: 2; font-size: 11px; color: var(--text-3); line-height: 1.4; }

@media (max-width: 768px) {
  .fpre-empty-op { width: 100%; }
}

/* ============================================================================
   GURUDEFENSE — tela (3 zonas: saúde da frota · perfis & detecção · violação).
   Cores dos selos: ok=emerald · warn=âmbar · review=violeta · live=vermelho.
   ============================================================================ */
.gd-zone { margin-top: 18px; }
.gd-zone-head { display: flex; align-items: baseline; gap: 10px; margin-bottom: 10px; }
.gd-zone-t { font-size: 15px; font-weight: 800; margin: 0; }
.gd-zone-tag { font-size: 10.5px; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; color: var(--text-3); }
.gd-note { font-size: 11.5px; color: var(--text-3); margin: 10px 0 0; line-height: 1.5; }
.gd-note.sm { font-size: 10.5px; margin-top: 8px; }

/* Zona 1 — saúde da frota */
.gd-frota-tiles { display: grid; grid-template-columns: repeat(6, 1fr); gap: 10px; }
.gd-frota-tile {
  display: flex; flex-direction: column; align-items: center; gap: 3px;
  padding: 14px 8px; border-radius: 14px; border: 1px solid var(--border-neutral);
  background: var(--bg-card); border-top: 3px solid var(--text-3);
}
.gd-frota-tile.ok { border-top-color: var(--emerald); }
.gd-frota-tile.warn { border-top-color: var(--warn); }
.gd-frota-tile.review { border-top-color: #8B5CF6; }
.gd-frota-tile.live { border-top-color: var(--live); }
.gd-frota-tile.esc { border-top-color: var(--emerald); }
/* 6º tile: PIOR score da frota. Herda a cor da faixa (ok/warn/high/live) — nunca
   violeta, que é reservado ao estado "sob revisão". */
.gd-frota-tile.saude { border-top-color: var(--text-3); }
.gd-frota-tile.saude.ok { border-top-color: var(--emerald); }
.gd-frota-tile.saude.warn { border-top-color: var(--warn); }
.gd-frota-tile.saude.high { border-top-color: #F97316; }
.gd-frota-tile.saude.live { border-top-color: var(--live); }
.gd-frota-ic { font-size: 17px; line-height: 1; }
.gd-frota-n { font-size: 24px; font-weight: 800; line-height: 1; font-variant-numeric: tabular-nums; }
.gd-frota-n small { font-size: 12px; font-weight: 700; color: var(--text-3); }
.gd-frota-l { font-size: 10.5px; font-weight: 700; color: var(--text-3); text-align: center; }

/* Chip de pontuação no cabeçalho do card — o número é a coisa mais legível da
   linha (tabular-nums + peso 800, como .gd-frota-n). Cores por FAIXA do score,
   nunca por estado do escudo: são eixos diferentes. */
.gd-score {
  font-size: 11px; font-weight: 700; padding: 4px 10px; border-radius: 99px;
  border: 1px solid var(--border-neutral); white-space: nowrap; flex: none;
  font-variant-numeric: tabular-nums; color: var(--text-2);
}
.gd-score b { font-size: 13px; font-weight: 800; }
.gd-score small { font-size: 10px; color: var(--text-3); }
.gd-score.ok { color: var(--emerald); border-color: rgba(16,185,129,.32); background: rgba(16,185,129,.1); }
.gd-score.warn { color: var(--warn); border-color: rgba(245,158,11,.32); background: rgba(245,158,11,.1); }
.gd-score.high { color: #F97316; border-color: rgba(249,115,22,.35); background: rgba(249,115,22,.1); }
.gd-score.live { color: var(--live); border-color: rgba(239,68,68,.35); background: rgba(239,68,68,.1); }

/* Bloco de saúde no corpo do card — barra 0–100 com marcas nos cortes das faixas
   (85/60/30). Geometria copiada de .qi-gauge, mas classes próprias: .qi-* está
   calibrado pra escala 0–1000 do TikTok e carrega a marca "Padrão". */
.gd-saude { margin-top: 12px; padding: 14px; border-radius: 12px; border: 1px solid var(--border-neutral); background: var(--bg-raise); }
.gd-saude-head { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-bottom: 6px; }
.gd-saude-head b { font-size: 12.5px; }
.gd-saude-faixa { font-size: 11px; font-weight: 800; padding: 3px 10px; border-radius: 99px; font-variant-numeric: tabular-nums; }
.gd-saude-faixa.ok { color: var(--emerald); background: rgba(16,185,129,.14); }
.gd-saude-faixa.warn { color: var(--warn); background: rgba(245,158,11,.14); }
.gd-saude-faixa.high { color: #F97316; background: rgba(249,115,22,.14); }
.gd-saude-faixa.live { color: var(--live); background: rgba(239,68,68,.14); }
.gd-saude-gauge { position: relative; height: 8px; border-radius: 999px; background: rgba(148,163,184,.16); margin: 32px 0 8px; }
.gd-saude-fill { position: absolute; left: 0; top: 0; height: 100%; border-radius: 999px; background: var(--emerald); }
.gd-saude-fill.warn { background: var(--warn); }
.gd-saude-fill.high { background: #F97316; }
.gd-saude-fill.live { background: var(--live); }
.gd-saude-bubble {
  position: absolute; top: -25px; transform: translateX(-50%); background: var(--bg-card);
  border: 1px solid var(--border-neutral); border-radius: 8px; padding: 1px 8px;
  font-family: var(--font-head); font-weight: 800; font-size: 12px; color: var(--text-1);
  font-variant-numeric: tabular-nums;
}
.gd-saude-mark { position: absolute; top: -7px; transform: translateX(-50%); text-align: center; }
.gd-saude-mark i { display: block; width: 2px; height: 22px; background: rgba(148,163,184,.55); margin: 0 auto; }
.gd-saude-mark b { font-size: 9px; color: var(--text-3); font-weight: 600; font-variant-numeric: tabular-nums; }
.gd-saude-scale { display: flex; justify-content: space-between; font-size: 10.5px; color: var(--text-3); }
.gd-saude-motivos { margin-top: 12px; }
.gd-saude-motivos ul { margin: 0; padding-left: 18px; }
.gd-saude-motivos li { font-size: 12px; line-height: 1.6; color: var(--text-1); }
.gd-saude-pol { margin-top: 12px; font-size: 11.5px; line-height: 1.55; color: var(--text-2); background: var(--bg-card); border: 1px solid var(--border-neutral); border-radius: 9px; padding: 9px 12px; }
.gd-saude-pol b { color: var(--text-1); }
.gd-saude-pol small { color: var(--text-3); }

/* Aplicar veredito (Zona 3) — o botão que faz a promessa do diagnóstico virar
   consequência de verdade dentro do protótipo. */
.gd-diag-aplicar { margin-top: 12px; padding-top: 12px; border-top: 1px dashed var(--border-neutral); display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.gd-diag-aplicar-x { font-size: 11px; color: var(--text-3); }
.gd-diag-aplicar-x b { color: var(--text-2); }
.gd-diag-aplicar > .gd-note { flex-basis: 100%; margin-top: 0; }

/* Zona 2 — lista de perfis + config */
.gd-lista { display: flex; flex-direction: column; gap: 10px; }
.gd-card { border: 1px solid var(--border-neutral); border-radius: 14px; background: var(--bg-card); overflow: hidden; border-left: 3px solid var(--text-3); }
.gd-card.st-ok { border-left-color: var(--emerald); }
.gd-card.st-warn { border-left-color: var(--warn); }
.gd-card.st-review { border-left-color: #8B5CF6; }
.gd-card.st-live { border-left-color: var(--live); }
.gd-card.open { box-shadow: var(--shadow-card); }
.gd-card-head { display: flex; align-items: center; gap: 12px; padding: 12px 14px; cursor: pointer; }
.gd-card-head:hover { background: var(--bg-raise); }
.gd-av { width: 34px; height: 34px; border-radius: 10px; display: grid; place-items: center; color: #fff; font-weight: 800; flex: none; }
.gd-id { min-width: 0; }
.gd-name { font-size: 13px; font-weight: 700; line-height: 1.15; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.gd-handle { font-size: 11px; color: var(--text-3); }
.gd-selo { font-size: 11px; font-weight: 700; padding: 4px 10px; border-radius: 99px; border: 1px solid var(--border-neutral); white-space: nowrap; }
.gd-selo.ok { color: var(--emerald); border-color: rgba(16,185,129,.32); background: rgba(16,185,129,.1); }
.gd-selo.warn { color: var(--warn); border-color: rgba(245,158,11,.32); background: rgba(245,158,11,.1); }
.gd-selo.review { color: #8B5CF6; border-color: rgba(139,92,246,.35); background: rgba(139,92,246,.1); }
.gd-selo.live { color: var(--live); border-color: rgba(239,68,68,.35); background: rgba(239,68,68,.1); }
.gd-vios { margin-left: auto; font-size: 11px; color: var(--text-3); background: transparent; border: 0; cursor: pointer; font-family: inherit; text-decoration: underline dotted; text-underline-offset: 3px; }
.gd-vios.has { color: var(--warn); font-weight: 700; }
.gd-escudo { display: inline-flex; align-items: center; gap: 6px; font-size: 11px; font-weight: 700; color: var(--text-2); cursor: pointer; flex: none; }
.gd-escudo input { accent-color: var(--emerald); width: 15px; height: 15px; }
.gd-caret { font-size: 12px; color: var(--text-3); flex: none; }
.gd-card-body { padding: 0 14px 14px; border-top: 1px solid var(--border-neutral); }
.gd-cfg { padding-top: 12px; }
.gd-cfg-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 10px; }
.gd-cfg-head b { font-size: 12.5px; }
.gd-herda { display: inline-flex; align-items: center; gap: 6px; font-size: 11px; font-weight: 600; color: var(--text-2); cursor: pointer; }
.gd-herda input { accent-color: var(--accent, #8B5CF6); }
.gd-cfg-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.gd-cfg-grid.locked { opacity: .6; }
.gd-field { display: flex; flex-direction: column; gap: 5px; }
.gd-field > span { font-size: 11px; font-weight: 600; color: var(--text-2); }
.gd-field input[type=number], .gd-field textarea {
  width: 100%; padding: 8px 10px; border-radius: 9px; border: 1px solid var(--border-neutral);
  background: var(--bg-raise); color: var(--text-1); font-family: inherit; font-size: 12.5px;
}
.gd-field textarea { min-height: 66px; resize: vertical; }
.gd-field-tog { flex-direction: row; align-items: center; justify-content: space-between; }
.gd-field-full { grid-column: 1 / -1; }
.gd-review { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: 12px; padding: 12px 14px; border-radius: 12px; border: 1px solid var(--border-neutral); }
.gd-review.review { background: rgba(139,92,246,.08); border-color: rgba(139,92,246,.3); }
.gd-review.live { background: rgba(239,68,68,.08); border-color: rgba(239,68,68,.3); }
.gd-review-tx b { display: block; font-size: 12.5px; }
.gd-review-tx small { display: block; font-size: 11px; color: var(--text-3); }
.gd-quality { margin-top: 12px; }
.gd-quality > summary { cursor: pointer; font-size: 12px; font-weight: 700; color: var(--text-2); padding: 8px 0; }

/* Zona 3 — inteligência de violação */
.gd-intel-in { display: flex; flex-direction: column; gap: 10px; }
.gd-aviso {
  width: 100%; min-height: 92px; resize: vertical; padding: 12px 14px; border-radius: 12px;
  border: 1px solid var(--border-neutral); background: var(--bg-raise); color: var(--text-1);
  font-family: inherit; font-size: 13px; line-height: 1.5;
}
.gd-intel-actions { display: flex; gap: 10px; }
.gd-intel-out { margin-top: 14px; }
.gd-intel-empty { font-size: 12.5px; color: var(--text-3); line-height: 1.6; padding: 16px; border: 1px dashed var(--border-neutral); border-radius: 12px; }
.gd-diag { border: 1px solid var(--border-neutral); border-radius: 14px; background: var(--bg-card); padding: 16px; }
.gd-diag-top { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.gd-diag-sev { font-size: 10.5px; font-weight: 800; text-transform: uppercase; letter-spacing: .04em; padding: 3px 9px; border-radius: 99px; }
.gd-diag-sev.warn { color: var(--warn); background: rgba(245,158,11,.14); }
.gd-diag-sev.high { color: #F97316; background: rgba(249,115,22,.14); }
.gd-diag-sev.live { color: var(--live); background: rgba(239,68,68,.14); }
.gd-diag-causa { font-size: 14px; font-weight: 800; }
.gd-diag-demo { font-size: 9.5px; font-weight: 800; letter-spacing: .05em; color: var(--text-3); border: 1px solid var(--border-neutral); border-radius: 99px; padding: 2px 8px; }
.gd-diag-evid { margin-top: 12px; font-size: 13px; font-style: italic; color: var(--text-1); background: var(--bg-raise); border-left: 3px solid var(--warn); border-radius: 0 8px 8px 0; padding: 10px 12px; }
.gd-diag-evid-l { display: block; font-style: normal; font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; color: var(--text-3); margin-bottom: 4px; }
.gd-diag-acoes { margin-top: 14px; }
.gd-diag-acoes-l { display: block; font-size: 10.5px; font-weight: 800; text-transform: uppercase; letter-spacing: .05em; color: var(--text-3); margin-bottom: 6px; }
.gd-diag-acoes ul { margin: 0; padding-left: 18px; }
.gd-diag-acoes li { font-size: 12.5px; line-height: 1.6; color: var(--text-1); }
.gd-diag-disc { margin-top: 14px; font-size: 11.5px; color: var(--warn); line-height: 1.5; background: rgba(245,158,11,.08); border-radius: 8px; padding: 9px 12px; }
.gd-diag-disc.lei { color: var(--text-2); background: var(--bg-raise); margin-top: 8px; }
.gd-vios-empty { font-size: 12px; color: var(--emerald); padding: 8px 0; }

@media (max-width: 720px) {
  .gd-frota-tiles { grid-template-columns: repeat(2, 1fr); }
  .gd-cfg-grid { grid-template-columns: 1fr; }
  .gd-card-head { flex-wrap: wrap; }
  /* order explícito: sem isso o chip de score cai em posição imprevisível quando
     o cabeçalho quebra em linhas. */
  .gd-score { order: 4; }
  .gd-vios { margin-left: 0; flex-basis: 100%; order: 5; }
}

/* ============================================================================
   MISSÃO 3 — ESTEIRA / SIMULAR EM TELA QUASE CHEIA (estilo Weave).
   .estfull no #roteirosView quando um roteiro está aberto (ou aba Simular): o
   pane vai da borda logo abaixo da topbar (56px) até o rodapé (28px) na largura
   útil toda (sidebar continua). Mobile (≤720px) mantém o fluxo normal.
   (#vozView mantido por compat; hoje a esteira/simular vivem em #roteirosView.)
   ============================================================================ */
.vz-sim-head { display: none; } /* barra compacta do Simular — só no modo estfull */
/* Editor de preset de reação: sem cabeçalho externo — o "voltar aos presets"
   mora na barra do Estúdio de Pipeline (iframe); o canvas ocupa toda a altura. */
@media (min-width: 721px) {
  /* preset de reação aberto = canvas ocupa a área útil inteira (como a esteira) */
  #interacaoView.estfull {
    display: flex; flex-direction: column; overflow: hidden;
    margin: -30px -34px -40px;
    height: calc(100vh - 56px - 28px);
    padding: 12px 16px 14px;
  }
  #interacaoView.estfull > .vz-honest { display: none; }   /* a nota cede espaço ao canvas */
  #interacaoView.estfull > .aump-canvas-host { flex: 1; min-height: 0; height: auto; }
  #interacaoView.estfull > .aump-canvas-host iframe { width: 100%; height: 100%; display: block; border: 0; }
  #vozView.estfull,
  #roteirosView.estfull {
    display: flex; flex-direction: column; overflow: hidden;
    margin: -30px -34px -40px;               /* anula o padding do .content */
    height: calc(100vh - 56px - 28px);       /* topbar 56 + bottombar 28 */
  }
  #vozView.estfull > .page-head-row,
  #vozView.estfull > .vz-main-subtabs,
  #roteirosView.estfull > .page-head-row,
  #roteirosView.estfull > .vz-main-subtabs { display: none; } /* head vira a barra compacta */
  #vozView.estfull > .vz-main-body,
  #roteirosView.estfull > .vz-main-body {
    flex: 1; min-height: 0; display: flex; flex-direction: column;
    padding: 12px 16px 14px;
  }
  #vozView.estfull .vz-rot-head,
  #roteirosView.estfull .vz-rot-head { margin-bottom: 10px; flex-wrap: nowrap; }
  #vozView.estfull .estp-intro,
  #roteirosView.estfull .estp-intro { display: none; } /* nota intro cede espaço ao canvas */
  #vozView.estfull .vz-sim-head,
  #roteirosView.estfull .vz-sim-head { display: flex; }
  #vozView.estfull .vz-rot-frames,
  #vozView.estfull .vz-sim-frames,
  #roteirosView.estfull .vz-rot-frames,
  #roteirosView.estfull .vz-sim-frames { flex: 1; min-height: 0; margin-top: 0; }
  #vozView.estfull .funil-frame,
  #roteirosView.estfull .funil-frame { height: 100%; min-height: 0; }
}

/* ============================================================================
   MISSÃO 4 — SIDEBAR EM RAIL nas telas de "Montar a live" (desktop >1080px).
   #app.side-rail: coluna cai pra 64px (só ícones, ~200ms); no hover a sidebar
   EXPANDE POR CIMA do conteúdo (overlay — a coluna continua 64px, o item da
   grid só transborda) e recolhe ao sair. ≤1080px vale o rail estático de
   sempre; mobile intocado.
   ============================================================================ */
@media (min-width: 1081px) {
  #app { transition: grid-template-columns .2s var(--e); }
  #app.side-rail { grid-template-columns: 64px 1fr; }
  /* no hover a sidebar EMPURRA a estrutura (a coluna volta a 244px) — não cobre o conteúdo */
  #app.side-rail:has(.sidebar:hover) { grid-template-columns: 244px 1fr; }
  #app.side-rail .sidebar {
    width: 64px; z-index: 80; position: relative;
    transition: width .2s var(--e), box-shadow .2s var(--e);
    overflow-x: hidden;
  }
  #app.side-rail .sidebar:not(:hover) .side-item { justify-content: center; padding-left: 0; padding-right: 0; }
  #app.side-rail .sidebar:not(:hover) .side-item .txt,
  #app.side-rail .sidebar:not(:hover) .side-item .side-badge,
  #app.side-rail .sidebar:not(:hover) .side-item .owner-lock,
  #app.side-rail .sidebar:not(:hover) .side-foot small { display: none; }
  #app.side-rail .sidebar:not(:hover) .side-group { visibility: hidden; height: 12px; padding-top: 6px; padding-bottom: 0; overflow: hidden; }
  #app.side-rail .sidebar:not(:hover) .side-item .live-dot { position: absolute; top: 6px; right: 8px; margin-left: 0; }
  #app.side-rail .sidebar:not(:hover) .side-item.active::before { left: 0; }
  #app.side-rail .sidebar:hover {
    width: 244px;
    background: linear-gradient(180deg, rgba(15,16,23,.97), rgba(8,9,15,.99));
    backdrop-filter: blur(18px);
    box-shadow: 26px 0 60px -22px rgba(0,0,0,.78);
  }
}

/* ==========================================================================
   VZ-5 — "Aprender de uma live que vende" (upl-) + cinto do form (prodp-count)
   ========================================================================== */
/* contador discreto dos textarea grandes */
.prodp-count { align-self: flex-end; font-size: 10.5px; color: var(--text-3); margin-top: 3px; font-variant-numeric: tabular-nums; }

/* card de entrada no Passo 2 do wizard */
.upl-card { display: flex; align-items: center; gap: 14px; width: 100%; text-align: left; cursor: pointer;
  margin: 14px 0 4px; padding: 14px 16px; border: 1px dashed var(--border-card); border-radius: 14px;
  background: var(--bg-alt); color: var(--text); transition: var(--t); font: inherit; }
.upl-card:hover { border-color: var(--accent); background: var(--accent-soft); }
.upl-card-ic { font-size: 22px; }
.upl-card-tx { flex: 1; display: flex; flex-direction: column; gap: 3px; }
.upl-card-tx > small { font-size: 12px; color: var(--text-2); font-weight: 500; }
.upl-opt { font-size: 11px; color: var(--text-3); font-weight: 600; }
.upl-card-go { font-size: 12.5px; font-weight: 700; color: var(--accent); white-space: nowrap; }

/* selo "estilo aplicado" (Passo 2/3) */
.upl-aplicado { display: flex; align-items: flex-start; gap: 10px; margin: 12px 0; padding: 12px 14px;
  border: 1px solid rgba(139, 92, 246, .4); border-radius: 12px; background: var(--accent-soft);
  font-size: 12.5px; color: var(--text-2); }
.upl-aplicado > div { flex: 1; }
.upl-aplicado b { color: var(--text); }
.upl-aplicado-ic { font-size: 18px; }

/* badge DEMONSTRAÇÃO (permanente no fluxo) */
.upl-demo-tag { display: inline-flex; align-items: center; font-size: 9.5px; font-weight: 800; letter-spacing: .08em;
  color: var(--gold); border: 1px solid var(--gold-2); border-radius: 6px; padding: 2px 7px; background: var(--gold-soft);
  vertical-align: middle; white-space: nowrap; }
.upl-head { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-bottom: 4px; }
.upl-head .rotw-title { margin: 0; }

/* etapas (consentimento + upload) */
.upl-etapa { border: 1px solid var(--border-card); border-radius: 14px; background: var(--bg-alt);
  padding: 14px 16px; margin-bottom: 12px; }
.upl-etapa-t { display: block; font-size: 10.5px; font-weight: 800; letter-spacing: .05em; text-transform: uppercase;
  color: var(--text-3); margin-bottom: 10px; }
.upl-consent { display: flex; align-items: flex-start; gap: 9px; font-size: 13px; color: var(--text-2);
  cursor: pointer; line-height: 1.4; }
.upl-consent input { margin-top: 2px; accent-color: var(--accent); }
.upl-consent.ok { color: var(--text); }
.upl-termos { display: inline-block; margin: 8px 0 0 27px; font-size: 11.5px; color: var(--accent); text-decoration: underline; }
.upl-demo-note { margin-top: 10px; font-size: 11px; color: var(--text-3); }

/* dropzone (fail-closed: travada sem consentimento) */
.upl-drop { display: flex; flex-direction: column; align-items: center; gap: 4px; padding: 26px 16px;
  border: 2px dashed var(--border-card); border-radius: 14px; cursor: pointer; text-align: center;
  color: var(--text); transition: var(--t); }
.upl-drop small { color: var(--text-3); font-size: 11.5px; }
.upl-drop-ic { font-size: 26px; }
.upl-drop:not(.locked):hover, .upl-drop.drag { border-color: var(--accent); background: var(--accent-soft); }
.upl-drop.locked { opacity: .55; cursor: not-allowed; }
.upl-arquivo { display: flex; align-items: center; gap: 12px; padding: 12px 14px;
  border: 1px solid var(--border-card); border-radius: 12px; background: var(--bg-card); }
.upl-arquivo > div { flex: 1; min-width: 0; }
.upl-arquivo b { display: block; font-size: 13px; color: var(--text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.upl-arquivo small { font-size: 11px; color: var(--text-3); }
.upl-arquivo-ic { font-size: 20px; }
.upl-arquivo-mini { font-size: 12px; color: var(--text-2); margin-bottom: 12px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* análise encenada */
.upl-analise { padding: 6px 2px 2px; }
.upl-fases { display: flex; flex-direction: column; gap: 10px; margin-bottom: 16px; }
.upl-fase { display: flex; align-items: center; gap: 11px; opacity: .45; transition: var(--t); }
.upl-fase.on, .upl-fase.done { opacity: 1; }
.upl-fase b { display: block; font-size: 13px; color: var(--text); }
.upl-fase small { font-size: 11.5px; color: var(--text-3); }
.upl-fase-n { width: 24px; height: 24px; flex: none; border-radius: 999px; display: inline-flex; align-items: center;
  justify-content: center; font-size: 11.5px; font-weight: 700; border: 1px solid var(--border-neutral); color: var(--text-2); }
.upl-fase.on .upl-fase-n { background: var(--accent); border-color: var(--accent); color: #fff; }
.upl-fase.done .upl-fase-n { background: var(--emerald, #10B981); border-color: var(--emerald, #10B981); color: #fff; }
.upl-bar { height: 7px; border-radius: 999px; background: var(--bg-alt); border: 1px solid var(--border-neutral); overflow: hidden; }
.upl-bar-fill { display: block; height: 100%; border-radius: 999px; background: linear-gradient(90deg, var(--accent-dark), var(--accent)); transition: width .55s ease; }
.upl-bar-pct { margin-top: 6px; font-size: 11px; color: var(--text-3); text-align: right; }

/* resultado: regra dura + cards de estratégia (evidence-bound) */
.upl-res-head { font-size: 14px; color: var(--text-2); margin-bottom: 10px; }
.upl-res-head b { color: var(--text); }
.upl-regra { padding: 10px 13px; border: 1px solid var(--gold-2); border-radius: 12px; background: var(--gold-soft);
  font-size: 12px; color: var(--text-2); margin-bottom: 14px; }
.upl-regra b { color: var(--text); }
.upl-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 11px; margin-bottom: 6px; }
.upl-estg { border: 1px solid var(--border-card); border-radius: 13px; background: var(--bg-alt); padding: 12px 14px;
  opacity: .55; transition: var(--t); }
.upl-estg.on { opacity: 1; border-color: rgba(139, 92, 246, .45); }
.upl-estg-top { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 8px; }
.upl-estg-ts { font-size: 11px; font-weight: 700; color: var(--accent); border: 1px solid rgba(139, 92, 246, .4);
  border-radius: 6px; padding: 1px 6px; background: var(--accent-soft); }
.upl-estg-cat { font-size: 11px; font-weight: 700; color: var(--text-2); }
.upl-estg-bloco { font-size: 11px; color: var(--text-3); }
.upl-estg-trecho { font-size: 13px; font-style: italic; color: var(--text); margin-bottom: 5px; }
.upl-estg-desc { font-size: 12px; color: var(--text-2); line-height: 1.4; }

/* toggle aplicar/ignorar */
.upl-sw { position: relative; margin-left: auto; cursor: pointer; flex: none; }
.upl-sw input { position: absolute; inset: 0; opacity: 0; cursor: pointer; margin: 0; }
.upl-sw span { position: relative; display: block; width: 34px; height: 19px; border-radius: 999px;
  background: var(--bg-card); border: 1px solid var(--border-neutral); transition: var(--t); }
.upl-sw span::after { content: ""; position: absolute; top: 2px; left: 3px; width: 13px; height: 13px;
  border-radius: 999px; background: var(--text-3); transition: var(--t); }
.upl-sw input:checked + span { background: var(--accent-soft); border-color: var(--accent); }
.upl-sw input:checked + span::after { left: 16px; background: var(--accent); }

/* === Logo oficial LiveGuru (detetive roxo) — asset embutido === */
:root{--lg-logo:url("assets/liveguru-logo-256.png")}

/* ==========================================================================
   GURU INTELLIGENCE (intp- / idst- / mente-) — G1..G3. Reaproveita .estp-card,
   .upl-*, .rotw-chip, .vz-honest, .vz-field. Só o específico da aba mora aqui.
   ========================================================================== */
.intp-card-demo { position: absolute; top: 8px; right: 8px; font-size: 9px; font-weight: 800; letter-spacing: .06em;
  padding: 2px 7px; border-radius: 999px; background: rgba(139, 92, 246, .22); color: var(--text);
  border: 1px solid rgba(139, 92, 246, .5); }
.estp-card-vis { position: relative; }

/* -- Detalhe: "resumo de uma mente" -- */
.intp-det { display: flex; flex-direction: column; gap: 14px; }
.intp-det-head { display: flex; align-items: center; gap: 10px; }
.intp-det-nome { flex: 1; font-size: 15px; color: var(--text); }
.intp-det-chips { margin: 0; }
.intp-cols { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 12px; }
.intp-lista { border: 1px solid var(--border-card); border-radius: 13px; background: var(--bg-alt); padding: 12px 14px; }
.intp-lista-t { font-size: 12.5px; font-weight: 700; color: var(--text); margin: 0 0 8px; }
.intp-lista ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 6px; }
.intp-lista li { font-size: 12.5px; color: var(--text-2); line-height: 1.4; }
.intp-lista-vazia { color: var(--text-3); font-style: italic; }
.intp-objs .intp-obj { display: flex; flex-direction: column; gap: 2px; }
.intp-obj b { color: var(--text); font-size: 12.5px; }
.intp-obj span { color: var(--text-2); font-size: 12px; }
.intp-evids-t { font-size: 13px; font-weight: 700; color: var(--text); margin: 4px 0 2px; }
.intp-evids-t small { color: var(--text-3); font-weight: 600; }
.intp-evids { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 11px; }
.intp-evid { border: 1px solid var(--border-card); border-radius: 13px; background: var(--bg-alt); padding: 12px 14px; }
.intp-evid-top { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 8px; }
.intp-evid-ts { font-size: 11px; font-weight: 700; color: var(--accent); border: 1px solid rgba(139, 92, 246, .4);
  border-radius: 6px; padding: 1px 6px; background: var(--accent-soft); }
.intp-evid-cat { font-size: 11px; font-weight: 700; color: var(--text-2); }
.intp-evid-bloco { font-size: 11px; color: var(--text-3); margin-left: auto; }
.intp-evid-trecho { font-size: 13px; font-style: italic; color: var(--text); margin-bottom: 5px; }
.intp-evid-desc { font-size: 12px; color: var(--text-2); line-height: 1.4; }
.intp-det-cta { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin-top: 4px; }
.intp-det-cta-note { font-size: 11.5px; color: var(--text-3); }
.intp-nome-field { margin-bottom: 12px; }

/* -- Destilar: escolha de origem (vídeo/áudio) -- */
.idst-origs { display: flex; gap: 8px; margin-bottom: 10px; }
.idst-orig { display: inline-flex; align-items: center; gap: 6px; cursor: pointer; padding: 7px 13px; border-radius: 999px;
  border: 1px solid var(--border-neutral); background: var(--bg-card); font-size: 12.5px; font-weight: 600; color: var(--text-2);
  transition: var(--t); }
.idst-orig input { position: absolute; opacity: 0; width: 0; height: 0; }
.idst-orig.on { border-color: var(--accent); background: var(--accent-soft); color: var(--text); }
.idst-orig-ic { font-size: 15px; }

/* -- Envelope v2: stepper do wizard, produto vinculado, fontes, documento -- */
.idst-steps { display: flex; align-items: center; gap: 7px; flex-wrap: wrap; margin-bottom: 14px; }
.idst-step { display: inline-flex; align-items: center; gap: 6px; font-size: 11.5px; font-weight: 700; color: var(--text-3);
  border: 1px solid var(--border-soft); border-radius: 999px; padding: 4px 11px 4px 5px; background: var(--bg-card); }
.idst-step i { font-style: normal; width: 18px; height: 18px; display: inline-flex; align-items: center; justify-content: center;
  border-radius: 50%; background: var(--bg-raise); font-size: 10.5px; }
.idst-step.on { border-color: var(--accent); color: var(--text); background: var(--accent-soft); }
.idst-step.on i { background: var(--accent); color: #fff; }
.idst-step.done { color: var(--emerald); border-color: rgba(16, 185, 129, .35); }
.idst-step.done i { background: rgba(16, 185, 129, .18); color: var(--emerald); }
.idst-step-sep { color: var(--text-3); font-size: 11px; }

.intp-chip-warn { border-color: rgba(245, 158, 11, .55) !important; color: var(--warn) !important; }
.intp-prod-row { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.intp-prod-sel { max-width: 280px; }
.intp-prod-chip { display: inline-flex; align-items: center; gap: 7px; cursor: pointer; font-size: 12.5px; color: var(--text);
  border: 1px solid var(--border-card); background: var(--bg-alt); border-radius: 999px; padding: 7px 14px; transition: var(--t); }
.intp-prod-chip:hover { border-color: var(--accent); background: var(--accent-soft); }

.intp-fontes { display: flex; flex-direction: column; gap: 8px; margin-bottom: 8px; }
.intp-fonte { display: flex; align-items: center; gap: 10px; border: 1px solid var(--border-soft); background: var(--bg-card);
  border-radius: 11px; padding: 8px 12px; }
.intp-fonte-ic { font-size: 16px; }
.intp-fonte-info { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 1px; }
.intp-fonte-info b { font-size: 12.5px; color: var(--text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.intp-fonte-info small { font-size: 11px; color: var(--text-3); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.intp-fonte-st { font-size: 10px; font-weight: 800; letter-spacing: .04em; padding: 2px 8px; border-radius: 999px;
  border: 1px solid var(--border-neutral); color: var(--text-3); white-space: nowrap; }
.intp-fonte-st.ok { border-color: rgba(16, 185, 129, .45); color: var(--emerald); background: rgba(16, 185, 129, .1); }
.intp-fonte-st.run { border-color: rgba(139, 92, 246, .45); color: var(--accent); background: var(--accent-soft); }
.intp-fa { display: flex; flex-direction: column; gap: 10px; margin-top: 10px; }

.intdoc-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 12px; }
.intdoc-sec-n { color: var(--text-3); font-weight: 600; }
.intdoc-ent { border: 1px solid var(--border-soft); border-radius: 10px; background: var(--bg-card); padding: 8px 10px;
  display: flex; flex-direction: column; gap: 4px; }
.intdoc-ent.aceita { border-color: rgba(16, 185, 129, .45); }
.intdoc-ent-top { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.intdoc-selo { font-size: 9px; font-weight: 800; letter-spacing: .06em; padding: 1.5px 7px; border-radius: 999px; text-transform: uppercase; }
.intdoc-selo.ia { background: var(--accent-soft); color: var(--accent); border: 1px solid rgba(139, 92, 246, .45); }
.intdoc-selo.dono { background: rgba(16, 185, 129, .12); color: var(--emerald); border: 1px solid rgba(16, 185, 129, .4); }
.intdoc-evid { display: inline-flex; align-items: center; gap: 5px; min-width: 0; }
.intdoc-evid-tr { font-style: italic; font-size: 11px; color: var(--text-3); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 180px; }
.intdoc-ent-acts { margin-left: auto; display: flex; gap: 4px; }
.intdoc-act { border: 1px solid var(--border-neutral); background: var(--bg-raise); color: var(--text-2); border-radius: 7px;
  font-size: 10.5px; font-weight: 700; padding: 2px 7px; cursor: pointer; transition: var(--t); white-space: nowrap; }
.intdoc-act:hover { border-color: var(--accent); color: var(--text); }
.intdoc-act.on { border-color: rgba(16, 185, 129, .55); color: var(--emerald); background: rgba(16, 185, 129, .1); }
.intdoc-ent-txt { font-size: 12.5px; color: var(--text); line-height: 1.45; overflow-wrap: anywhere; }
.intdoc-add { margin-top: 8px; border: 1px dashed var(--border-neutral); background: transparent; color: var(--text-3);
  border-radius: 9px; font-size: 11.5px; font-weight: 700; padding: 6px 10px; cursor: pointer; transition: var(--t); align-self: flex-start; }
.intdoc-add:hover { border-color: var(--accent); color: var(--text); }
.intdoc-add-row { display: flex; align-items: center; gap: 6px; margin-top: 8px; flex-wrap: wrap; }
.intdoc-input { flex: 1; min-width: 160px; padding: 7px 10px; font-size: 12.5px; }

/* -- G3: seletor de mente no wizard de Roteiros -- */
.mente-sel { border: 1px solid var(--border-card); border-radius: 14px; background: var(--bg-alt); padding: 14px 15px; margin: 12px 0; }
.mente-sel-head { display: flex; align-items: flex-start; gap: 10px; margin-bottom: 10px; }
.mente-sel-ic { font-size: 18px; }
.mente-sel-head b { color: var(--text); }
.mente-sel-head small { display: block; color: var(--text-2); font-size: 12px; line-height: 1.4; margin-top: 2px; }
.mente-sel-row { display: flex; align-items: flex-end; gap: 10px; flex-wrap: wrap; }
.mente-sel-field { flex: 1; min-width: 220px; margin: 0; }

/* ==========================================================================
   FUNIL — tela única "Vincular & rodar" (a sub-aba Funil-presets foi removida;
   a Rotação 24h vive em Automação › Live). Telas G7-G9.
   ========================================================================== */
.funil-tabbody { margin-top: 14px; }
.funil-pane { display: block; }

/* toolbar da tela Vincular (aplicar/renomear/excluir/salvar funil-preset) */
.fnvinc-head-tools { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.fv-apply-sel { max-width: 220px; }

/* M1 — dropdown do preset em foco + ✏️/🗑 (herdaram a aba removida) */
.fv-fpre-group { display: inline-flex; align-items: center; gap: 4px; }
.fv-fpre-btn { padding: 6px 9px; line-height: 1; }
.fv-fpre-btn:disabled { opacity: .4; cursor: not-allowed; }

/* .fv-fpre-info/.fv-fpre-nome/.fv-fpre-warn e os chips G7 (.fpre-card-ready,
   .fpre-pt) saíram junto com fpreResumoHTML — a faixa foi absorvida pelo
   cabeçalho de "Presets de Live", que usa .fvcanvas-ready. */

.intp-card-demo.inline { position: static; display: inline-block; }
.btn.danger, .btn.ghost.danger { color: var(--live); }

/* ==========================================================================
   M4 · MODAL "▶ Testar" (tst-) — prévia read-only da cena antes de reabrir a
   live. A coluna esquerda hospeda o PALCO REAL do Estúdio por PORTAL (#stStage
   é movido pra cá e devolvido no closeModal) — por isso o slot só dá espaço,
   nunca redefine .st-stage.
   ========================================================================== */
.tst-modal { width: min(1120px, 96vw); height: min(820px, 92vh); background: var(--surface); border: 1px solid var(--border); border-radius: 20px; box-shadow: var(--shadow-pop); display: grid; grid-template-rows: auto 1fr auto; overflow: hidden; }
.tst-head { display: flex; align-items: center; gap: 12px; padding: 14px 18px; border-bottom: 1px solid var(--border-neutral); }
.tst-head-ic { font-size: 20px; line-height: 1; }
.tst-head-tx b { display: block; font-family: var(--font-head); font-size: 16px; color: var(--text); }
.tst-head-tx small { display: block; font-size: 12px; color: var(--text-3); }
.tst-head .ml-close { margin-left: auto; width: 34px; height: 34px; border-radius: 9px; border: 1px solid var(--border-neutral); background: transparent; color: var(--text-3); font-size: 17px; cursor: pointer; }
.tst-head .ml-close:hover { color: var(--live); border-color: var(--live); }
.tst-body { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr); gap: 16px; padding: 16px 18px; min-height: 0; overflow: hidden; }
.tst-palco { display: grid; grid-template-rows: minmax(0, 1fr) auto; gap: 8px; min-height: 0; }
.tst-palco-slot { display: grid; place-items: center; min-height: 0; position: relative; }
.tst-palco-slot .st-stage { height: min(100%, 62vh); max-height: 62vh; }
.tst-palco-cap { margin: 0; font-size: 11.5px; color: var(--text-3); line-height: 1.45; text-align: center; }
.tst-side { min-height: 0; overflow-y: auto; display: flex; flex-direction: column; gap: 10px; padding-right: 4px; }
.tst-banner, .tst-nota { margin: 0; }
.tst-check { border: 1px solid var(--border-neutral); border-radius: var(--r-card); background: var(--bg-card); }
.tst-check-head { display: flex; align-items: center; gap: 10px; padding: 10px 14px; border-bottom: 1px solid var(--border-neutral); }
.tst-check-head b { font-family: var(--font-head); font-size: 14px; color: var(--text); }
.tst-check-sep { color: var(--text-3); font-size: 13px; }
.tst-check-av { font-size: 11.5px; font-weight: 700; color: var(--text-3); padding: 3px 9px; border-radius: 999px; border: 1px solid var(--border-soft); }
.tst-check-av.on { color: var(--warn); border-color: rgba(245,158,11,.35); }
.tst-list { list-style: none; margin: 0; padding: 6px 0; }
.tst-item { display: flex; gap: 10px; align-items: flex-start; padding: 8px 14px; }
.tst-item + .tst-item { border-top: 1px solid var(--border-soft); }
.tst-mark { flex: none; width: 18px; height: 18px; border-radius: 50%; display: grid; place-items: center; font-size: 11px; font-weight: 800; color: #fff; background: var(--text-3); margin-top: 1px; }
.tst-item.ok .tst-mark { background: var(--emerald); }
.tst-item.no .tst-mark { background: var(--live); }
.tst-item.warn .tst-mark { background: var(--warn); }
.tst-item.opt .tst-mark { background: var(--text-3); opacity: .55; }
.tst-tx { min-width: 0; }
.tst-tx b { display: block; font-size: 12.5px; font-weight: 700; color: var(--text); }
.tst-tag { font-size: 9.5px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: var(--text-3); margin-left: 5px; }
.tst-motivo { display: block; font-size: 11.5px; color: var(--text-2); line-height: 1.45; margin-top: 2px; }
.tst-telemetria { border: 1px dashed var(--border-neutral); border-radius: var(--r-card); padding: 14px; text-align: center; }
.tst-telemetria-ph { font-size: 11.5px; color: var(--text-3); }
.tst-foot { display: flex; align-items: center; gap: 10px; padding: 12px 18px; border-top: 1px solid var(--border-neutral); background: var(--bg-card); flex-wrap: wrap; }
.tst-rodar { margin-left: auto; min-width: 170px; justify-content: center; }
.tst-rodar:disabled { opacity: .55; cursor: not-allowed; }
@media (max-width: 900px) {
  .tst-modal { width: 96vw; height: 94vh; }
  .tst-body { grid-template-columns: 1fr; grid-template-rows: minmax(220px, 42vh) minmax(0, 1fr); overflow-y: auto; }
  .tst-palco-slot .st-stage { height: min(100%, 38vh); max-height: 38vh; }
  .tst-side { overflow: visible; }
  .tst-rodar { margin-left: 0; width: 100%; }
}

/* ---- G8/G9 · Rotação ---- */
.rot-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 14px; margin-bottom: 16px; flex-wrap: wrap; }
.rot-head-tx { min-width: 0; flex: 1 1 260px; }
.rot-head-tx .cfg-desc { max-width: 60ch; }
.rot-perfil { max-width: 300px; }
/* a Rotação vive DENTRO da pane Live da Automação: mesma moldura dos cfg-block */
.au-rota-pane { background: var(--bg-card); border: 1px solid var(--border-card); border-radius: 14px; padding: 16px 18px; margin-bottom: 16px; }
.au-rota-pane .rot-empty { margin: 14px auto; }

.rot-empty { text-align: center; max-width: 520px; margin: 30px auto; padding: 30px 24px; border: 1px dashed var(--border-neutral); border-radius: var(--r-card); background: var(--bg-raise); }
.rot-empty-ic { font-size: 40px; margin-bottom: 8px; }
.rot-empty h3 { font-size: 19px; margin-bottom: 8px; }
.rot-empty p { color: var(--text-2); font-size: 14px; line-height: 1.55; margin-bottom: 18px; }
.rot-empty-actions { display: flex; gap: 10px; justify-content: center; flex-wrap: wrap; }
.rot-empty-warn { margin-top: 14px; font-size: 12.5px; color: var(--warn); }

.rot-builder { border: 1px solid var(--border); border-radius: var(--r-card); background: var(--surface); padding: 16px; }
.rot-builder-h { display: flex; align-items: center; justify-content: space-between; gap: 14px; margin-bottom: 12px; flex-wrap: wrap; }
.rot-builder-h b { font-size: 15px; }
.rot-builder-h small { display: block; color: var(--text-3); font-size: 12px; margin-top: 2px; }
.rot-modo { display: inline-flex; gap: 4px; padding: 3px; background: var(--bg-raise); border: 1px solid var(--border-soft); border-radius: 999px; }
.rot-modo-btn { padding: 6px 12px; font-size: 12.5px; font-weight: 700; border: 0; background: transparent; color: var(--text-3); border-radius: 999px; cursor: pointer; font-family: inherit; -webkit-appearance: none; appearance: none; transition: all .15s; }
.rot-modo-btn.active { background: var(--accent); color: #fff; }

.rot-rounds { display: flex; flex-direction: column; gap: 8px; margin-bottom: 12px; }
.rot-round { display: flex; align-items: center; gap: 8px; padding: 8px 10px; border: 1px solid var(--border-soft); border-radius: var(--r-btn); background: var(--bg-raise); flex-wrap: wrap; }
.rot-round.ruim { border-color: color-mix(in srgb, var(--warn) 55%, var(--border-soft)); }
.rot-round-n { flex: 0 0 auto; width: 24px; height: 24px; display: grid; place-items: center; border-radius: 999px; background: var(--accent-soft); color: var(--accent); font-weight: 800; font-size: 12px; }
.rot-round-dot { flex: 0 0 auto; width: 9px; height: 9px; border-radius: 999px; background: var(--text-3); }
.rot-round-dot.ok { background: var(--emerald); }
.rot-round-dot.no { background: var(--warn); }
.rot-round-dot.off { background: var(--border-neutral); }
.rot-preset { flex: 2 1 200px; min-width: 160px; }
.rot-dur { flex: 0 0 auto; width: 96px; }
.rot-rotulo { flex: 1 1 160px; min-width: 120px; padding: 9px 11px; background: var(--surface); border: 1px solid var(--border-neutral); color: var(--text); font-size: 13px; border-radius: var(--r-btn); font-family: var(--font-body); }
.rot-rotulo:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-soft); }
.rot-round-btns { display: inline-flex; gap: 3px; flex: 0 0 auto; }
.rot-round-btns button { width: 28px; height: 28px; border: 1px solid var(--border-soft); background: var(--surface); color: var(--text-2); border-radius: 7px; cursor: pointer; font-size: 12px; -webkit-appearance: none; appearance: none; }
.rot-round-btns button:hover:not(:disabled) { border-color: var(--accent); color: var(--text); }
.rot-round-btns button:disabled { opacity: .35; cursor: default; }
.rot-empty-rounds { text-align: center; color: var(--text-3); font-size: 13px; padding: 14px; }
.rot-builder-actions { display: flex; gap: 10px; flex-wrap: wrap; margin-bottom: 8px; }

.rot-exec { margin-top: 16px; border: 1px solid var(--border); border-radius: var(--r-card); background: var(--surface); padding: 16px; }
.rot-exec-h { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; margin-bottom: 12px; flex-wrap: wrap; }
.rot-exec-h b { font-size: 15px; }
.rot-exec-seam { font-size: 11px; color: var(--text-3); font-family: var(--font-mono, monospace); }
.rot-exec-seam em { font-style: normal; opacity: .8; }
.rot-exec-state { display: flex; align-items: center; gap: 14px; padding: 14px; border-radius: var(--r-btn); background: var(--bg-raise); }
.rot-exec-state.live { border: 1px solid color-mix(in srgb, var(--emerald) 30%, var(--border-soft)); }
.rot-exec-state.viol { border: 1px solid color-mix(in srgb, var(--live) 50%, var(--border-soft)); background: color-mix(in srgb, var(--live) 8%, var(--bg-raise)); }
.rot-exec-state.done { border: 1px solid var(--border-soft); }
.rot-exec-ic { font-size: 26px; line-height: 1; }
.rot-exec-round { flex: 0 0 auto; font-size: 30px; font-weight: 800; color: var(--emerald); line-height: 1; font-variant-numeric: tabular-nums; }
.rot-exec-round i { font-size: 15px; font-style: normal; color: var(--text-3); font-weight: 700; }
.rot-exec-tx b, .rot-exec-state div b { font-size: 15px; }
.rot-exec-rot { color: var(--text-3); font-weight: 600; font-size: 12px; }
.rot-exec-state small { display: block; color: var(--text-2); font-size: 12.5px; margin-top: 3px; line-height: 1.5; }
.rot-previa { color: var(--warn); font-weight: 700; }
.rot-exec-actions { margin-top: 12px; display: flex; gap: 10px; }
.rot-exec-blk { font-size: 13px; color: var(--live); font-weight: 600; }
.rot-link { border: 0; background: transparent; color: var(--accent); font-weight: 700; cursor: pointer; font-family: inherit; padding: 0; text-decoration: underline; font-size: inherit; }

/* ============================================================================
   CONTRATO DE POLÍTICA — ação decidida (GuruDefense), reabertura por perfil,
   detecção read-only (Moderação), piso/teto de round (Funil-rotação).
   ============================================================================ */

/* GuruDefense — Ação DECIDIDA pelo escudo (no painel de diagnóstico) */
.gd-diag-acao { margin-top: 14px; border-radius: 12px; padding: 12px 14px; border: 1px solid var(--border-neutral); background: var(--bg-raise); }
.gd-diag-acao.live { border-color: rgba(239,68,68,.34); background: rgba(239,68,68,.07); }
.gd-diag-acao.high { border-color: rgba(249,115,22,.34); background: rgba(249,115,22,.07); }
.gd-diag-acao.warn { border-color: rgba(245,158,11,.34); background: rgba(245,158,11,.07); }
.gd-diag-acao.review { border-color: rgba(139,92,246,.34); background: rgba(139,92,246,.07); }
.gd-diag-acao-h { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.gd-diag-acao-l { font-size: 10px; font-weight: 800; text-transform: uppercase; letter-spacing: .05em; color: var(--text-3); }
.gd-diag-acao-pill { font-size: 12px; font-weight: 800; padding: 3px 10px; border-radius: 99px; }
.gd-diag-acao-pill.live { color: var(--live); background: rgba(239,68,68,.15); }
.gd-diag-acao-pill.high { color: #F97316; background: rgba(249,115,22,.15); }
.gd-diag-acao-pill.warn { color: var(--warn); background: rgba(245,158,11,.15); }
.gd-diag-acao-pill.review { color: var(--accent); background: rgba(139,92,246,.15); }
.gd-diag-acao-x { margin: 8px 0 0; font-size: 12px; line-height: 1.5; color: var(--text-1); }

/* GuruDefense — Reabertura após violação (por perfil) */
.gd-reopen { margin-top: 14px; padding-top: 12px; border-top: 1px solid var(--border-neutral); }
.gd-reopen-armado { margin-top: 6px; }
.gd-note.sm.warn { color: var(--warn); }
.gd-reopen-regras { margin: 10px 0 0; padding-left: 18px; list-style: none; }
.gd-reopen-regras li { position: relative; font-size: 11.5px; line-height: 1.6; color: var(--text-2); margin-bottom: 4px; }
.gd-reopen-regras li::before { content: "•"; position: absolute; left: -14px; color: var(--accent); }
.gd-reopen-regras li b { color: var(--text-1); }
.gd-review-pol { margin-top: 6px; font-size: 11px; color: var(--text-2); line-height: 1.5; }
.gd-review-pol b { color: var(--text-1); }

/* GuruDefense — ESCADA DE AVISOS (cadeia de presets 1 → 2 → 3) */
.gd-esc { margin-top: 14px; padding-top: 12px; border-top: 1px solid var(--border-neutral); }
.gd-esc-agora { margin-left: auto; font-size: 11.5px; color: var(--text-2); padding: 3px 10px; border-radius: 99px; background: var(--bg-raise); border: 1px solid var(--border-neutral); }
.gd-esc-agora b { color: var(--text-1); }
.gd-esc-agora.on { color: var(--warn); border-color: rgba(245,158,11,.34); background: rgba(245,158,11,.09); }
.gd-esc-agora.on b { color: var(--warn); }
.gd-esc-rows { display: flex; flex-direction: column; gap: 7px; margin: 10px 0 8px; }
.gd-esc-row { display: flex; align-items: center; gap: 9px; flex-wrap: wrap; padding: 8px 10px; border: 1px solid var(--border-neutral); border-radius: 10px; background: var(--bg-raise); }
.gd-esc-row.here { border-color: rgba(245,158,11,.45); background: rgba(245,158,11,.07); }
.gd-esc-row.morto { border-color: rgba(239,68,68,.4); }
.gd-esc-n { flex: 0 0 auto; font-size: 11px; font-weight: 800; letter-spacing: .03em; color: var(--text-3); text-transform: uppercase; min-width: 62px; }
.gd-esc-row.here .gd-esc-n { color: var(--warn); }
.gd-esc-sel { flex: 1 1 190px; min-width: 0; }
.gd-esc-btns { display: inline-flex; gap: 4px; flex: 0 0 auto; }
.gd-esc-btns button { width: 26px; height: 26px; border-radius: 7px; border: 1px solid var(--border-neutral); background: var(--bg-card); color: var(--text-2); cursor: pointer; font-size: 11px; line-height: 1; transition: var(--t); }
.gd-esc-btns button:hover:not(:disabled) { border-color: var(--accent); color: var(--accent); }
.gd-esc-btns button:disabled { opacity: .32; cursor: not-allowed; }
.gd-esc-here { flex: 0 0 auto; font-size: 10px; font-weight: 800; text-transform: uppercase; letter-spacing: .05em; color: var(--warn); }
.gd-esc-add { margin-top: 2px; }
.gd-esc-fim { margin-top: 12px; display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.gd-esc-fim-l { font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: .05em; color: var(--text-3); }
.gd-esc-fim-opts { display: inline-flex; gap: 6px; }
.gd-esc-fim-opt { font-family: inherit; font-size: 12px; font-weight: 600; padding: 5px 12px; border-radius: 99px; border: 1px solid var(--border-neutral); background: var(--bg-raise); color: var(--text-2); cursor: pointer; transition: var(--t); }
.gd-esc-fim-opt:hover { border-color: var(--accent); color: var(--text); }
.gd-esc-fim-opt.on { border-color: var(--accent); background: var(--accent-soft); color: var(--text); }
.gd-esc-fim .gd-note { flex: 1 1 100%; margin: 0; }
.gd-esc-prox { color: var(--text-1); }
@media (max-width: 640px) {
  .gd-esc-agora { margin-left: 0; flex: 1 1 100%; }
  .gd-esc-row { row-gap: 7px; }
  .gd-esc-sel { flex: 1 1 100%; }
}

/* Moderação — detecção agora é read-only + deep-link ao GuruDefense */
.dep-list { margin: 6px 0 12px; padding-left: 18px; }
.dep-list li { font-size: 12.5px; line-height: 1.7; color: var(--text-2); }
.dep-list li small { color: var(--text-3); }

/* Funil-rotação — round com aviso de piso de negócio */
.rot-round { display: block; }
.rot-round-main { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.rot-round.piso { border-color: color-mix(in srgb, var(--warn) 45%, var(--border-soft)); }
.rot-round-piso { margin-top: 8px; font-size: 11.5px; line-height: 1.5; color: var(--warn); }
.rot-round-piso b { font-weight: 800; }

/* ============================================================================
   VOZ · PRESETS DE VOZ (aba Vozes unificada = Fonte + Persona + Banco)
   Galeria de cards ricos + drawer de 3 seções. Reusa tokens globais e classes
   existentes (vz-eng-chip, vz-bnk-bar, vz-honest, estp-*). Tema escuro nativo.
   ============================================================================ */
.vzp-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 14px; margin-top: 16px; }
.vzp-card { display: flex; flex-direction: column; gap: 12px; padding: 16px; border-radius: var(--r-card); border: 1px solid var(--border-card); background: var(--surface); box-shadow: var(--shadow-card); }
.vzp-card-top { display: flex; align-items: center; gap: 10px; }
.vzp-avatar { flex: 0 0 auto; width: 40px; height: 40px; border-radius: 12px; display: grid; place-items: center; font-weight: 800; font-size: 15px; color: #fff; }
.vzp-card-id { min-width: 0; flex: 1; display: flex; flex-direction: column; gap: 3px; }
.vzp-card-nome { font-size: 15px; font-weight: 700; color: var(--text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.vzp-badge { align-self: flex-start; font-size: 11px; font-weight: 700; padding: 2px 8px; border-radius: 999px; border: 1px solid var(--border-neutral); color: var(--text-2); background: var(--bg-raise); }
.vzp-badge.clone { color: var(--accent); border-color: var(--border); background: var(--accent-soft); }
.vzp-badge.sistema { color: var(--emerald); border-color: var(--emerald-soft); background: var(--emerald-soft); }
.vzp-noar { flex: 0 0 auto; font-size: 10.5px; font-weight: 800; letter-spacing: .03em; text-transform: uppercase; color: var(--emerald); padding: 3px 8px; border-radius: 999px; background: var(--emerald-soft); }
/* .vzp-chips saiu com os chips de persona do card (pedido do dono).
   .estp-chip continua vivo — é compartilhado com Roteiros/Produtos/Mentes. */
.vzp-banco { display: flex; flex-direction: column; gap: 5px; }
.vzp-banco-bar { height: 6px; border-radius: 99px; background: var(--bg-raise); border: 1px solid var(--border-soft); overflow: hidden; }
.vzp-banco-bar i { display: block; height: 100%; border-radius: 99px; background: linear-gradient(90deg, var(--accent), var(--emerald)); }
.vzp-banco-tx { font-size: 11.5px; color: var(--text-2); }
.vzp-banco-tx b { color: var(--emerald); font-weight: 700; }
.vzp-card-actions { display: flex; gap: 8px; margin-top: 2px; }
.vzp-card-actions .btn { flex: 1; }
.vzp-new { min-height: 190px; }

/* -- Drawer -- */
.vzd-head { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.vzd-title { flex: 1; min-width: 120px; font-size: 15px; color: var(--text); }
.vzd-saldo { font-size: 12px; color: var(--text-2); padding: 5px 10px; border-radius: 999px; border: 1px solid var(--border-neutral); background: var(--bg-raise); white-space: nowrap; }
.vzd-sec { margin-top: 14px; }
.vzd-sec-h { display: flex; align-items: flex-start; gap: 12px; margin-bottom: 12px; }
.vzd-sec-h > div { flex: 1; min-width: 0; }
.vzd-sec-tag { flex: 0 0 auto; width: 26px; height: 26px; border-radius: 8px; display: grid; place-items: center; font-weight: 800; font-size: 13px; color: var(--accent); background: var(--accent-soft); border: 1px solid var(--border); }
.vzd-fonte-toggle { margin-bottom: 12px; }
.vzd-fonte-sel { max-width: 380px; }
.vzd-consent { display: flex; gap: 10px; align-items: flex-start; padding: 12px 14px; border-radius: var(--r-card); border: 1px dashed var(--border-neutral); background: var(--bg-raise); font-size: var(--fs-sm); color: var(--text-2); line-height: 1.5; cursor: pointer; }
.vzd-consent.on { border-style: solid; border-color: color-mix(in srgb, var(--emerald) 40%, var(--border-neutral)); }
.vzd-consent input { margin-top: 3px; flex: 0 0 auto; }
.vzd-consent b { color: var(--text); }
.vzd-drop { display: flex; align-items: center; gap: 12px; margin-top: 10px; padding: 16px; border-radius: var(--r-card); border: 1.5px dashed var(--border); background: var(--accent-soft); cursor: pointer; transition: var(--t); }
.vzd-drop:hover { border-color: var(--accent); }
.vzd-drop.off { opacity: .5; cursor: not-allowed; border-color: var(--border-soft); background: var(--bg-raise); }
.vzd-drop-ic { font-size: 22px; }
.vzd-drop-tx { display: flex; flex-direction: column; gap: 2px; }
.vzd-drop-tx b { color: var(--text); font-size: 14px; }
.vzd-drop-tx small { color: var(--text-3); font-size: 12px; }
.vzd-clone-status { margin-top: 10px; font-size: 12.5px; color: var(--text-2); }
.vzd-clone-status b { color: var(--text); }
.vzd-clone-status.ok b { color: var(--emerald); }
.vzd-clone-status.err b { color: var(--live); }
.vzd-clone-status.wait b { color: var(--warn); }

/* -- Persona -- */
.vzd-amostra { flex: 0 0 auto; align-self: flex-start; }
.vzd-quicks { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 14px; }
.vzd-quick { padding: 7px 13px; border-radius: 999px; border: 1px solid var(--border-neutral); background: var(--bg-raise); color: var(--text-2); font-size: var(--fs-sm); font-weight: 600; cursor: pointer; transition: var(--t); }
.vzd-quick:hover { border-color: var(--accent); color: var(--text); background: var(--accent-soft); }
.vzd-grupos { display: flex; flex-direction: column; gap: 10px; }
.vzd-grupo { border: 1px solid var(--border-soft); border-radius: var(--r-card); overflow: hidden; background: var(--bg-alt); }
.vzd-grupo-h { display: flex; align-items: center; gap: 10px; width: 100%; padding: 12px 14px; background: none; border: none; cursor: pointer; color: var(--text); font-family: var(--font-body); text-align: left; }
.vzd-grupo-ic { font-size: 16px; }
.vzd-grupo-lbl { flex: 1; font-size: 14px; font-weight: 700; }
.vzd-grupo-caret { color: var(--text-3); font-size: 12px; transition: transform .2s var(--e); }
.vzd-grupo.collapsed .vzd-grupo-caret { transform: rotate(-90deg); }
.vzd-grupo-body { display: flex; flex-direction: column; gap: 16px; padding: 4px 14px 16px; }
.vzd-grupo.collapsed .vzd-grupo-body { display: none; }
.vz-trait { display: flex; flex-direction: column; gap: 6px; max-width: 640px; }
.vz-trait-top { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; }
.vz-trait-lbl { font-size: 13px; font-weight: 600; color: var(--text); }
.vz-trait-val { font-size: 12px; font-weight: 800; color: var(--accent); font-variant-numeric: tabular-nums; min-width: 26px; text-align: right; }
.vz-trait input[type="range"] { width: 100%; accent-color: var(--accent); }
.vz-trait-ends { display: flex; justify-content: space-between; font-size: 11px; color: var(--text-3); }
.vzd-hater-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.vzd-hater-chips .vz-eng-chip { padding: 6px 11px; font-size: 12px; }
.vzd-bordoes-list { display: flex; flex-wrap: wrap; gap: 6px; }
.vzd-bordoes-empty { font-size: 12px; color: var(--text-3); font-style: italic; }
.vzd-bordao { display: inline-flex; align-items: center; gap: 6px; padding: 4px 6px 4px 11px; border-radius: 999px; background: var(--accent-soft); border: 1px solid var(--border); font-size: 12.5px; color: var(--text); }
.vzd-bordao-x { border: none; background: none; color: var(--text-2); cursor: pointer; font-size: 15px; line-height: 1; padding: 0 3px; }
.vzd-bordao-x:hover { color: var(--live); }
.vzd-bordao-add { display: flex; gap: 8px; }
.vzd-bordao-add .vz-input { flex: 1; }
.vzd-personagem { gap: 10px; }

/* -- Banco (seção C) -- */
.vzc-cats { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 10px; margin-bottom: 14px; }
.vzc-cat { padding: 10px 12px; border-radius: 10px; border: 1px solid var(--border-soft); background: var(--bg-alt); }
.vzc-cat.ok { border-color: color-mix(in srgb, var(--emerald) 35%, var(--border-soft)); }
.vzc-cat-top { display: flex; justify-content: space-between; align-items: baseline; gap: 8px; margin-bottom: 7px; }
.vzc-cat-lbl { font-size: 12.5px; font-weight: 600; color: var(--text); }
.vzc-cat-num { font-size: 11.5px; font-weight: 700; color: var(--text-2); font-variant-numeric: tabular-nums; }
.vzc-cat.ok .vzc-cat-num { color: var(--emerald); }
.vzc-cat-bar { height: 5px; border-radius: 99px; background: var(--bg-raise); overflow: hidden; }
.vzc-cat-bar i { display: block; height: 100%; background: linear-gradient(90deg, var(--accent), var(--emerald)); }
.vzd-bmodo { display: flex; flex-direction: column; gap: 8px; margin-bottom: 14px; }
.vzd-bfoot { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }

@media (max-width: 560px) {
  .vzp-grid { grid-template-columns: 1fr; }
  .vzd-head { gap: 8px; }
  .vzd-saldo { order: 3; }
}

/* ==========================================================================
   CENTRAL DE PERFIS × CÉREBRO — faixa de procedência + estados honestos
   (prefixo .frt-). A tela precisa dizer, sem letra miúda, DE ONDE veio o que
   está embaixo: exemplo de demonstração, ou os perfis reais do servidor.
   ========================================================================== */
.frt-faixa { display: flex; align-items: flex-start; gap: 10px; flex-wrap: wrap;
  padding: 10px 14px; margin: 0 0 16px; border-radius: 12px; font-size: 12.5px; line-height: 1.5; }
.frt-faixa > b:first-child { flex: 0 0 auto; font-size: 10px; font-weight: 800; letter-spacing: .08em;
  padding: 3px 8px; border-radius: 99px; margin-top: 1px; }
.frt-faixa span { flex: 1 1 240px; min-width: 0; }
.frt-faixa.demo { background: var(--warn-soft); border: 1px solid rgba(245,158,11,0.32); color: var(--text-2); }
.frt-faixa.demo > b:first-child { background: var(--warn); color: #1a1206; }
.frt-faixa.real { background: rgba(16,185,129,0.08); border: 1px solid rgba(16,185,129,0.26); color: var(--text-2); }
.frt-faixa.real > b:first-child { background: var(--emerald); color: #04120c; }

/* Estados sem dado do cliente (sem licença / zero perfis / servidor mudo).
   São TELA, não aviso de rodapé: é a primeira coisa que o cliente novo vê. */
.frt-vazio { max-width: 620px; margin: 8px auto 0; padding: 34px 28px; text-align: center;
  border: 1px dashed var(--border-neutral); border-radius: 18px; background: var(--bg-raise); }
.frt-vazio-ic { font-size: 34px; line-height: 1; margin-bottom: 14px; opacity: .85; }
.frt-vazio h2 { font-family: var(--font-head); font-size: 19px; font-weight: 600; margin: 0 0 10px; }
.frt-vazio p { font-size: 13.5px; line-height: 1.65; color: var(--text-2); margin: 0 auto 18px; max-width: 52ch; }
.frt-vazio-passos { display: inline-flex; flex-direction: column; gap: 9px; text-align: left;
  margin: 0 0 22px; padding: 0 0 0 22px; font-size: 13px; line-height: 1.55; color: var(--text-2); max-width: 52ch; }
.frt-vazio-passos li::marker { color: var(--accent); font-weight: 700; }
.frt-vazio-acoes { display: flex; gap: 10px; flex-wrap: wrap; justify-content: center; }

/* Tile de perfil REAL: leitura, sem controle de live (quem transmite é o app
   do computador). Sem hover-de-clique, porque não há para onde clicar ainda. */
.cmd-tile.real { cursor: default; }
.cmd-tile.real:hover { border-color: var(--border-card); transform: none; box-shadow: none; }
.frt-real-tag { display: inline-flex; align-items: center; gap: 4px; font-size: 10px; font-weight: 700;
  letter-spacing: .02em; padding: 2px 7px; border-radius: 99px; background: var(--bg-raise);
  border: 1px solid var(--border-neutral); color: var(--text-3); max-width: 100%;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.frt-real-tag.on { color: var(--emerald); border-color: rgba(16,185,129,0.32); background: rgba(16,185,129,0.08); }
.frt-real-nota { margin: 0; font-size: 11px; line-height: 1.5; color: var(--text-3); }

@media (max-width: 560px) {
  .frt-vazio { padding: 26px 18px; }
  .frt-vazio-acoes .btn { width: 100%; }
}
