/* ============================================================================
 * Rede dos Sobreviventes — Estilo
 * ----------------------------------------------------------------------------
 * Tema sóbrio, dark, mono. Mobile-first. Animações sutis e contínuas.
 *
 * Organização:
 *   1. Reset & tokens (variáveis de cor, espaço, fonte, sombras)
 *   2. Base (html, body, tipografia)
 *   3. Layout (navbar, sidebar, grid, container)
 *   4. Componentes (button, input, card, badge, alert, table, modal)
 *   5. Páginas específicas (login, manual, chat, painel, admin)
 *   6. Utilities (helpers de espaçamento, display, etc)
 *   7. Animações
 *   8. Mobile / responsivo
 * ============================================================================ */

/* ============================================================================
 * 1. RESET & TOKENS
 * ============================================================================ */
*, *::before, *::after { box-sizing: border-box; }
* { margin: 0; padding: 0; }

:root {
  /* Paleta — terra queimada, aço, dourado opaco */
  --bg:           #0b0b0d;
  --bg-1:         #111114;
  --bg-2:         #16161b;
  --bg-3:         #1c1c22;
  --bg-4:         #25252d;
  --line:         #2a2a32;
  --line-soft:    #20202a;

  --txt:          #d8d8dc;
  --txt-strong:   #f0f0f3;
  --txt-dim:      #888892;
  --txt-faint:    #5a5a64;

  --accent:       #c9a55b;    /* dourado opaco */
  --accent-soft:  #8c7340;
  --accent-glow:  rgba(201, 165, 91, 0.12);
  --accent-line:  rgba(201, 165, 91, 0.28);

  --ok:           #6bbd7c;
  --warn:         #d4a23a;
  --err:          #c75c5c;
  --info:         #6a9bc3;

  /* Tipografia */
  --font-mono:    'IBM Plex Mono', 'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  --font-sans:    'IBM Plex Sans', 'Inter', ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, sans-serif;
  --font-display: 'IBM Plex Serif', Georgia, 'Times New Roman', serif;

  /* Espaço base — escala harmônica */
  --s-1:  0.25rem;
  --s-2:  0.5rem;
  --s-3:  0.75rem;
  --s-4:  1rem;
  --s-5:  1.5rem;
  --s-6:  2rem;
  --s-7:  3rem;
  --s-8:  4rem;
  --s-9:  6rem;

  /* Raio quase nulo — estética austera */
  --r:    2px;
  --r-md: 4px;
  --r-pill: 999px;

  /* Sombras */
  --shadow-sm: 0 1px 2px rgba(0,0,0,0.35);
  --shadow-md: 0 4px 12px rgba(0,0,0,0.45);
  --shadow-lg: 0 16px 40px rgba(0,0,0,0.55);

  /* Transições — Bezier para sensação fluida */
  --easing:     cubic-bezier(0.2, 0.7, 0.2, 1);
  --easing-out: cubic-bezier(0.16, 1, 0.3, 1);
  --t-fast:     120ms var(--easing);
  --t-med:      220ms var(--easing);
  --t-slow:     360ms var(--easing-out);

  /* Layout */
  --nav-h:        56px;
  --sidebar-w:    280px;
  --content-max:  1180px;
  --reading-max:  720px;
}

/* ============================================================================
 * 2. BASE
 * ============================================================================ */
html {
  font-size: 16px;
  scroll-behavior: smooth;
  scrollbar-color: var(--line) var(--bg);
  scrollbar-width: thin;
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

body {
  font-family: var(--font-sans);
  background: var(--bg);
  color: var(--txt);
  line-height: 1.6;
  min-height: 100vh;
  overflow-x: hidden;
  position: relative;

  /* atmosfera sutil */
  background-image:
    radial-gradient(circle at 20% 0%, rgba(201, 165, 91, 0.05) 0%, transparent 40%),
    radial-gradient(circle at 80% 100%, rgba(106, 155, 195, 0.03) 0%, transparent 40%);
  background-attachment: fixed;
}

/* Ruído sutil sobreposto - cria textura sem peso */
body::before {
  content: "";
  position: fixed; inset: 0;
  pointer-events: none; z-index: 0;
  opacity: 0.025;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' /%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' /%3E%3C/svg%3E");
}

::-webkit-scrollbar { width: 8px; height: 8px; }
::-webkit-scrollbar-track { background: var(--bg); }
::-webkit-scrollbar-thumb { background: var(--line); border-radius: 4px; }
::-webkit-scrollbar-thumb:hover { background: var(--bg-4); }

::selection { background: var(--accent); color: var(--bg); }

/* Tipografia */
h1, h2, h3, h4, h5, h6 {
  font-family: var(--font-display);
  font-weight: 500;
  letter-spacing: -0.01em;
  color: var(--txt-strong);
  line-height: 1.2;
}
h1 { font-size: clamp(1.5rem, 2.4vw, 2.1rem); }
h2 { font-size: clamp(1.25rem, 1.8vw, 1.6rem); }
h3 { font-size: clamp(1.1rem, 1.4vw, 1.3rem); }
h4 { font-size: 1.05rem; }

p { margin: 0; }
p + p { margin-top: 0.85em; }

a {
  color: var(--accent);
  text-decoration: none;
  border-bottom: 1px solid transparent;
  transition: color var(--t-fast), border-color var(--t-fast);
}
a:hover {
  color: var(--accent);
  border-bottom-color: var(--accent);
}

strong { color: var(--txt-strong); font-weight: 600; }
em { color: var(--txt); }

code, pre, kbd {
  font-family: var(--font-mono);
  font-size: 0.9em;
}
code {
  background: var(--bg-2);
  padding: 0.1em 0.4em;
  border-radius: var(--r);
  color: var(--accent);
  border: 1px solid var(--line-soft);
}
pre {
  background: var(--bg-1);
  padding: var(--s-4);
  border-radius: var(--r);
  border-left: 2px solid var(--accent);
  overflow-x: auto;
  font-size: 0.85rem;
  color: var(--txt);
}
pre code {
  background: none;
  border: none;
  padding: 0;
  color: inherit;
}

blockquote {
  border-left: 2px solid var(--accent);
  padding: var(--s-3) var(--s-4);
  margin: var(--s-4) 0;
  background: var(--bg-1);
  color: var(--txt-dim);
  font-style: italic;
}

ul, ol {
  padding-left: var(--s-5);
  margin: var(--s-3) 0;
}
li { margin: 0.3em 0; }

hr {
  border: none;
  border-top: 1px solid var(--line);
  margin: var(--s-5) 0;
}

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

/* Foco visível e elegante */
:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 2px;
}

/* ============================================================================
 * 3. LAYOUT
 * ============================================================================ */
.container {
  width: 100%;
  max-width: var(--content-max);
  margin: 0 auto;
  padding: 0 var(--s-4);
  position: relative;
  z-index: 1;
}

.container-narrow {
  max-width: var(--reading-max);
  margin: 0 auto;
  padding: 0 var(--s-4);
}

main {
  position: relative;
  z-index: 1;
  padding: var(--s-5) 0 var(--s-8);
  min-height: calc(100vh - var(--nav-h));
}

/* Topbar — fina, fixa, com timer */
.topbar {
  position: sticky;
  top: 0;
  z-index: 50;
  background: rgba(11, 11, 13, 0.85);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border-bottom: 1px solid var(--line);
  height: var(--nav-h);
}
.topbar-inner {
  height: 100%;
  display: flex;
  align-items: center;
  gap: var(--s-4);
  max-width: var(--content-max);
  margin: 0 auto;
  padding: 0 var(--s-4);
}
.brand {
  font-family: var(--font-mono);
  font-size: 0.85rem;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--accent);
  border-bottom: 0;
  white-space: nowrap;
  display: flex;
  align-items: center;
  gap: var(--s-2);
}
.brand:hover { color: var(--accent); border-bottom: 0; }
.brand-dot {
  width: 6px; height: 6px; border-radius: 50%;
  background: var(--accent);
  box-shadow: 0 0 8px var(--accent);
  animation: pulseDot 2.2s infinite;
}
@keyframes pulseDot {
  0%, 100% { opacity: 1; transform: scale(1); }
  50%      { opacity: 0.4; transform: scale(0.7); }
}

.nav-links {
  display: flex;
  gap: var(--s-1);
  list-style: none;
  padding: 0;
  margin: 0;
  margin-left: auto;
  align-items: center;
}
.nav-links a {
  color: var(--txt-dim);
  border-bottom: 0;
  font-size: 0.82rem;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  padding: var(--s-2) var(--s-3);
  position: relative;
  font-family: var(--font-mono);
  transition: color var(--t-fast);
}
.nav-links a:hover { color: var(--txt-strong); border-bottom: 0; }
.nav-links a.ativa { color: var(--accent); }
.nav-links a.ativa::after {
  content: ""; position: absolute; bottom: -1px; left: 50%;
  transform: translateX(-50%);
  width: 50%; height: 2px;
  background: var(--accent);
}

/* Tag de usuário no canto */
.user-tag {
  display: flex; align-items: center; gap: var(--s-2);
  padding: var(--s-1) var(--s-3);
  border: 1px solid var(--line);
  font-family: var(--font-mono);
  font-size: 0.75rem;
  color: var(--txt-dim);
}
.user-tag .codinome { color: var(--accent); }
.status-dot {
  width: 6px; height: 6px; border-radius: 50%;
}
.status-dot.ativo { background: var(--ok); box-shadow: 0 0 4px var(--ok); }
.status-dot.silencio { background: var(--warn); }
.status-dot.comprometido { background: var(--err); }

/* Menu mobile - botão hamburger */
.menu-toggle {
  display: none;
  background: none;
  border: 1px solid var(--line);
  color: var(--txt);
  padding: var(--s-2);
  cursor: pointer;
  margin-left: auto;
  font-family: var(--font-mono);
}
.menu-toggle svg { width: 18px; height: 18px; }

/* Footer */
footer {
  margin-top: var(--s-8);
  padding: var(--s-5) 0;
  border-top: 1px solid var(--line);
  font-family: var(--font-mono);
  font-size: 0.75rem;
  color: var(--txt-faint);
  letter-spacing: 0.1em;
  text-transform: uppercase;
  text-align: center;
}

/* ============================================================================
 * 4. COMPONENTES
 * ============================================================================ */

/* ---- Botão ---- */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--s-2);
  padding: 0.7rem 1.4rem;
  background: var(--accent);
  color: var(--bg);
  border: 1px solid var(--accent);
  font-family: var(--font-mono);
  font-size: 0.82rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  cursor: pointer;
  text-decoration: none;
  transition: all var(--t-med);
  border-radius: var(--r);
  position: relative;
  overflow: hidden;
}
.btn:hover {
  filter: brightness(1.1);
  transform: translateY(-1px);
  box-shadow: var(--shadow-md);
  border-bottom: 1px solid var(--accent);
}
.btn:active { transform: translateY(0); }
.btn:disabled { opacity: 0.5; cursor: not-allowed; transform: none; }

.btn-ghost {
  background: transparent;
  color: var(--txt);
  border-color: var(--line);
}
.btn-ghost:hover {
  border-color: var(--accent);
  color: var(--accent);
  background: var(--accent-glow);
  box-shadow: none;
}

.btn-danger {
  background: var(--err);
  border-color: var(--err);
  color: var(--bg);
}
.btn-danger:hover { filter: brightness(1.1); }

.btn-sm { padding: 0.4rem 0.9rem; font-size: 0.72rem; }
.btn-lg { padding: 0.9rem 2rem; font-size: 0.9rem; }
.btn-block { display: flex; width: 100%; }

/* ---- Inputs / Form ---- */
.form-group { margin-bottom: var(--s-4); }
.form-label {
  display: block;
  font-family: var(--font-mono);
  font-size: 0.72rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--txt-dim);
  margin-bottom: var(--s-2);
}
.form-help {
  font-size: 0.78rem;
  color: var(--txt-faint);
  margin-top: var(--s-1);
  font-family: var(--font-mono);
}

input[type="text"],
input[type="email"],
input[type="password"],
input[type="number"],
input[type="search"],
input[type="datetime-local"],
input[type="date"],
input[type="url"],
select,
textarea {
  width: 100%;
  padding: 0.75rem 0.9rem;
  background: var(--bg-1);
  color: var(--txt-strong);
  border: 1px solid var(--line);
  border-radius: var(--r);
  font-family: var(--font-mono);
  font-size: 0.92rem;
  transition: border-color var(--t-fast), background var(--t-fast), box-shadow var(--t-fast);
}
input:focus, select:focus, textarea:focus {
  border-color: var(--accent);
  background: var(--bg-2);
  outline: none;
  box-shadow: 0 0 0 3px var(--accent-glow);
}
textarea {
  resize: vertical;
  min-height: 120px;
  line-height: 1.6;
}
select {
  appearance: none;
  -webkit-appearance: none;
  background-image: url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='%23c9a55b'%3e%3cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M19 9l-7 7-7-7'/%3e%3c/svg%3e");
  background-repeat: no-repeat;
  background-position: right 0.7rem center;
  background-size: 1rem;
  padding-right: 2.4rem;
}

input[type="checkbox"], input[type="radio"] {
  accent-color: var(--accent);
  width: 16px; height: 16px;
  vertical-align: middle;
  margin-right: var(--s-2);
}

.form-row {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: var(--s-4);
}

/* ---- Card ---- */
.card {
  background: var(--bg-1);
  border: 1px solid var(--line);
  padding: var(--s-5);
  border-radius: var(--r);
  position: relative;
  transition: border-color var(--t-med), transform var(--t-med);
}
.card:hover {
  border-color: var(--line);
}
.card-elev {
  background: var(--bg-2);
}
.card-link {
  cursor: pointer;
  display: block;
  color: inherit;
  text-decoration: none;
  border-bottom: 0;
}
.card-link:hover {
  border-color: var(--accent-line);
  transform: translateY(-2px);
  box-shadow: var(--shadow-md);
  border-bottom: 1px solid var(--accent-line);
}
.card-title {
  font-family: var(--font-display);
  font-size: 1.1rem;
  margin-bottom: var(--s-2);
}
.card-meta {
  font-family: var(--font-mono);
  font-size: 0.72rem;
  letter-spacing: 0.08em;
  color: var(--txt-faint);
  text-transform: uppercase;
}

/* ---- Badge ---- */
.badge {
  display: inline-block;
  padding: 0.15em 0.6em;
  font-family: var(--font-mono);
  font-size: 0.7rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  background: var(--bg-3);
  color: var(--txt);
  border: 1px solid var(--line);
  border-radius: var(--r);
  line-height: 1.4;
}
.badge-accent { color: var(--accent); border-color: var(--accent-line); background: var(--accent-glow); }
.badge-ok     { color: var(--ok);     border-color: rgba(107,189,124,0.25); background: rgba(107,189,124,0.08); }
.badge-warn   { color: var(--warn);   border-color: rgba(212,162,58,0.25);  background: rgba(212,162,58,0.08); }
.badge-err    { color: var(--err);    border-color: rgba(199,92,92,0.25);   background: rgba(199,92,92,0.08); }
.badge-info   { color: var(--info);   border-color: rgba(106,155,195,0.25); background: rgba(106,155,195,0.08); }

/* ---- Alert ---- */
.alert {
  padding: var(--s-3) var(--s-4);
  margin: var(--s-3) 0;
  border-left: 3px solid var(--line);
  background: var(--bg-1);
  font-family: var(--font-mono);
  font-size: 0.85rem;
  display: flex;
  align-items: flex-start;
  gap: var(--s-3);
  line-height: 1.5;
  animation: slideIn var(--t-slow);
}
.alert-icon {
  font-size: 1rem;
  color: inherit;
  flex-shrink: 0;
  line-height: 1.2;
}
.alert-ok    { border-color: var(--ok);    color: var(--ok);   background: rgba(107,189,124,0.06); }
.alert-warn  { border-color: var(--warn);  color: var(--warn); background: rgba(212,162,58,0.06); }
.alert-err   { border-color: var(--err);   color: var(--err);  background: rgba(199,92,92,0.06); }
.alert-info  { border-color: var(--info);  color: var(--info); background: rgba(106,155,195,0.06); }
.alert-critico { border-color: var(--err); color: var(--err); background: rgba(199,92,92,0.1); font-weight: 600; }

/* ---- Table ---- */
.tabela {
  width: 100%;
  border-collapse: collapse;
  font-family: var(--font-mono);
  font-size: 0.85rem;
  background: var(--bg-1);
  border: 1px solid var(--line);
}
.tabela th {
  text-align: left;
  padding: var(--s-3);
  background: var(--bg-2);
  color: var(--txt-dim);
  font-weight: 500;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  font-size: 0.72rem;
  border-bottom: 1px solid var(--line);
}
.tabela td {
  padding: var(--s-3);
  border-bottom: 1px solid var(--line-soft);
  color: var(--txt);
}
.tabela tr:last-child td { border-bottom: none; }
.tabela tr:hover td { background: var(--bg-2); }
.tabela-scroll { overflow-x: auto; }

/* ---- Hero / Section header ---- */
.section-header {
  margin-bottom: var(--s-5);
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  gap: var(--s-3);
  flex-wrap: wrap;
  padding-bottom: var(--s-3);
  border-bottom: 1px solid var(--line);
}
.section-header h1 {
  font-family: var(--font-display);
  font-weight: 500;
}
.kicker {
  display: block;
  font-family: var(--font-mono);
  font-size: 0.72rem;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--accent);
  margin-bottom: var(--s-2);
}

/* ---- Stats grid ---- */
.stats-grid {
  display: grid;
  gap: var(--s-3);
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  margin-bottom: var(--s-5);
}
.stat {
  background: var(--bg-1);
  border: 1px solid var(--line);
  padding: var(--s-4);
  border-left: 2px solid var(--accent);
  transition: border-color var(--t-med);
}
.stat:hover { border-left-color: var(--accent); border-color: var(--accent-line); }
.stat-label {
  font-family: var(--font-mono);
  font-size: 0.7rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--txt-dim);
  margin-bottom: var(--s-2);
}
.stat-value {
  font-family: var(--font-display);
  font-size: 1.8rem;
  color: var(--txt-strong);
  line-height: 1;
}
.stat-sub {
  font-family: var(--font-mono);
  font-size: 0.75rem;
  color: var(--txt-faint);
  margin-top: var(--s-2);
}

/* ============================================================================
 * 5. PÁGINAS
 * ============================================================================ */

/* ---- Login ---- */
.auth-layout {
  min-height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: var(--s-4);
  position: relative;
}
.auth-layout::before {
  content: "";
  position: absolute; inset: 0;
  background-image:
    linear-gradient(180deg, transparent 0%, rgba(0,0,0,0.6) 100%),
    repeating-linear-gradient(90deg,
      transparent 0,
      transparent 39px,
      rgba(201,165,91,0.04) 39px,
      rgba(201,165,91,0.04) 40px);
  pointer-events: none;
}
.auth-card {
  background: var(--bg-1);
  border: 1px solid var(--line);
  width: 100%;
  max-width: 420px;
  padding: var(--s-6);
  position: relative;
  z-index: 1;
  animation: rise 0.7s var(--easing-out);
}
.auth-card::before {
  content: "";
  position: absolute;
  top: -1px; left: -1px; right: -1px;
  height: 2px;
  background: linear-gradient(90deg, transparent 0%, var(--accent) 50%, transparent 100%);
}
.auth-ascii {
  font-family: var(--font-mono);
  font-size: 0.7rem;
  color: var(--accent);
  line-height: 1.3;
  white-space: pre;
  margin-bottom: var(--s-4);
  opacity: 0.85;
  overflow: hidden;
}
.auth-title {
  font-family: var(--font-display);
  font-size: 1.3rem;
  letter-spacing: 0.04em;
  margin-bottom: var(--s-2);
}
.auth-sub {
  font-family: var(--font-mono);
  font-size: 0.78rem;
  color: var(--txt-dim);
  margin-bottom: var(--s-5);
  line-height: 1.6;
}
.auth-aviso {
  margin-top: var(--s-5);
  padding-top: var(--s-4);
  border-top: 1px solid var(--line-soft);
  font-family: var(--font-mono);
  font-size: 0.72rem;
  color: var(--txt-faint);
  text-align: center;
  letter-spacing: 0.05em;
}
.auth-aviso a { color: var(--txt-dim); }
.auth-aviso a:hover { color: var(--accent); }

/* Login: tela cheia, fundo com efeito CRT discreto */
.scan {
  position: fixed; inset: 0;
  pointer-events: none;
  background:
    repeating-linear-gradient(
      0deg,
      transparent 0,
      transparent 2px,
      rgba(0,0,0,0.06) 2px,
      rgba(0,0,0,0.06) 3px
    );
  z-index: 0;
}

/* ---- Painel (dashboard pós-login) ---- */
.painel-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--s-5);
  margin-bottom: var(--s-5);
}
@media (min-width: 900px) {
  .painel-grid {
    grid-template-columns: 2fr 1fr;
  }
}
.painel-card-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: var(--s-4);
  padding-bottom: var(--s-3);
  border-bottom: 1px solid var(--line-soft);
}
.painel-card-title {
  font-family: var(--font-mono);
  font-size: 0.75rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--accent);
}

/* Avisos */
.aviso-item {
  padding: var(--s-3) var(--s-4);
  margin-bottom: var(--s-3);
  border-left: 3px solid;
  background: var(--bg-2);
  position: relative;
  transition: transform var(--t-med);
}
.aviso-item:hover { transform: translateX(2px); }
.aviso-item.nivel-info    { border-color: var(--info); }
.aviso-item.nivel-alerta  { border-color: var(--warn); }
.aviso-item.nivel-critico { border-color: var(--err);  background: rgba(199,92,92,0.05); }
.aviso-meta {
  font-family: var(--font-mono);
  font-size: 0.7rem;
  color: var(--txt-faint);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  margin-bottom: var(--s-1);
}
.aviso-tit { color: var(--txt-strong); font-weight: 600; margin-bottom: var(--s-1); font-family: var(--font-display); }

/* ---- Manual ---- */
.manual-shell {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--s-5);
  margin-top: var(--s-4);
}
@media (min-width: 900px) {
  .manual-shell {
    grid-template-columns: 280px 1fr;
  }
}

.manual-sidebar {
  background: var(--bg-1);
  border: 1px solid var(--line);
  padding: var(--s-4);
  position: sticky;
  top: calc(var(--nav-h) + var(--s-3));
  max-height: calc(100vh - var(--nav-h) - var(--s-5));
  overflow-y: auto;
}
.busca-wrap {
  position: relative;
  margin-bottom: var(--s-4);
}
.busca-wrap input {
  width: 100%;
  font-size: 0.85rem;
  padding-left: 2.2rem;
}
.busca-wrap svg {
  position: absolute;
  top: 50%; left: 0.7rem;
  transform: translateY(-50%);
  width: 16px; height: 16px;
  color: var(--txt-dim);
}

.tree {
  list-style: none;
  padding: 0;
  margin: 0;
}
.tree-item { margin: 0; }
.tree-link {
  display: flex;
  align-items: center;
  padding: 0.45rem var(--s-2);
  font-family: var(--font-mono);
  font-size: 0.82rem;
  color: var(--txt-dim);
  border-bottom: 0;
  transition: all var(--t-fast);
  cursor: pointer;
  user-select: none;
  border-left: 2px solid transparent;
  text-decoration: none;
}
.tree-link:hover {
  color: var(--accent);
  background: var(--bg-2);
  border-left-color: var(--accent-line);
  border-bottom: 0;
}
.tree-link.ativa {
  color: var(--accent);
  background: var(--accent-glow);
  border-left-color: var(--accent);
}
.tree-link.especial { color: var(--accent); }
.tree-icone {
  margin-right: var(--s-2);
  font-size: 0.9rem;
  min-width: 1rem;
  text-align: center;
}
.tree-toggle {
  margin-right: var(--s-1);
  width: 12px;
  display: inline-block;
  color: var(--txt-faint);
  transition: transform var(--t-fast);
}
.tree-toggle.aberto { transform: rotate(90deg); }
.tree-children {
  list-style: none;
  padding-left: var(--s-3);
  margin: 0;
  max-height: 0;
  overflow: hidden;
  transition: max-height var(--t-slow);
}
.tree-children.aberto { max-height: 800px; }
.tree-count {
  margin-left: auto;
  font-size: 0.7rem;
  color: var(--txt-faint);
  background: var(--bg-2);
  padding: 0 0.4em;
}

.manual-main {
  min-width: 0;
}

.dica-card {
  background: var(--bg-1);
  border: 1px solid var(--line);
  padding: var(--s-5);
  margin-bottom: var(--s-3);
  cursor: pointer;
  transition: all var(--t-med);
  text-decoration: none;
  display: block;
  color: inherit;
  border-bottom: 1px solid var(--line);
  position: relative;
}
.dica-card:hover {
  border-color: var(--accent-line);
  transform: translateX(2px);
  background: var(--bg-2);
}
.dica-card:hover::after {
  content: "→";
  position: absolute;
  right: var(--s-4);
  top: 50%;
  transform: translateY(-50%);
  color: var(--accent);
  font-family: var(--font-mono);
}
.dica-card-tit {
  font-family: var(--font-display);
  font-size: 1.1rem;
  margin-bottom: var(--s-2);
  color: var(--txt-strong);
}
.dica-card-resumo {
  font-size: 0.9rem;
  color: var(--txt-dim);
  line-height: 1.6;
  margin-bottom: var(--s-2);
}
.dica-card-meta {
  font-family: var(--font-mono);
  font-size: 0.7rem;
  letter-spacing: 0.08em;
  color: var(--txt-faint);
  text-transform: uppercase;
  display: flex;
  gap: var(--s-3);
  align-items: center;
}

.dica-leitura {
  background: var(--bg-1);
  border: 1px solid var(--line);
  padding: var(--s-6);
  position: relative;
  animation: rise 0.5s var(--easing-out);
}
.dica-leitura::before {
  content: "";
  position: absolute;
  top: -1px; left: -1px;
  width: 60px; height: 2px;
  background: var(--accent);
}
.dica-leitura h1 {
  margin-bottom: var(--s-3);
  font-family: var(--font-display);
  font-weight: 500;
}
.dica-leitura .conteudo {
  max-width: 70ch;
  font-size: 1.02rem;
  line-height: 1.8;
  color: var(--txt);
}
.dica-leitura .conteudo h2 {
  margin-top: var(--s-5);
  margin-bottom: var(--s-3);
  font-size: 1.4rem;
  color: var(--accent);
  font-family: var(--font-display);
}
.dica-leitura .conteudo h3 {
  margin-top: var(--s-4);
  margin-bottom: var(--s-2);
  font-size: 1.1rem;
  color: var(--txt-strong);
}
.dica-leitura .conteudo p {
  margin-bottom: var(--s-3);
}
.dica-leitura .conteudo ul,
.dica-leitura .conteudo ol {
  margin: var(--s-3) 0;
  padding-left: var(--s-5);
}
.dica-leitura .conteudo li { margin-bottom: var(--s-2); }
.dica-leitura .conteudo blockquote {
  margin: var(--s-4) 0;
  font-family: var(--font-display);
  font-style: italic;
  font-size: 1.05rem;
  color: var(--accent-soft);
}

.dica-meta-bar {
  display: flex;
  flex-wrap: wrap;
  gap: var(--s-3);
  align-items: center;
  margin-bottom: var(--s-4);
  padding-bottom: var(--s-3);
  border-bottom: 1px solid var(--line-soft);
  font-family: var(--font-mono);
  font-size: 0.75rem;
  color: var(--txt-faint);
  letter-spacing: 0.08em;
}
.dica-meta-bar a { color: var(--accent); font-size: 0.75rem; }

.dica-acoes {
  display: flex;
  gap: var(--s-2);
  margin-top: var(--s-5);
  padding-top: var(--s-4);
  border-top: 1px solid var(--line-soft);
}

/* --- Expansão inline de dicas no segmento --- */
.dica-card-cabecalho {
  cursor: pointer;
}
.dica-expand-seta {
  display: inline-block;
  width: 1rem;
  color: var(--accent);
  font-family: var(--font-mono);
  font-size: 0.75rem;
  margin-right: 0.2rem;
}
.dica-card.aberta {
  border-color: var(--accent-line);
  background: var(--bg-2);
  transform: none;
}
.dica-card.aberta:hover::after { content: ''; }
.dica-inline-corpo {
  border-top: 1px solid var(--line);
  margin-top: var(--s-4);
  padding-top: var(--s-4);
  animation: rise 0.2s var(--easing-out);
}
.dica-inline-loading {
  display: flex;
  align-items: center;
  gap: var(--s-2);
  color: var(--txt-faint);
  font-family: var(--font-mono);
  font-size: 0.8rem;
  padding: var(--s-3) 0;
}
.dica-inline-acoes {
  display: flex;
  gap: var(--s-2);
  margin-top: var(--s-4);
  padding-top: var(--s-3);
  border-top: 1px solid var(--line-soft);
}

/* ---- Chat ---- */
.chat-shell {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--s-3);
  height: calc(100vh - var(--nav-h) - var(--s-6));
  min-height: 500px;
  margin-top: var(--s-3);
}
@media (min-width: 800px) {
  .chat-shell {
    grid-template-columns: 240px 1fr;
  }
}

.chat-canais {
  background: var(--bg-1);
  border: 1px solid var(--line);
  overflow-y: auto;
  padding: var(--s-2);
}
.chat-canal-titulo {
  font-family: var(--font-mono);
  font-size: 0.7rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--txt-dim);
  padding: var(--s-3) var(--s-2) var(--s-2);
  margin: var(--s-2) 0;
  border-bottom: 1px solid var(--line-soft);
}
.canal {
  display: flex;
  align-items: center;
  padding: var(--s-2) var(--s-3);
  font-family: var(--font-mono);
  font-size: 0.85rem;
  color: var(--txt);
  border-bottom: 0;
  border-left: 2px solid transparent;
  transition: all var(--t-fast);
  cursor: pointer;
  text-decoration: none;
  margin-bottom: 2px;
}
.canal:hover {
  background: var(--bg-2);
  color: var(--txt-strong);
  border-bottom: 0;
}
.canal.ativa {
  background: var(--accent-glow);
  color: var(--accent);
  border-left-color: var(--accent);
}
.canal-icone { margin-right: var(--s-2); color: var(--txt-faint); }
.canal-nome { flex: 1; }

.chat-main {
  background: var(--bg-1);
  border: 1px solid var(--line);
  display: flex;
  flex-direction: column;
  overflow: hidden;
}
.chat-header {
  padding: var(--s-3) var(--s-4);
  border-bottom: 1px solid var(--line);
  display: flex;
  align-items: center;
  gap: var(--s-3);
  background: var(--bg-2);
}
.chat-header h2 {
  font-family: var(--font-display);
  font-size: 1rem;
  margin: 0;
}
.chat-header .desc {
  font-size: 0.8rem;
  color: var(--txt-dim);
  font-family: var(--font-mono);
}
.chat-mensagens {
  flex: 1;
  overflow-y: auto;
  padding: var(--s-4);
  display: flex;
  flex-direction: column;
  gap: var(--s-3);
}
.msg {
  display: flex;
  flex-direction: column;
  gap: var(--s-1);
  max-width: 80%;
  animation: rise 0.3s var(--easing-out);
}
.msg.self { align-self: flex-end; align-items: flex-end; }
.msg-cabecalho {
  display: flex;
  gap: var(--s-2);
  font-family: var(--font-mono);
  font-size: 0.72rem;
  letter-spacing: 0.05em;
}
.msg-cabecalho .codinome {
  color: var(--accent);
  font-weight: 600;
}
.msg-cabecalho .tempo { color: var(--txt-faint); }
.msg-bolha {
  padding: var(--s-3) var(--s-4);
  background: var(--bg-2);
  border-radius: var(--r);
  border: 1px solid var(--line);
  color: var(--txt);
  font-size: 0.92rem;
  line-height: 1.5;
  word-wrap: break-word;
  word-break: break-word;
}
.msg.self .msg-bolha {
  background: var(--accent-glow);
  border-color: var(--accent-line);
}
.msg-bolha.apagada {
  font-style: italic;
  color: var(--txt-faint);
  border-style: dashed;
}
.msg-autodestrucao {
  font-family: var(--font-mono);
  font-size: 0.7rem;
  color: var(--warn);
  text-align: right;
}
.msg-acoes {
  font-family: var(--font-mono);
  font-size: 0.7rem;
  color: var(--txt-faint);
  cursor: pointer;
}
.msg-acoes button {
  background: none;
  border: none;
  color: inherit;
  font: inherit;
  cursor: pointer;
  padding: 0;
}
.msg-acoes button:hover { color: var(--err); }

.chat-input-area {
  border-top: 1px solid var(--line);
  padding: var(--s-3) var(--s-4);
  background: var(--bg-2);
}
.chat-form {
  display: flex;
  gap: var(--s-2);
  align-items: flex-end;
}
.chat-form textarea {
  flex: 1;
  min-height: 44px;
  max-height: 160px;
  resize: none;
  font-size: 0.9rem;
  padding: 0.6rem 0.8rem;
}
.chat-toolbar {
  display: flex;
  gap: var(--s-2);
  align-items: center;
  margin-bottom: var(--s-2);
  font-family: var(--font-mono);
  font-size: 0.72rem;
  color: var(--txt-faint);
}
.chat-toolbar select {
  width: auto;
  padding: 0.3rem 1.8rem 0.3rem 0.6rem;
  font-size: 0.72rem;
}

/* ---- Cifra ---- */
.cifra-shell {
  max-width: 720px;
  margin: 0 auto;
  background: var(--bg-1);
  border: 1px solid var(--line);
  padding: var(--s-6);
}
.cifra-shell textarea {
  font-family: var(--font-mono);
  font-size: 0.95rem;
  min-height: 140px;
}
.cifra-resultado {
  background: var(--bg);
  border: 1px solid var(--accent-line);
  border-left: 2px solid var(--accent);
  padding: var(--s-4);
  margin-top: var(--s-4);
  font-family: var(--font-mono);
  font-size: 0.92rem;
  white-space: pre-wrap;
  word-break: break-all;
  min-height: 80px;
  color: var(--accent);
}

/* ---- Admin ---- */
.admin-shell {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--s-4);
}
@media (min-width: 900px) {
  .admin-shell {
    grid-template-columns: 220px 1fr;
  }
}
.admin-side {
  background: var(--bg-1);
  border: 1px solid var(--line);
  padding: var(--s-3);
  align-self: start;
}
.admin-side h3 {
  font-family: var(--font-mono);
  font-size: 0.7rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--accent);
  margin: var(--s-3) var(--s-2) var(--s-2);
}
.admin-side a {
  display: block;
  padding: var(--s-2) var(--s-3);
  font-family: var(--font-mono);
  font-size: 0.82rem;
  color: var(--txt);
  border-left: 2px solid transparent;
  border-bottom: 0;
  margin-bottom: 2px;
  transition: all var(--t-fast);
}
.admin-side a:hover {
  background: var(--bg-2);
  border-left-color: var(--accent-line);
  color: var(--accent);
  border-bottom: 0;
}
.admin-side a.ativa {
  background: var(--accent-glow);
  border-left-color: var(--accent);
  color: var(--accent);
}

/* ============================================================================
 * 6. UTILITIES
 * ============================================================================ */
.flex { display: flex; }
.flex-col { display: flex; flex-direction: column; }
.items-center { align-items: center; }
.items-start { align-items: flex-start; }
.items-end { align-items: flex-end; }
.justify-between { justify-content: space-between; }
.justify-center { justify-content: center; }
.justify-end { justify-content: flex-end; }
.gap-1 { gap: var(--s-1); }
.gap-2 { gap: var(--s-2); }
.gap-3 { gap: var(--s-3); }
.gap-4 { gap: var(--s-4); }
.gap-5 { gap: var(--s-5); }
.flex-wrap { flex-wrap: wrap; }
.flex-1 { flex: 1; }
.mt-1 { margin-top: var(--s-1); }
.mt-2 { margin-top: var(--s-2); }
.mt-3 { margin-top: var(--s-3); }
.mt-4 { margin-top: var(--s-4); }
.mt-5 { margin-top: var(--s-5); }
.mt-6 { margin-top: var(--s-6); }
.mb-1 { margin-bottom: var(--s-1); }
.mb-2 { margin-bottom: var(--s-2); }
.mb-3 { margin-bottom: var(--s-3); }
.mb-4 { margin-bottom: var(--s-4); }
.mb-5 { margin-bottom: var(--s-5); }
.text-dim { color: var(--txt-dim); }
.text-faint { color: var(--txt-faint); }
.text-accent { color: var(--accent); }
.text-err { color: var(--err); }
.text-ok { color: var(--ok); }
.text-mono { font-family: var(--font-mono); }
.text-display { font-family: var(--font-display); }
.text-sm { font-size: 0.85rem; }
.text-xs { font-size: 0.75rem; letter-spacing: 0.05em; }
.text-center { text-align: center; }
.text-right { text-align: right; }
.uppercase { text-transform: uppercase; letter-spacing: 0.1em; }
.hidden { display: none; }
.w-full { width: 100%; }
.relative { position: relative; }
.no-margin { margin: 0; }

/* ============================================================================
 * 7. ANIMAÇÕES
 * ============================================================================ */
@keyframes rise {
  from { opacity: 0; transform: translateY(8px); }
  to   { opacity: 1; transform: translateY(0); }
}
@keyframes slideIn {
  from { opacity: 0; transform: translateX(-10px); }
  to   { opacity: 1; transform: translateX(0); }
}
@keyframes fadeIn {
  from { opacity: 0; }
  to   { opacity: 1; }
}
.rise { animation: rise 0.4s var(--easing-out) both; }
.rise-delay-1 { animation: rise 0.4s var(--easing-out) 0.05s both; }
.rise-delay-2 { animation: rise 0.4s var(--easing-out) 0.10s both; }
.rise-delay-3 { animation: rise 0.4s var(--easing-out) 0.15s both; }
.rise-delay-4 { animation: rise 0.4s var(--easing-out) 0.20s both; }
.rise-delay-5 { animation: rise 0.4s var(--easing-out) 0.25s both; }

/* Reduzir movimento para quem prefere */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}

/* ============================================================================
 * 8. MOBILE
 * ============================================================================ */
@media (max-width: 768px) {
  .menu-toggle { display: inline-flex; }
  .nav-links {
    position: fixed;
    top: var(--nav-h);
    right: 0;
    bottom: 0;
    width: 80%;
    max-width: 320px;
    flex-direction: column;
    background: var(--bg-1);
    border-left: 1px solid var(--line);
    padding: var(--s-4);
    transform: translateX(100%);
    transition: transform var(--t-slow);
    margin: 0;
    align-items: stretch;
    z-index: 60;
    box-shadow: var(--shadow-lg);
  }
  .nav-links.aberto { transform: translateX(0); }
  .nav-links a {
    padding: var(--s-3);
    border-bottom: 1px solid var(--line-soft);
    text-align: left;
  }
  .nav-links a.ativa::after { display: none; }
  .nav-links a.ativa { background: var(--accent-glow); }

  .user-tag {
    margin-top: var(--s-3);
    justify-content: center;
  }

  .auth-card { padding: var(--s-5) var(--s-4); }
  .auth-ascii { font-size: 0.55rem; }

  .manual-sidebar {
    position: static;
    max-height: none;
  }
  .manual-shell { gap: var(--s-3); }

  .chat-shell {
    grid-template-columns: 1fr;
    height: calc(100vh - var(--nav-h) - var(--s-4));
  }
  .chat-canais {
    max-height: 200px;
  }
  .msg { max-width: 95%; }

  .admin-shell { grid-template-columns: 1fr; }

  .section-header { flex-direction: column; align-items: flex-start; }

  .dica-leitura { padding: var(--s-4); }

  .stats-grid { grid-template-columns: repeat(2, 1fr); }

  h1 { font-size: 1.4rem; }
}

@media (max-width: 480px) {
  :root { --nav-h: 52px; }
  .container { padding: 0 var(--s-3); }
  .stats-grid { grid-template-columns: 1fr 1fr; gap: var(--s-2); }
  .stat-value { font-size: 1.4rem; }
}

/* ---- Estilos do conteúdo markdown renderizado (manual) ---- */
.markdown h2, .markdown h3 { color: var(--accent); font-family: var(--font-display); }
.markdown ul li::marker, .markdown ol li::marker { color: var(--accent); }
.markdown strong { color: var(--txt-strong); }
.markdown code { color: var(--accent); }

/* ---- Highlight de busca ---- */
mark, .highlight {
  background: var(--accent-glow);
  color: var(--accent);
  padding: 0 0.2em;
}

/* ---- Tooltips simples ---- */
.tip { position: relative; }
.tip::after {
  content: attr(data-tip);
  position: absolute;
  bottom: calc(100% + 6px);
  left: 50%;
  transform: translateX(-50%) translateY(4px);
  background: var(--bg-3);
  color: var(--txt);
  padding: 0.3rem 0.6rem;
  font-family: var(--font-mono);
  font-size: 0.72rem;
  white-space: nowrap;
  opacity: 0;
  pointer-events: none;
  transition: all var(--t-fast);
  border: 1px solid var(--line);
  z-index: 10;
}
.tip:hover::after { opacity: 1; transform: translateX(-50%) translateY(0); }

/* ---- Inativo / desconectado overlay (idle) ---- */
.idle-overlay {
  position: fixed; inset: 0;
  background: rgba(0,0,0,0.92);
  z-index: 200;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-direction: column;
  gap: var(--s-4);
  animation: fadeIn 0.3s;
}
.idle-overlay .titulo {
  font-family: var(--font-mono);
  color: var(--accent);
  font-size: 0.9rem;
  letter-spacing: 0.2em;
  text-transform: uppercase;
}

/* ---- Erros 404 / 403 ---- */
.erro-page {
  text-align: center;
  padding: var(--s-8) var(--s-4);
  font-family: var(--font-mono);
}
.erro-page .codigo {
  font-size: 5rem;
  font-family: var(--font-display);
  color: var(--accent);
  margin-bottom: var(--s-3);
  letter-spacing: 0.1em;
}
.erro-page .msg {
  color: var(--txt-dim);
  margin-bottom: var(--s-5);
}

/* ============================================================================
 * PATCH UX (revisão pós-deploy)
 * ----------------------------------------------------------------------------
 * - x-cloak garantido (esconde elementos Alpine até inicialização)
 * - ícones SVG inline em botões
 * - estados de loading mais claros
 * - empty states elegantes
 * - toast de feedback
 * - acessibilidade
 * ============================================================================ */

/* Esconde elementos com x-cloak até o Alpine inicializar */
[x-cloak] { display: none !important; }

/* Garante que botões PRIMARY tenham conteúdo mesmo se JS quebrar */
.btn:empty::before {
  content: "→";
  font-family: var(--font-mono);
}

/* Ícone dentro de botão */
.btn-icon {
  width: 16px;
  height: 16px;
  flex-shrink: 0;
  display: inline-block;
}

/* Spinner inline para botões em loading */
.spinner {
  display: inline-block;
  width: 14px;
  height: 14px;
  border: 2px solid currentColor;
  border-right-color: transparent;
  border-radius: 50%;
  animation: spinner 0.7s linear infinite;
  flex-shrink: 0;
}
@keyframes spinner { to { transform: rotate(360deg); } }

/* Estado disabled mais visível */
.btn:disabled,
.btn[disabled] {
  opacity: 0.55;
  cursor: not-allowed;
  transform: none !important;
  box-shadow: none !important;
  filter: grayscale(0.3);
}

/* Empty state - quando não há conteúdo, instrução visual amigável */
.empty-state {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: var(--s-7) var(--s-4);
  text-align: center;
  color: var(--txt-faint);
  gap: var(--s-3);
  min-height: 200px;
}
.empty-state-icon {
  width: 48px; height: 48px;
  opacity: 0.4;
  color: var(--txt-dim);
}
.empty-state-title {
  font-family: var(--font-display);
  color: var(--txt-dim);
  font-size: 1.1rem;
}
.empty-state-text {
  font-family: var(--font-mono);
  font-size: 0.82rem;
  color: var(--txt-faint);
  max-width: 320px;
  line-height: 1.6;
}

/* Toast de feedback no canto inferior */
.toast-container {
  position: fixed;
  bottom: var(--s-4);
  right: var(--s-4);
  z-index: 100;
  display: flex;
  flex-direction: column;
  gap: var(--s-2);
  max-width: 360px;
  pointer-events: none;
}
.toast {
  background: var(--bg-2);
  border: 1px solid var(--line);
  border-left: 3px solid var(--accent);
  padding: var(--s-3) var(--s-4);
  font-family: var(--font-mono);
  font-size: 0.85rem;
  color: var(--txt);
  display: flex;
  align-items: center;
  gap: var(--s-2);
  box-shadow: var(--shadow-lg);
  pointer-events: auto;
  animation: toastIn 0.3s var(--easing-out);
  border-radius: var(--r);
}
.toast.toast-ok   { border-left-color: var(--ok); }
.toast.toast-err  { border-left-color: var(--err); }
.toast.toast-warn { border-left-color: var(--warn); }
.toast.toast-out  { animation: toastOut 0.25s var(--easing) both; }
@keyframes toastIn {
  from { opacity: 0; transform: translateX(20px); }
  to   { opacity: 1; transform: translateX(0); }
}
@keyframes toastOut {
  to { opacity: 0; transform: translateX(20px); }
}

/* Breadcrumb */
.breadcrumb {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: var(--s-2);
  font-family: var(--font-mono);
  font-size: 0.75rem;
  color: var(--txt-faint);
  margin-bottom: var(--s-3);
  letter-spacing: 0.05em;
}
.breadcrumb a {
  color: var(--txt-dim);
  border-bottom: 0;
  text-transform: uppercase;
}
.breadcrumb a:hover { color: var(--accent); }
.breadcrumb-sep { color: var(--txt-faint); opacity: 0.5; }

/* Botão "voltar ao topo" */
.scroll-top {
  position: fixed;
  bottom: var(--s-4);
  right: var(--s-4);
  width: 42px;
  height: 42px;
  border-radius: 50%;
  background: var(--bg-3);
  border: 1px solid var(--line);
  color: var(--accent);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 80;
  opacity: 0;
  pointer-events: none;
  transform: translateY(10px);
  transition: all var(--t-med);
  box-shadow: var(--shadow-md);
}
.scroll-top.visivel {
  opacity: 1;
  pointer-events: auto;
  transform: translateY(0);
}
.scroll-top:hover {
  background: var(--accent);
  color: var(--bg);
  transform: translateY(-2px);
}

/* Toggle de visibilidade de senha */
.input-com-toggle {
  position: relative;
}
.input-com-toggle input {
  padding-right: 2.4rem;
}
.input-com-toggle .toggle-btn {
  position: absolute;
  right: 0.5rem;
  top: 50%;
  transform: translateY(-50%);
  background: none;
  border: 0;
  color: var(--txt-dim);
  cursor: pointer;
  padding: 0.4rem;
  display: flex;
  align-items: center;
  border-radius: var(--r);
  transition: color var(--t-fast), background var(--t-fast);
}
.input-com-toggle .toggle-btn:hover {
  color: var(--accent);
  background: var(--bg-3);
}
.input-com-toggle .toggle-btn svg { width: 16px; height: 16px; }

/* Caps lock indicator */
.caps-lock-aviso {
  display: none;
  margin-top: var(--s-2);
  padding: 0.5rem 0.75rem;
  background: rgba(212,162,58,0.1);
  border: 1px solid rgba(212,162,58,0.3);
  border-radius: var(--r);
  color: var(--warn);
  font-family: var(--font-mono);
  font-size: 0.75rem;
  align-items: center;
  gap: var(--s-2);
}
.caps-lock-aviso.visivel { display: flex; }

/* Indicador de "digitando" no chat (visual sutil) */
.indicador-digitando {
  font-family: var(--font-mono);
  font-size: 0.7rem;
  color: var(--txt-faint);
  padding: var(--s-1) var(--s-3);
  font-style: italic;
}

/* Highlight de mensagem mais recente */
.msg.msg-nova .msg-bolha {
  animation: highlightMsg 1.2s var(--easing-out);
}
@keyframes highlightMsg {
  0%   { box-shadow: 0 0 0 0 var(--accent-glow); }
  20%  { box-shadow: 0 0 0 8px var(--accent-glow); }
  100% { box-shadow: 0 0 0 0 transparent; }
}

/* Atalhos de teclado visualizados (kbd) */
kbd {
  display: inline-block;
  padding: 0.1em 0.45em;
  font-family: var(--font-mono);
  font-size: 0.7rem;
  color: var(--txt-dim);
  background: var(--bg-3);
  border: 1px solid var(--line);
  border-bottom-width: 2px;
  border-radius: 3px;
  line-height: 1.4;
  vertical-align: middle;
}

/* Card de "primeiros passos" no painel */
.dica-uso {
  background: linear-gradient(135deg, var(--accent-glow) 0%, transparent 100%);
  border: 1px solid var(--accent-line);
  padding: var(--s-4);
  border-radius: var(--r);
  display: flex;
  gap: var(--s-3);
  align-items: flex-start;
  margin-bottom: var(--s-4);
}
.dica-uso-icone {
  color: var(--accent);
  flex-shrink: 0;
  margin-top: 2px;
}
.dica-uso-conteudo h3 {
  font-family: var(--font-mono);
  font-size: 0.78rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--accent);
  margin: 0 0 var(--s-2) 0;
}
.dica-uso-conteudo p {
  font-size: 0.85rem;
  color: var(--txt);
  margin: 0;
  line-height: 1.6;
}
.dica-uso-dismiss {
  background: none;
  border: 0;
  color: var(--txt-faint);
  cursor: pointer;
  padding: 4px;
  margin-left: auto;
  font-family: var(--font-mono);
  font-size: 0.7rem;
  align-self: flex-start;
}
.dica-uso-dismiss:hover { color: var(--accent); }

/* Skip link para acessibilidade */
.skip-to-content {
  position: absolute;
  left: -9999px;
  top: 0;
  background: var(--accent);
  color: var(--bg);
  padding: var(--s-3) var(--s-4);
  font-family: var(--font-mono);
  font-size: 0.85rem;
  z-index: 999;
  text-decoration: none;
}
.skip-to-content:focus {
  left: 0;
  top: 0;
}

/* Foco visível mais elegante */
button:focus-visible,
a:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 3px;
  border-radius: var(--r);
}

/* Linha de "digitando" no chat input (caret pisca animado) */
.chat-form textarea:focus {
  border-color: var(--accent);
  background: var(--bg);
}

/* Contador de caracteres no textarea */
.char-counter {
  font-family: var(--font-mono);
  font-size: 0.7rem;
  color: var(--txt-faint);
  text-align: right;
  margin-top: var(--s-1);
}
.char-counter.warn { color: var(--warn); }
.char-counter.err  { color: var(--err); }

/* Sumário (índice) de uma dica longa */
.tdc {
  background: var(--bg-2);
  border-left: 2px solid var(--accent);
  padding: var(--s-3) var(--s-4);
  margin: var(--s-4) 0;
  font-family: var(--font-mono);
}
.tdc-titulo {
  font-size: 0.7rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--accent);
  margin-bottom: var(--s-2);
}
.tdc ul {
  list-style: none;
  padding: 0;
  margin: 0;
  font-size: 0.85rem;
}
.tdc li { margin: 0.3em 0; }
.tdc a { color: var(--txt); border-bottom: 0; }
.tdc a:hover { color: var(--accent); }

/* ============================================================================
 * >>> EXTREME MAKEOVER v2 — dark tático modernizado (mobile-first)  [MK2-START]
 * Camada de sobreposição: NÃO remove nada acima; só moderniza e adiciona.
 * Mantém todas as classes existentes. Adiciona: tab bar inferior, chips,
 * cards mais tácteis, toque maior, fluidez. Ajusta o manual para celular.
 * ========================================================================== */

/* --- Tokens re-tunados (vencem por vir depois na cascata) --- */
:root{
  --r:        9px;
  --r-md:     14px;
  --r-lg:     20px;
  --r-pill:   999px;
  --accent-glow: rgba(201,165,91,.16);
  --accent-line: rgba(201,165,91,.34);
  --shadow-sm: 0 1px 2px rgba(0,0,0,.4);
  --shadow-md: 0 8px 24px rgba(0,0,0,.42);
  --shadow-lg: 0 22px 60px rgba(0,0,0,.6);
  --tab-h:    66px;
  --t-fast:   130ms cubic-bezier(.2,.7,.2,1);
  --t-med:    230ms cubic-bezier(.2,.7,.2,1);
  --t-slow:   400ms cubic-bezier(.16,1,.3,1);
}

/* atenua scanlines para um ar mais limpo/app-like */
.scan{opacity:.35 !important}

body{ -webkit-tap-highlight-color:transparent; }

/* respiro para a tab bar no mobile */
@media (max-width:879px){
  main{ padding-bottom: calc(var(--tab-h) + env(safe-area-inset-bottom,0) + 12px) !important; }
}

/* ---------------------------------------------------------------------------
 * TOPBAR — mais limpa, vidro, marca maior
 * ------------------------------------------------------------------------- */
.topbar{
  background:rgba(11,11,13,.82) !important;
  backdrop-filter:blur(16px) saturate(1.25);
  -webkit-backdrop-filter:blur(16px) saturate(1.25);
  border-bottom:1px solid var(--line-soft);
}
.brand{ gap:.55rem; font-weight:600; letter-spacing:.14em; }
.brand-dot{ box-shadow:0 0 0 4px var(--accent-glow); }
.menu-toggle{ border-radius:var(--r); }

/* ---------------------------------------------------------------------------
 * BOTÕES — toque maior, primário em destaque, feedback ao tocar
 * ------------------------------------------------------------------------- */
.btn{
  border-radius:var(--r-pill);
  min-height:44px; padding:.6rem 1.15rem;
  font-weight:600; letter-spacing:.01em;
  transition:transform var(--t-fast), background var(--t-med), border-color var(--t-med), box-shadow var(--t-med);
}
.btn:active{ transform:scale(.96); }
.btn:not(.btn-ghost):not(.btn-danger){
  background:linear-gradient(180deg,var(--accent),var(--accent-soft));
  color:#0b0b0d; border:1px solid transparent;
  box-shadow:0 6px 18px rgba(201,165,91,.26);
}
.btn:not(.btn-ghost):not(.btn-danger):hover{ filter:brightness(1.06); }
.btn-ghost{ border-radius:var(--r-pill); border:1px solid var(--line); background:var(--bg-2); color:var(--txt); }
.btn-ghost:hover{ border-color:var(--accent-line); color:var(--txt-strong); }
.btn-sm{ min-height:36px; padding:.4rem .85rem; }
.btn-lg{ min-height:52px; padding:.8rem 1.5rem; font-size:1.02rem; }
.btn-block{ width:100%; justify-content:center; }
.btn-danger{ border-radius:var(--r-pill); }

/* ---------------------------------------------------------------------------
 * CARDS — arredondados, tácteis, com leve elevação ao tocar
 * ------------------------------------------------------------------------- */
.card, .card-elev, .auth-card, .stat, .painel-card, .cifra-resultado,
.dica-leitura{
  border-radius:var(--r-md);
}
.card{ background:linear-gradient(180deg,var(--bg-1),var(--bg-1)); border:1px solid var(--line); }
.card-link{ transition:transform var(--t-med), border-color var(--t-med), box-shadow var(--t-med); position:relative; }
.card-link:hover{ transform:translateY(-2px); border-color:var(--accent-line); box-shadow:var(--shadow-md); }
.card-link:active{ transform:scale(.99); }
.card-link::after{
  content:"›"; position:absolute; top:14px; right:16px; color:var(--accent);
  font-size:1.3rem; opacity:.5; transition:transform var(--t-med),opacity var(--t-med);
}
.card-link:hover::after{ transform:translateX(3px); opacity:1; }
.card-title{ font-weight:600; }

/* ---------------------------------------------------------------------------
 * INPUTS / BUSCA — pílula com brilho ao focar, alvo grande
 * ------------------------------------------------------------------------- */
input, textarea, select{ border-radius:var(--r) !important; }
.busca-wrap{
  border-radius:var(--r-pill); background:var(--bg-2); border:1px solid var(--line);
  padding:.1rem .35rem .1rem .9rem; transition:border-color var(--t-med), box-shadow var(--t-med);
}
.busca-wrap:focus-within{ border-color:var(--accent-line); box-shadow:0 0 0 3px var(--accent-glow); }
.busca-wrap input{ min-height:42px; border:0 !important; background:transparent; }

/* ---------------------------------------------------------------------------
 * BADGES / CHIPS
 * ------------------------------------------------------------------------- */
.badge{ border-radius:var(--r-pill); padding:.18rem .6rem; }
.chip-row{ display:flex; gap:.5rem; overflow-x:auto; padding:.25rem 0 .6rem; scrollbar-width:none; }
.chip-row::-webkit-scrollbar{ display:none; }
.chip{
  flex:0 0 auto; font-family:var(--font-mono); font-size:.76rem; color:var(--txt-dim);
  background:var(--bg-2); border:1px solid var(--line); border-radius:var(--r-pill);
  padding:.5rem .95rem; cursor:pointer; white-space:nowrap; transition:all var(--t-med); user-select:none;
}
.chip:active{ transform:scale(.95); }
.chip.on{ color:#0b0b0d; background:var(--accent); border-color:var(--accent); font-weight:600; box-shadow:0 4px 14px rgba(201,165,91,.28); }

/* ---------------------------------------------------------------------------
 * MANUAL — no celular vira app de cards; árvore só no desktop
 * ------------------------------------------------------------------------- */
.dica-card{
  border-radius:var(--r-md); border:1px solid var(--line);
  background:linear-gradient(180deg,var(--bg-1),var(--bg-1));
  transition:border-color var(--t-med), box-shadow var(--t-med), transform var(--t-slow);
  overflow:hidden;
}
.dica-card:hover{ border-color:var(--accent-line); }
.dica-card.aberta{ border-color:var(--accent-line); box-shadow:var(--shadow-md); }
.dica-card-cabecalho{ padding:1rem 1.1rem; cursor:pointer; }
.dica-card-tit{ font-weight:600; gap:.5rem; }
.dica-expand-seta{ color:var(--accent); transition:transform var(--t-slow); }
.dica-card.aberta .dica-expand-seta{ transform:rotate(0deg); }
.dica-meta-bar{ flex-wrap:wrap; gap:.5rem; }
.breadcrumb{ flex-wrap:wrap; gap:.35rem; }
.breadcrumb a{
  background:var(--bg-2); border:1px solid var(--line-soft); border-radius:var(--r-pill);
  padding:.2rem .7rem; text-decoration:none;
}
.tree-link{ border-radius:var(--r); min-height:40px; }
.tree-link.ativa{ background:var(--accent-glow); border-left:2px solid var(--accent); }

@media (max-width:879px){
  /* esconde a árvore lateral; navegação vira cards + busca + breadcrumb */
  .manual-sidebar{ display:none !important; }
  .manual-shell{ display:block !important; }
  .manual-main{ width:100% !important; }
  .section-header{ flex-direction:column; align-items:flex-start; gap:.75rem; }
  .section-header .busca-wrap{ max-width:none !important; }
}

/* ---------------------------------------------------------------------------
 * CHAT — bolhas modernas, barra de envio fixa e confortável
 * ------------------------------------------------------------------------- */
.msg-bolha{ border-radius:16px; }
.msg.self .msg-bolha, .msg .self{ border-radius:16px; }
.chat-input-area{ border-radius:var(--r-md); }
.chat-form input, .chat-form textarea{ border-radius:var(--r-pill) !important; min-height:44px; }

/* ---------------------------------------------------------------------------
 * PAINEL — cards de status com leve brilho
 * ------------------------------------------------------------------------- */
.stat{ border-radius:var(--r-md); border:1px solid var(--line); transition:transform var(--t-med),border-color var(--t-med); }
.stat:hover{ transform:translateY(-2px); border-color:var(--accent-line); }
.stat-value{ font-weight:600; }

/* ---------------------------------------------------------------------------
 * ALERTAS / TOASTS / EMPTY
 * ------------------------------------------------------------------------- */
.alert{ border-radius:var(--r-md); }
.toast{ border-radius:var(--r-md); box-shadow:var(--shadow-md); }
.empty-state{ border-radius:var(--r-md); }

/* ---------------------------------------------------------------------------
 * ADMIN — mesma linguagem visual
 * ------------------------------------------------------------------------- */
.admin-side{ border-radius:0; }
.admin-side a{ border-radius:var(--r); min-height:42px; display:flex; align-items:center; }
.admin-side a.ativo, .admin-side a.ativa{ background:var(--accent-glow); color:var(--accent); }
.tabela{ border-radius:var(--r-md); overflow:hidden; }
@media (max-width:879px){
  .admin-shell{ display:block !important; }
  .admin-side{ position:sticky; top:var(--nav-h); z-index:5; display:flex; gap:.4rem; overflow-x:auto; padding:.5rem; }
  .admin-side a{ flex:0 0 auto; white-space:nowrap; }
}

/* ---------------------------------------------------------------------------
 * TAB BAR INFERIOR — navegação principal no celular
 * ------------------------------------------------------------------------- */
.tabbar{
  position:fixed; left:0; right:0; bottom:0; z-index:80;
  height:calc(var(--tab-h) + env(safe-area-inset-bottom,0));
  padding-bottom:env(safe-area-inset-bottom,0);
  display:flex; align-items:stretch;
  background:rgba(13,13,16,.9);
  backdrop-filter:blur(18px) saturate(1.3); -webkit-backdrop-filter:blur(18px) saturate(1.3);
  border-top:1px solid var(--line);
}
.tabbar a{
  flex:1; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:3px;
  color:var(--txt-faint); text-decoration:none; font-family:var(--font-mono);
  font-size:.62rem; letter-spacing:.04em; transition:color var(--t-med); position:relative;
}
.tabbar a svg{ width:23px; height:23px; stroke-width:1.9; transition:transform var(--t-med); }
.tabbar a:active svg{ transform:scale(.86); }
.tabbar a.ativo{ color:var(--accent); }
.tabbar a.ativo::before{
  content:""; position:absolute; top:0; width:26px; height:3px; border-radius:0 0 3px 3px;
  background:var(--accent); box-shadow:0 0 12px var(--accent-glow);
}
.tabbar a.ativo svg{ transform:translateY(-1px); }
.tabbar .tb-badge{
  position:absolute; top:8px; right:calc(50% - 20px); min-width:8px; height:8px;
  background:var(--err); border-radius:50%;
}
.tabbar{ display:none; }
@media (max-width:879px){ .tabbar{ display:flex; } }

/* esconde a tab bar quando o teclado/scroll do chat precisa (input fixo) — opcional */

/* [MK2-END] */

/* ============================================================================
 * >>> MAKEOVER v3 — correções de layout (chat, manual, polish)  [MK3-START]
 * ========================================================================== */

/* --- CHAT: parar de forçar 100vh (cortava o título e escondia a mensagem) --- */
.chat-shell{
  height:auto !important;
  min-height:0 !important;
}
.chat-main{ min-height:auto; }
.chat-mensagens{
  min-height:300px;
  max-height:56vh;
}
@media (max-width:879px){
  .chat-mensagens{ max-height:50vh; }
  /* área de mensagens nunca fica atrás da tab bar */
  .chat-input-area{ margin-bottom:4px; }
}
/* cabeçalho da seção: nada de corte no topo */
main{ overflow:visible; }
.section-header{ align-items:flex-start; }
.section-header h1{ line-height:1.12; }
.section-header > div{ min-width:0; }

/* --- CARDS: a seta não encosta no título --- */
.card-link .card-title{ padding-right:26px; }

/* --- INTRO "como usar": mais leve, menos gritante --- */
.dica-uso{ border-radius:var(--r-md); background:linear-gradient(180deg,var(--bg-1),var(--bg-1)); }

/* --- MANUAL no desktop: respiro entre árvore e conteúdo --- */
@media (min-width:880px){
  .manual-shell{ gap:var(--s-5); }
}

/* --- BUSCA do topo do manual: ocupa melhor o espaço no desktop --- */
@media (min-width:880px){
  .section-header .busca-wrap{ min-width:260px; }
}

/* --- CANAIS do chat: cartão arredondado coerente --- */
.chat-canais{ border-radius:var(--r-md); }
.chat-main{ border-radius:var(--r-md); }
.canal{ border-radius:var(--r); margin-bottom:3px; }

/* [MK3-END] */

/* ============================================================================
 * >>> MAKEOVER v4 — correções de MOBILE (chat + menu)  [MK4-START]
 * ========================================================================== */
@media (max-width:879px){

  /* ---------- MENU hambúrguer: painel OPACO com fundo escurecido ---------- */
  .menu-toggle{ display:inline-flex !important; }
  .nav-links{
    position:fixed; top:var(--nav-h); right:0; bottom:0;
    width:84%; max-width:330px;
    flex-direction:column; align-items:stretch; gap:2px;
    background:var(--bg-1); border-left:1px solid var(--line);
    padding:var(--s-4); margin:0;
    transform:translateX(105%); transition:transform var(--t-slow);
    z-index:120; overflow-y:auto;
  }
  .nav-links.aberto{
    transform:translateX(0);
    /* a 2ª sombra (100vmax) vira um "backdrop" que escurece todo o resto */
    box-shadow:-14px 0 44px rgba(0,0,0,.55), 0 0 0 100vmax rgba(0,0,0,.6);
  }
  .nav-links a{
    padding:var(--s-3); border-bottom:1px solid var(--line-soft);
    text-align:left; border-radius:var(--r);
  }
  .nav-links a.ativa{ background:var(--accent-glow); }
  .nav-links .user-tag{ justify-content:flex-start; margin-top:var(--s-3); }

  /* ---------- CHAT mobile: layout TRAVADO ---------- */
  .chat-shell{
    display:flex !important; flex-direction:column;
    height:auto !important; min-height:0 !important;
    gap:var(--s-2); margin-top:var(--s-2);
  }
  /* canais viram uma faixa de "chips" rolável no topo */
  .chat-canais{
    display:flex; gap:8px; align-items:center;
    overflow-x:auto; overflow-y:hidden; max-height:none;
    padding:8px; -webkit-overflow-scrolling:touch; scrollbar-width:none;
    border-radius:var(--r-md);
  }
  .chat-canais::-webkit-scrollbar{ display:none; }
  .chat-canal-titulo{ display:none; }
  .canal{
    flex:0 0 auto; white-space:nowrap; margin:0;
    border:1px solid var(--line); border-left:1px solid var(--line);
    border-radius:var(--pill); padding:8px 14px;
  }
  .canal.ativa{ border-color:var(--accent); }

  .chat-main{ height:auto; min-height:0; }
  /* área de mensagens com altura fixa = previsível, sem cortar nem flutuar */
  .chat-mensagens{
    flex:none;
    height:52vh; max-height:52vh; min-height:240px;
    overflow-y:auto; overflow-x:hidden;
  }
  .msg{ max-width:90%; }
  .chat-input-area{ position:relative; }
  /* select de auto-destruição não estoura a largura */
  .chat-toolbar{ flex-wrap:wrap; gap:6px; }
}

/* [MK4-END] */

/* ============================================================================
 * >>> MAKEOVER v5 — CHAT cabe na tela (input sempre visível)  [MK5-START]
 * O chat passa a ter altura = tela inteira menos topo/cabeçalho.
 * Mensagens rolam no meio; o campo de envio fica fixo embaixo, sem sair da tela.
 * ========================================================================== */

/* desktop / geral */
.chat-shell{
  height: calc(100vh - var(--nav-h) - 160px);
  height: calc(100dvh - var(--nav-h) - 160px);
  min-height: 380px !important;
  margin-top: var(--s-3);
}
.chat-main{
  height: 100%;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}
.chat-header{ flex: 0 0 auto; }
.chat-mensagens{
  flex: 1 1 auto;
  min-height: 0 !important;
  max-height: none !important;
  height: auto !important;
  overflow-y: auto;
  overflow-x: hidden;
}
.chat-input-area{ flex: 0 0 auto; }
.chat-canais{ overflow-y: auto; }

/* encolhe um pouco o cabeçalho "Chat" na página de chat p/ sobrar tela */
.section-header.rise + .chat-shell { margin-top: var(--s-2); }

/* mobile: desconta a barra inferior e os chips de canais */
@media (max-width:879px){
  .chat-shell{
    height: calc(100vh - var(--nav-h) - var(--tab-h) - 140px);
    height: calc(100dvh - var(--nav-h) - var(--tab-h) - 140px);
    min-height: 60vh !important;
    display: flex !important;
    flex-direction: column;
  }
  .chat-canais{ flex: 0 0 auto; }
  .chat-main{ flex: 1 1 auto; min-height: 0; }
  .chat-mensagens{ flex: 1 1 auto; height: auto !important; max-height: none !important; }
}

/* [MK5-END] */
