/* ══════════════════════════════════════════════════════════════
   Portal do Aluno — otPokémon
   Design tokens + layout LMS. Tema escuro com acentos vermelho/âmbar
   (identidade Pokémon), tipografia legível e cartões arejados.
═══════════════════════════════════════════════════════════════ */

:root {
  /* ── Superfícies (Pokédex após o expediente: azul-meia-noite) ── */
  --bg:        #0a0f1e;
  --bg-2:      #111a30;
  --panel:     #16203a;
  --panel-2:   #1e2b49;
  --border:    #2b3a63;
  --text:      #eaf0fb;
  --muted:     #94a3c6;
  /* Aliases compartilhados: evitam módulos com texto preto ou fundo inválido. */
  --fg:        var(--text);
  --surface:   var(--panel);
  --card:      var(--panel);
  --danger:    #e3350d;
  --font-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;

  /* ── Identidade Pokémon ──────────────────────────────────── */
  --brand:     #ee1515;   /* vermelho Pokébola / logo */
  --brand-2:   #ff5c3a;
  --brand-ink: #7a1204;   /* sombra profunda do vermelho */
  --accent:    #ffcb05;   /* amarelo Pikachu / logo */
  --accent-2:  #ffe27a;
  --royal:     #3b4cca;   /* azul do logotipo Pokémon */
  --lens:      #7fd7ff;   /* ciano da lente do Pokédex */

  --topic:     #4f8cff;
  --call:      #21c07a;
  --deadline:  #ff8a3d;

  /* ── Paleta dos 18 tipos (badges, acentos, decoração) ────── */
  --t-normal:#9aa0aa; --t-fire:#ff9d55;  --t-water:#4d90d5;  --t-grass:#63bc5a;
  --t-electric:#f4d23c; --t-ice:#73cec0; --t-fighting:#ce4266; --t-poison:#ab6ac8;
  --t-ground:#d97845; --t-flying:#8fa9de; --t-psychic:#fa7179; --t-bug:#90c12c;
  --t-rock:#c7b78b; --t-ghost:#5269ac;   --t-dragon:#0a6dc4;  --t-dark:#595366;
  --t-steel:#5a8ea1; --t-fairy:#ec8fe6;

  --radius:    16px;
  --radius-sm: 11px;
  --shadow:    0 10px 26px rgba(3, 7, 18, .38);
  --shadow-sm: 0 4px 12px rgba(3, 7, 18, .30);
  --ring:      0 0 0 3px rgba(255, 203, 5, .28);

  /* ── Tipografia ──────────────────────────────────────────── */
  --font:         "Nunito", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  --font-display: "Baloo 2", "Nunito", system-ui, sans-serif;
  --font-pixel: "Press Start 2P", "Baloo 2", system-ui, sans-serif; /* estilo Fire Red (só na batalha) */
  --font-pixel:   "Press Start 2P", ui-monospace, Menlo, Consolas, monospace;

  /* ── Escala de spacing (base 4px) — usar no lugar de valores soltos ── */
  --sp-1: .25rem;  --sp-2: .5rem;  --sp-3: .75rem;
  --sp-4: 1rem;    --sp-5: 1.5rem; --sp-6: 2rem;
  --gap-tight: var(--sp-2);   /* dentro de um card */
  --gap-md:    var(--sp-3);   /* entre elementos irmãos */
  --gap-loose: var(--sp-5);   /* entre blocos/seções */
  --card-pad:  1.15rem 1.3rem;

  /* ── Escala tipográfica (6 tamanhos nominais) ────────────── */
  --fs-h1: 1.6rem;  --fs-h2: 1.3rem;  --fs-h3: 1.1rem;
  --fs-body: 1rem;  --fs-sm: .85rem;  --fs-xs: .72rem;

  /* ── Durações de transição (padronizadas em 3 níveis) ────── */
  --dur-fast: .09s;  --dur: .2s;  --dur-slow: .4s;
}

/* ── Participação da equipe de mentoria ───────────────────── */
.mentor-rewards-panel {
  position: relative;
  overflow: hidden;
  margin: 1rem 0 1.15rem;
  padding: 1.05rem;
  border: 1px solid rgba(105, 180, 255, .32);
  border-radius: 22px;
  background: linear-gradient(135deg, rgba(20, 48, 91, .96), rgba(29, 31, 69, .96) 58%, rgba(80, 36, 64, .94));
  box-shadow: 0 16px 38px rgba(0, 0, 0, .16), inset 0 1px 0 rgba(255,255,255,.08);
}
.mentor-rewards-panel::after { content: '⚡'; position: absolute; right: 1.4rem; top: .7rem; font-size: 3.8rem; opacity: .09; transform: rotate(-12deg); pointer-events: none; }
.mentor-rewards-head, .mentor-rewards-stat-grid, .mentor-rewards-columns { position: relative; z-index: 1; }
.mentor-rewards-head { display:flex; align-items:flex-start; justify-content:space-between; gap:1rem; margin-bottom:.9rem; }
.mentor-rewards-title h2 { margin:.12rem 0 .2rem; font-size:clamp(1.2rem, 2.5vw, 1.65rem); }
.mentor-rewards-title p { margin:0; }
.mentor-rewards-level { display:grid; gap:.12rem; min-width:105px; padding:.58rem .75rem; border:1px solid rgba(255,255,255,.18); border-radius:14px; background:rgba(5,13,31,.24); text-align:right; }
.mentor-rewards-level span { color:#a8d8ff; font-size:.7rem; font-weight:800; text-transform:uppercase; letter-spacing:.08em; }
.mentor-rewards-level strong { color:#fff4a8; font-size:1.05rem; }
.mentor-rewards-stat-grid { display:grid; grid-template-columns:repeat(3, minmax(0,1fr)); gap:.65rem; }
.mentor-rewards-stat { display:grid; gap:.18rem; min-width:0; padding:.72rem .8rem; border:1px solid rgba(255,255,255,.16); border-radius:15px; background:rgba(4,14,35,.3); }
.mentor-rewards-stat span { color:#c5d5f2; font-size:.75rem; font-weight:800; }
.mentor-rewards-stat strong { color:#fff; font-size:1.3rem; line-height:1.05; }
.mentor-rewards-stat small { color:#9fb2d5; font-size:.7rem; }
.mentor-rewards-stat.xp strong { color:#8dd5ff; }
.mentor-rewards-stat.coins strong { color:#ffe178; }
.mentor-rewards-stat.actions strong { color:#b7f5c6; }
.mentor-rewards-columns { display:grid; grid-template-columns:1fr 1.1fr 1fr; gap:.65rem; margin-top:.65rem; }
.mentor-rewards-block { min-width:0; padding:.75rem; border:1px solid rgba(255,255,255,.14); border-radius:15px; background:rgba(4,14,35,.25); }
.mentor-rewards-block-title { display:flex; align-items:center; justify-content:space-between; gap:.5rem; margin-bottom:.55rem; color:#ecf4ff; font-size:.86rem; }
.mentor-rewards-block-title > span { color:#a9bfdf; font-size:.7rem; }
.mentor-rewards-meter + .mentor-rewards-meter { margin-top:.65rem; }
.mentor-reward-meter-top { display:flex; justify-content:space-between; gap:.5rem; color:#afc2df; font-size:.72rem; }
.mentor-reward-meter-top strong { color:#f5f8ff; }
.mentor-reward-meter-track { height:7px; overflow:hidden; margin-top:.32rem; border-radius:999px; background:rgba(255,255,255,.1); }
.mentor-reward-meter-track span { display:block; height:100%; border-radius:inherit; background:#74c9ff; }
.mentor-reward-meter.tone-gold .mentor-reward-meter-track span { background:#ffd65a; }
.mentor-rewards-steps { display:grid; gap:.35rem; }
.mentor-reward-step { display:grid; grid-template-columns:1.1rem minmax(0,1fr) auto; align-items:center; gap:.35rem; color:#c3d1e8; font-size:.76rem; }
.mentor-reward-step strong { color:#a9bfdf; font-size:.72rem; }
.mentor-reward-step.is-done { color:#caffd7; }
.mentor-reward-step.is-done strong { color:#9bf2b5; }
.mentor-reward-step-icon { color:#7692bc; font-weight:900; }
.mentor-reward-step.is-done .mentor-reward-step-icon { color:#8ef0b1; }
.mentor-rewards-rank { display:grid; grid-template-columns:auto minmax(0,1fr) auto; align-items:center; gap:.42rem; padding:.32rem .38rem; border-radius:8px; color:#c5d5ec; font-size:.74rem; }
.mentor-reward-rank + .mentor-reward-rank { margin-top:.2rem; }
.mentor-reward-rank.is-me { background:rgba(255,214,84,.12); color:#fff2a6; }
.mentor-reward-rank-pos { color:#8fa9d3; font-weight:900; }
.mentor-reward-rank-name { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.mentor-rewards-loading, .mentor-rewards-error { color:#b7c8e5; font-size:.83rem; }
.admin-reward-ranking { display:grid; gap:.35rem; margin-bottom:.8rem; }
.admin-reward-row { display:flex; justify-content:space-between; gap:.7rem; padding:.55rem .65rem; border:1px solid var(--border); border-radius:10px; background:rgba(255,255,255,.035); color:var(--text); font-size:.78rem; }
.admin-reward-row span { color:var(--muted); text-align:right; }
.admin-reward-rules { display:grid; gap:.4rem; max-height:42vh; overflow:auto; }
.admin-reward-rule { display:grid; grid-template-columns:minmax(0,1fr) 75px 75px auto; align-items:center; gap:.4rem; padding:.35rem 0; color:var(--text); font-size:.77rem; }
.admin-reward-input { width:100%; min-width:0; }
@media (max-width: 820px) {
  .mentor-rewards-columns { grid-template-columns:1fr 1fr; }
  .mentor-rewards-ranking { grid-column:1 / -1; }
}
@media (max-width: 520px) {
  .mentor-rewards-panel { margin:.75rem 0 1rem; padding:.82rem; border-radius:18px; }
  .mentor-rewards-head { align-items:stretch; flex-direction:column; gap:.6rem; }
  .mentor-rewards-level { text-align:left; }
  .mentor-rewards-stat-grid, .mentor-rewards-columns { grid-template-columns:1fr; }
  .mentor-rewards-ranking { grid-column:auto; }
  .admin-reward-row { align-items:flex-start; flex-direction:column; }
  .admin-reward-row span { text-align:left; }
  .admin-reward-rule { grid-template-columns:1fr 1fr; }
  .admin-reward-rule span { grid-column:1 / -1; }
}

* { box-sizing: border-box; }

/* #136 Tamanho de fonte ajustável: escala o rem (html) e a base do body. */
html { font-size: calc(100% * var(--font-scale, 1)); }

body {
  margin: 0;
  font-family: var(--font);
  font-size: calc(15.5px * var(--font-scale, 1));
  background:
    radial-gradient(1100px 560px at 82% -12%, rgba(59, 76, 202, .28) 0, transparent 60%),
    radial-gradient(900px 520px at -10% 8%, rgba(238, 21, 21, .14) 0, transparent 55%),
    var(--bg);
  background-attachment: fixed;
  color: var(--text);
  min-height: 100vh;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}
/* Touch/telas pequenas: background-attachment: fixed causa MUITO repaint
   (rolagem travada). Fixamos o gradiente atrás e deixamos o body rolar liso. */
@media (hover: none), (max-width: 820px) {
  body { background-attachment: scroll; }
}

/* Títulos com a fonte display arredondada (cara de jogo Pokémon). */
h1, h2, h3, h4,
.brand h1, .section-head h2, .progress-card h2, .xp-info h2 {
  font-family: var(--font-display);
  letter-spacing: .01em;
}

.hidden { display: none !important; }
.muted  { color: var(--muted); }
.small  { font-size: .85rem; }
.eyebrow {
  text-transform: uppercase;
  letter-spacing: .08em;
  font-size: .72rem;
  font-weight: 700;
  color: var(--accent);
}

/* ── Botões ─────────────────────────────────────────────── */
.btn {
  font-family: inherit;
  font-size: .9rem;
  font-weight: 700;
  border: 1px solid transparent;
  border-radius: 12px;
  padding: .6rem 1.1rem;
  cursor: pointer;
  letter-spacing: .01em;
  transition: transform .08s ease, box-shadow .2s ease, background .2s, border-color .2s, filter .2s;
}
.btn:active { transform: translateY(1px); }
.btn:focus-visible { outline: 3px solid rgba(255, 203, 5, .55); outline-offset: 2px; }
.btn-primary {
  background: linear-gradient(180deg, var(--brand-2), var(--brand));
  color: #fff;
  box-shadow: 0 4px 14px rgba(227, 53, 13, .32), inset 0 1px 0 rgba(255, 255, 255, .22);
}
.btn-primary:hover {
  filter: brightness(1.06); transform: translateY(-1px);
  box-shadow: 0 7px 20px rgba(227, 53, 13, .42), inset 0 1px 0 rgba(255, 255, 255, .28);
}
.btn-ghost { background: transparent; color: var(--text); border-color: var(--border); }
.btn-ghost:hover { border-color: var(--brand); background: var(--panel-2); transform: translateY(-1px); }
.btn-block { width: 100%; margin-top: .4rem; }

/* ── Card base reutilizável ──────────────────────────────────
   Padrão compartilhado por progress-card, day-card, poll-card,
   activity-card, exercise-card, ann-card etc. Componha com `card`
   e sobrescreva só o que difere. */
.card {
  background: var(--panel);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: var(--card-pad);
}
.card.pad-lg { padding: 1.3rem 1.5rem; }
.card.flow   { display: flex; flex-direction: column; gap: var(--gap-tight); }

/* Parágrafo de introdução logo abaixo de um .section-head (aproxima do título
   sem depender de margem negativa inline). */
.section-intro { margin: -.4rem 0 var(--gap-md); }

/* ══ LOGIN ═════════════════════════════════════════════════ */
.login-view {
  min-height: 100vh;
  display: grid;
  place-items: center;
  padding: 1.5rem;
}
.login-card {
  width: 100%;
  max-width: 400px;
  background: linear-gradient(180deg, var(--panel), var(--bg-2));
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 2rem;
  box-shadow: var(--shadow);
}
.brand { display: flex; align-items: center; gap: .9rem; margin-bottom: 1.6rem; }
.brand h1 { font-size: 1.35rem; margin: 0; }
.brand-sub { margin: .15rem 0 0; color: var(--muted); font-size: .82rem; }
.brand-badge {
  width: 46px; height: 46px;
  display: grid; place-items: center;
  border-radius: 50%;
  font-weight: 800;
  color: #fff;
  background:
    linear-gradient(#e3350d 0 50%, #f5f5f5 50% 100%);
  border: 3px solid #1a1a1a;
  box-shadow: inset 0 0 0 6px rgba(0,0,0,.05);
  font-size: .95rem;
  text-shadow: 0 1px 2px rgba(0,0,0,.4);
}
.brand-badge.sm { width: 34px; height: 34px; font-size: .75rem; border-width: 2px; }

.login-form { display: flex; flex-direction: column; gap: .35rem; }
.login-form label { font-size: .8rem; font-weight: 600; margin-top: .6rem; }
input, textarea, select {
  font-family: inherit;
  background: var(--bg);
  border: 1px solid var(--border);
  color: var(--text);
  border-radius: 10px;
  padding: .65rem .8rem;
  font-size: .95rem;
}
input:focus, textarea:focus, select:focus {
  outline: none;
  border-color: var(--brand-2);
  box-shadow: 0 0 0 3px rgba(227, 53, 13, .18);
}
/* Sliders (volume, tamanho de fonte, etc.): a regra genérica acima aplicava
   padding/borda/fundo ao <input type=range>, o que quebrava o trajeto do thumb
   (chegava no 0 mas não no máximo ao arrastar). Aqui restauramos o slider
   nativo, sem padding/borda, com a cor da marca. */
input[type="range"] {
  -webkit-appearance: auto; appearance: auto;
  padding: 0; border: none; background: transparent; border-radius: 0;
  accent-color: var(--brand); height: 1.5rem; cursor: pointer; vertical-align: middle;
}
input[type="range"]:focus { box-shadow: none; }
.form-error { color: #ff7a7a; font-size: .85rem; min-height: 1.1rem; margin: .3rem 0 0; }
/* Primeiro acesso: status do código + bloqueio da senha até validar. */
.fa-code-status { margin: .25rem 0 0; min-height: 1.05rem; color: var(--muted); }
.fa-code-status.ok { color: var(--call); font-weight: 700; }
.fa-code-status.bad { color: #ff7a7a; font-weight: 700; }
.fa-locked input[type="password"], .fa-locked button[type="submit"] { opacity: .5; }
.fa-locked input[type="password"] { cursor: not-allowed; }
.login-foot { text-align: center; color: var(--muted); font-size: .8rem; margin: 1.3rem 0 0; }
.login-view-legacy { align-items: center; }
.login-card-legacy { position: relative; }
.legacy-maintenance-note {
  margin: 0 0 1rem;
  padding: .7rem .8rem;
  border: 1px solid color-mix(in srgb, var(--accent) 50%, var(--border));
  border-radius: 10px;
  color: var(--text);
  background: color-mix(in srgb, var(--accent) 10%, var(--panel));
  font-size: .78rem;
  line-height: 1.45;
}

/* ══ APP / TOPBAR ══════════════════════════════════════════ */
.topbar {
  display: flex; align-items: center; justify-content: space-between;
  gap: 1rem;
  padding: .7rem 1.3rem;
  /* Fundo quase opaco (sem backdrop-filter: blur, que trava a rolagem
     numa barra sticky por reamostrar o desfoque a cada frame). */
  background: #141a29;
  border-bottom: 1px solid var(--border);
  /* Rola junto com a página (não fica fixa sobrepondo o conteúdo). */
  position: relative; z-index: 20;
}
.topbar-left { display: flex; align-items: center; gap: .6rem; }
/* A nav ocupa o meio e QUEBRA em linha quando não cabe, em vez de estourar a
   largura da página (que obrigava a arrastar a barra do topo pro lado). */
.topbar-nav { display: flex; gap: .3rem; flex: 1 1 auto; min-width: 0; flex-wrap: wrap; justify-content: center; row-gap: .3rem; }
.nav-btn {
  background: transparent; border: none; color: var(--muted);
  font: inherit; font-weight: 600; cursor: pointer;
  padding: .5rem .85rem; border-radius: 9px;
}
.nav-btn:hover { color: var(--text); background: var(--panel); }
.nav-btn.active { color: #fff; background: var(--brand); }
.topbar-right { display: flex; align-items: center; gap: .7rem; }
.user-chip {
  font-size: .85rem; color: var(--muted);
  background: var(--panel); padding: .4rem .7rem; border-radius: 20px;
  border: 1px solid var(--border);
}

.layout { max-width: 1180px; margin: 0 auto; padding: 1.6rem 1.3rem 4rem; }
.section-head {
  display: flex; align-items: flex-end; justify-content: space-between;
  gap: 1rem; margin-bottom: 1.1rem;
}
.section-head h2 { margin: .2rem 0 0; font-size: 1.5rem; }

/* ══ MENTORIA — progresso ══════════════════════════════════ */
.progress-card {
  display: flex; align-items: center; justify-content: space-between;
  gap: 1rem;
  background: linear-gradient(120deg, var(--panel), var(--panel-2));
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 1.3rem 1.5rem;
}
.progress-card h2 { margin: .25rem 0 .1rem; font-size: 1.35rem; }
.progress-ring {
  width: 76px; height: 76px; border-radius: 50%;
  display: grid; place-items: center;
  background: conic-gradient(var(--accent) var(--pct, 0%), var(--border) 0);
  font-weight: 800;
}
.progress-ring span {
  width: 58px; height: 58px; border-radius: 50%;
  background: var(--panel); display: grid; place-items: center;
  font-size: .95rem;
}
.progress-bar {
  height: 8px; background: var(--border); border-radius: 20px;
  overflow: hidden; margin: .9rem 0 1.6rem;
}
.progress-fill {
  height: 100%; width: 0;
  background: linear-gradient(90deg, var(--brand), var(--accent));
  transition: width .5s ease;
}

.mentoria-grid {
  display: grid; grid-template-columns: 1.7fr 1fr; gap: 1.4rem;
}
@media (max-width: 860px) { .mentoria-grid { grid-template-columns: 1fr; } }

/* ══ MENTORIA — Cartão de Treinador (redesign) ═════════════════════
   ID card estilo jogo: parceiro num "badge", nome/nível, barra de jornada
   e estatísticas. Marca d'água de Pokébola no canto. */
.trainer-card {
  --tc-a: #3f74f5; --tc-b: #7b5cff; --tc-c: #22c1e6; --tc-ink: #0f1c44;
  position: relative; overflow: hidden; isolation: isolate;
  border-radius: 20px; padding: 1rem 1.1rem 1.05rem; color: #fff;
  background:
    radial-gradient(130% 120% at 0% 0%, rgba(255,255,255,.22), transparent 42%),
    linear-gradient(135deg, var(--tc-b), var(--tc-a) 52%, var(--tc-c));
  border: 1px solid rgba(255,255,255,.4);
  box-shadow: 0 14px 34px rgba(20,32,80,.38), inset 0 1px 0 rgba(255,255,255,.3);
}
.trainer-card.is-staff { --tc-a: #e0483d; --tc-b: #b3253a; --tc-c: #f2a622; --tc-ink: #3a0d12; }
/* Brilho holográfico diagonal + marca d'água de Pokébola no canto. */
.tc-holo {
  position: absolute; inset: 0; z-index: 0; pointer-events: none; opacity: .5;
  mix-blend-mode: overlay;
  background: repeating-linear-gradient(115deg, rgba(255,255,255,.12) 0 6px, transparent 6px 20px);
}
.trainer-card::after {
  content: ''; position: absolute; z-index: 0; right: -44px; top: -48px;
  width: 172px; height: 172px; border-radius: 50%; pointer-events: none; opacity: .5;
  border: 11px solid rgba(255,255,255,.14);
  background: radial-gradient(circle, #fff 0 11px, rgba(255,255,255,.35) 11px 19px, transparent 19px) center/100% 100% no-repeat;
}

/* ── Topo: marca + nº/dia ── */
.tc-top {
  position: relative; z-index: 1;
  display: flex; align-items: center; justify-content: space-between; gap: .5rem;
  margin-bottom: .9rem;
}
.tc-brand {
  display: inline-flex; align-items: center; gap: .42rem;
  font-size: .68rem; font-weight: 800; letter-spacing: .13em; text-transform: uppercase; opacity: .95;
}
.tc-pball {
  width: 15px; height: 15px; border-radius: 50%; position: relative; flex: 0 0 auto;
  background: linear-gradient(#ff5c5c 0 46%, #1c1c1c 46% 54%, #fff 54% 100%);
  box-shadow: inset 0 0 0 1.5px rgba(0,0,0,.4);
}
.tc-pball::after {
  content: ''; position: absolute; inset: 0; margin: auto; width: 5px; height: 5px;
  border-radius: 50%; background: #fff; box-shadow: 0 0 0 1.5px #1c1c1c;
}
.tc-idno {
  font-size: .66rem; font-weight: 800; letter-spacing: .05em; white-space: nowrap;
  background: rgba(0,0,0,.24); border: 1px solid rgba(255,255,255,.3);
  padding: .2rem .6rem; border-radius: 999px;
}

/* ── Corpo em 3 zonas: foto · identidade · time ── */
.tc-main {
  position: relative; z-index: 1;
  display: grid; grid-template-columns: auto minmax(0, 1fr) minmax(0, .86fr);
  gap: 1rem; align-items: start;
}

/* Foto do treinador (moldura) + selo de nível */
.tc-photo { position: relative; flex: 0 0 auto; }
.tc-badge {
  position: relative; cursor: pointer; padding: 0;
  width: 94px; height: 102px; border-radius: 15px; display: grid; place-items: center; overflow: hidden;
  background: radial-gradient(120% 90% at 50% 0%, rgba(255,255,255,.32), rgba(255,255,255,.08));
  border: 2px solid rgba(255,255,255,.55);
  box-shadow: 0 6px 16px rgba(0,0,0,.28), inset 0 0 20px rgba(255,255,255,.16);
  transition: transform .12s, box-shadow .15s;
}
.tc-badge::before { /* sombra de "piso" sob o treinador */
  content: ''; position: absolute; left: 10px; right: 10px; bottom: 9px; height: 12px;
  background: radial-gradient(ellipse at center, rgba(0,0,0,.3), transparent 72%);
}
.tc-badge:hover { transform: translateY(-2px); box-shadow: 0 11px 24px rgba(0,0,0,.34), inset 0 0 20px rgba(255,255,255,.22); }
.tc-badge.locked { cursor: default; }
.tc-badge.locked:hover { transform: none; }
.tc-mon { width: 64px; height: 64px; image-rendering: pixelated; position: relative; z-index: 1; }
.tc-trainer { width: 86px; height: 86px; object-fit: contain; image-rendering: pixelated; filter: drop-shadow(0 3px 4px rgba(0,0,0,.35)); position: relative; z-index: 1; }
.tc-trainer-empty { font-size: 2.4rem; line-height: 1; }
.tc-trainer-hint {
  position: absolute; left: 0; right: 0; bottom: 7px; text-align: center;
  font-size: .52rem; font-weight: 800; text-transform: uppercase; letter-spacing: .05em; opacity: .95;
}
.tc-lvl {
  position: absolute; right: -7px; bottom: -7px; z-index: 2;
  min-width: 40px; display: grid; justify-items: center; line-height: 1;
  padding: .26rem .42rem .3rem; border-radius: 12px;
  background: linear-gradient(#ffd23f, #ffb020); color: #4a2c00;
  border: 2px solid #fff; box-shadow: 0 3px 9px rgba(0,0,0,.32);
}
.tc-lvl small { font-size: .5rem; font-weight: 900; letter-spacing: .09em; opacity: .82; }
.tc-lvl b { font-size: 1.08rem; font-weight: 900; }

/* Identidade: nome + cargo, jornada e stats */
.tc-ident { position: relative; z-index: 1; min-width: 0; display: flex; flex-direction: column; gap: .6rem; }
.tc-namerow { display: flex; align-items: center; gap: .5rem; flex-wrap: wrap; }
.tc-name { font-size: 1.42rem; line-height: 1.05; color: #fff; text-shadow: 0 1px 2px rgba(0,0,0,.28); }
.tc-role {
  font-size: .62rem; font-weight: 800; text-transform: uppercase; letter-spacing: .05em; white-space: nowrap;
  background: rgba(255,255,255,.22); border: 1px solid rgba(255,255,255,.42);
  padding: .18rem .55rem; border-radius: 999px;
}
.tc-mentor {
  font-size: .62rem; font-weight: 800; text-transform: uppercase; letter-spacing: .04em; white-space: nowrap;
  background: linear-gradient(180deg, #ffe08a, #f2b705); color: #4a3400;
  border: 1px solid rgba(0,0,0,.25); padding: .18rem .5rem; border-radius: 999px;
}
.tc-journey-row { display: flex; flex-direction: column; gap: .32rem; }
.tc-journey-top { display: flex; align-items: baseline; justify-content: space-between; gap: .5rem; }
.tc-journey-lbl { font-size: .64rem; font-weight: 800; text-transform: uppercase; letter-spacing: .08em; opacity: .9; }
.tc-journey-pct { font-size: .95rem; font-weight: 900; }
.tc-bar { height: 10px; background: rgba(0,0,0,.26); border-radius: 999px; overflow: hidden; box-shadow: inset 0 1px 2px rgba(0,0,0,.35); }
.tc-fill { height: 100%; width: 0; border-radius: 999px; background: linear-gradient(90deg, #ffd23f, #fff3b0); box-shadow: 0 0 10px rgba(255,210,63,.6); transition: width .6s ease; }
.tc-journey-sub { font-size: .72rem; opacity: .88; line-height: 1.35; }
.tc-stats { display: grid; grid-template-columns: repeat(2, 1fr); gap: .5rem; }
.tc-stat {
  display: grid; grid-template-columns: auto auto; grid-template-areas: 'ico val' 'lbl lbl';
  justify-content: center; align-items: center; text-align: center;
  column-gap: .42rem; row-gap: .1rem; padding: .55rem .5rem; border-radius: 13px;
  background: linear-gradient(160deg, rgba(255,255,255,.26), rgba(255,255,255,.1));
  border: 1px solid rgba(255,255,255,.36);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.3), 0 2px 6px rgba(0,0,0,.12);
}
.tc-stat-ico { grid-area: ico; font-size: 1.2rem; line-height: 1; }
.tc-stat-val { grid-area: val; font-weight: 900; font-size: 1.3rem; line-height: 1; }
.tc-stat-lbl { grid-area: lbl; font-size: .6rem; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; opacity: .9; }

/* Painel de time (Pokébag) à direita — preenche o cartão */
.tc-collection {
  position: relative; z-index: 1; align-self: stretch;
  display: flex; flex-direction: column; gap: .5rem;
  background: rgba(0,0,0,.2); border: 1px solid rgba(255,255,255,.2);
  border-radius: 14px; padding: .65rem .7rem;
}
.tc-col-head { display: flex; align-items: center; justify-content: space-between; gap: .4rem; }
.tc-col-title { font-size: .68rem; font-weight: 800; text-transform: uppercase; letter-spacing: .05em; opacity: .92; }
.tc-bag-btn {
  font: inherit; font-size: .66rem; font-weight: 800; cursor: pointer; white-space: nowrap;
  color: #fff; background: rgba(255,255,255,.18); border: 1px solid rgba(255,255,255,.35);
  border-radius: 999px; padding: .14rem .5rem; transition: background .15s;
}
.tc-bag-btn:hover { background: rgba(255,255,255,.3); }
.tc-bag { display: grid; grid-template-columns: repeat(3, 1fr); gap: .35rem; }
.tc-slot {
  aspect-ratio: 1; border-radius: 10px; cursor: pointer; padding: 0;
  background: rgba(255,255,255,.14); border: 1px solid rgba(255,255,255,.22);
  display: grid; place-items: center; transition: transform .08s, background .15s;
}
.tc-slot:hover { transform: translateY(-1px); background: rgba(255,255,255,.26); }
.tc-slot img { width: 80%; height: 80%; object-fit: contain; image-rendering: pixelated; }
.tc-slot.empty { border-style: dashed; }
.tc-slot.empty::after { content: ''; width: 13px; height: 13px; border-radius: 50%; border: 2px solid rgba(255,255,255,.45); }
.tc-caught-empty { margin: 0; font-size: .74rem; opacity: .9; line-height: 1.4; }
/* Ações rápidas do cartão (Bag + Passe) — barra full-width abaixo do conteúdo. */
.tc-actions {
  position: relative; z-index: 1; grid-column: 1 / -1;
  display: grid; grid-template-columns: repeat(3, 1fr); gap: .5rem; margin-top: .2rem;
}
.tc-action-btn {
  display: flex; align-items: center; justify-content: center; gap: .4rem; cursor: pointer;
  font: inherit; font-weight: 800; font-size: .82rem; color: #fff;
  background: rgba(255,255,255,.16); border: 1px solid rgba(255,255,255,.34);
  border-radius: 12px; padding: .55rem .6rem; transition: background .15s, transform .08s;
}
.tc-action-btn:hover { background: rgba(255,255,255,.3); transform: translateY(-1px); }
.tc-action-btn .tca-ico { font-size: 1.05rem; }
/* Modal: montar time (Pokébag) */
.tm-team { display: flex; gap: .45rem; flex-wrap: wrap; margin: .7rem 0 1rem; }
.tm-slot { width: 54px; height: 54px; border-radius: 10px; cursor: pointer; padding: 0; background: var(--panel-2); border: 2px solid var(--border); display: grid; place-items: center; }
.tm-slot img { width: 46px; height: 46px; image-rendering: pixelated; }
.tm-slot.empty { border-style: dashed; }
.tm-slot.empty::after { content: '+'; color: var(--muted); font-size: 1.4rem; font-weight: 700; }
.tm-pool { display: grid; grid-template-columns: repeat(auto-fill, minmax(48px, 1fr)); gap: .35rem; max-height: 244px; overflow: auto; margin: .5rem 0 1rem; }
.tm-pool-opt { background: var(--panel-2); border: 2px solid var(--border); border-radius: 9px; padding: .2rem; cursor: pointer; transition: border-color .12s, transform .08s; }
.tm-pool-opt:hover { transform: translateY(-1px); border-color: var(--brand-2); }
.tm-pool-opt.active { border-color: var(--brand); box-shadow: 0 0 0 2px rgba(238,21,21,.2); }
.tm-pool-opt img { width: 40px; height: 40px; image-rendering: pixelated; display: block; margin: auto; }

/* ══ MODO FOCO da atividade (imersivo, tela cheia) ═════════════════ */
.act-focus-cta { width: 100%; margin-top: .3rem; font-size: 1rem; padding: .7rem 1rem; }
.ac-focus-row { margin-bottom: .7rem; }
body.focus-open { overflow: hidden; } /* trava o scroll do fundo */
/* Scroll-lock do modal: position:fixed é o único método que funciona no iOS Safari.
   overflow-y:scroll mantém a largura estável (sem pular quando scrollbar some). */
body.modal-open { position: fixed; width: 100%; overflow-y: scroll; }
.modal-backdrop { overscroll-behavior: none; }
/* O botão flutuante do chat (z-index 45) fica ACIMA do modal (z 40) — esconde
   enquanto um modal está aberto para não cobrir os botões do rodapé. */
body.modal-open .chat-launcher { display: none; }
.act-focus { position: fixed; inset: 0; z-index: 3000; display: flex; }
/* O mentorado estuda o dia DENTRO do modo foco e é de lá que abre a
   checagem-relâmpago (modal, z 40) e o minigame do dia (#game-view, z 50).
   Nas alturas normais eles ficam ESCONDIDOS atrás do foco (z 3000) — era o
   "quiz que não abre". Só ENQUANTO o foco está aberto eles sobem; a pilha do
   resto do app (gate do Discord, animações de captura/evolução) fica intacta.
   Continuam abaixo do toast (4000). */
body.focus-open #game-view { z-index: 3050; }
body.focus-open .modal-backdrop { z-index: 3100; }
.af-bg {
  position: absolute; inset: 0; z-index: 0;
  background:
    radial-gradient(circle at 18% 12%, rgba(238,21,21,.28), transparent 45%),
    radial-gradient(circle at 85% 82%, rgba(59,111,242,.30), transparent 45%),
    linear-gradient(160deg, #1b2340, #0d1120);
}
.af-bg::after { /* trama sutil de pokébolas */
  content: ''; position: absolute; inset: 0; opacity: .06;
  background-image: radial-gradient(circle, #fff 2px, transparent 3px);
  background-size: 34px 34px;
}
.af-shell {
  position: relative; z-index: 1; margin: auto;
  width: min(760px, 100%); height: min(94vh, 100%);
  display: flex; flex-direction: column; overflow: hidden;
  background: var(--bg); border: 1px solid var(--border); border-radius: 18px;
  box-shadow: 0 24px 70px rgba(0,0,0,.55);
}
.af-head {
  display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem;
  padding: 1rem 1.2rem .7rem; border-bottom: 1px solid var(--border);
}
.af-head-main { min-width: 0; }
.af-title { margin: .15rem 0 0; font-size: 1.3rem; line-height: 1.15; }
.af-close {
  flex: 0 0 auto; width: 42px; height: 42px; border-radius: 11px; cursor: pointer;
  border: 1px solid var(--border); background: var(--panel-2); color: var(--text); font-size: 1.15rem;
  transition: border-color .15s, background .15s;
}
.af-close:hover { border-color: var(--brand-2); background: var(--panel); }
.af-body {
  flex: 1; overflow-y: auto; -webkit-overflow-scrolling: touch;
  padding: 1rem 1.2rem calc(1.6rem + env(safe-area-inset-bottom, 0px));
}
.af-brief { margin-bottom: 1rem; padding-bottom: 1rem; border-bottom: 1px dashed var(--border); }
@media (max-width: 600px) {
  .af-shell { width: 100%; height: 100%; border-radius: 0; border: none; }
  .af-head { padding-top: calc(.9rem + env(safe-area-inset-top, 0px)); }
  .af-title { font-size: 1.15rem; }
}

/* Modal: escolher treinador */
.trainer-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(84px, 1fr)); gap: .55rem; margin: .8rem 0; }
.trainer-opt { display: grid; justify-items: center; gap: .25rem; background: var(--panel-2); border: 2px solid var(--border); border-radius: 12px; padding: .55rem .35rem; cursor: pointer; font: inherit; color: inherit; transition: border-color .15s, transform .08s; }
.trainer-opt:hover { border-color: var(--brand-2); transform: translateY(-2px); }
.trainer-opt.active { border-color: var(--brand); box-shadow: 0 0 0 2px rgba(238,21,21,.25); }
.trainer-opt-img { width: 56px; height: 56px; object-fit: contain; image-rendering: pixelated; }
.trainer-opt-lbl { font-size: .72rem; font-weight: 700; }

@media (max-width: 760px) {
  .tc-main { grid-template-columns: auto minmax(0, 1fr); gap: .8rem; }
  .tc-collection { grid-column: 1 / -1; }
}
@media (max-width: 440px) {
  .tc-main { grid-template-columns: 1fr; }
  .tc-photo { justify-self: start; }
  .tc-name { font-size: 1.24rem; }
}

/* Fluxo guiado do dia (ler → aprender → exercício, em partes) */
.day-flow .df-head { display: flex; align-items: center; gap: .7rem; flex-wrap: wrap; margin: .3rem 0 .5rem; }
.df-counter { font-size: .78rem; font-weight: 800; color: var(--accent); letter-spacing: .02em; }
.df-dots { display: flex; gap: .35rem; }
.df-dot { width: 9px; height: 9px; border-radius: 50%; background: var(--border); transition: background .2s, transform .2s; }
.df-dot.done { background: var(--accent); transform: scale(1.12); }
.df-flow {
  display: flex; align-items: center; gap: .4rem; flex-wrap: wrap;
  font-size: .74rem; font-weight: 700; color: var(--muted);
  background: var(--bg); border: 1px dashed var(--border); border-radius: 10px;
  padding: .4rem .6rem; margin-bottom: .8rem;
}
.df-step { white-space: nowrap; }
.df-arrow { opacity: .55; }
.df-guide {
  margin: 0 0 .7rem; font-size: .84rem; font-weight: 600; line-height: 1.4;
  color: var(--text); background: color-mix(in srgb, var(--accent) 10%, var(--panel));
  border-left: 3px solid var(--accent); border-radius: 8px; padding: .5rem .7rem;
}
.df-body { min-height: 60px; animation: menFade .2s ease; }
.df-nav { display: flex; align-items: center; justify-content: space-between; gap: .6rem; margin-top: 1rem; }
.df-done-tag { font-size: .82rem; font-weight: 800; color: var(--call); }
.df-finale { margin-top: 1.1rem; padding-top: 1rem; border-top: 1px solid var(--border); animation: menFade .25s ease; }
.df-learn-box {
  background: linear-gradient(120deg, color-mix(in srgb, var(--brand) 12%, var(--panel)), var(--panel));
  border: 1px solid color-mix(in srgb, var(--brand) 30%, var(--border));
  border-radius: 12px; padding: .8rem 1rem; margin-bottom: 1rem;
}
.df-learn-box .eyebrow { display: block; }
.df-learn-box p { margin: .25rem 0 .6rem; }
/* Minigames em LINHA CHEIA (um por linha), não amontoados numa grade. */
.df-learn-box .ex-grid { grid-template-columns: 1fr; gap: .5rem; }
.df-learn-box .ex-grid .exercise-card { width: 100%; }

/* ── Portão do quiz: o exercício só libera após concluir o minigame ── */
.quiz-gate { display: block; }
.qg-box.qg-done { border-color: color-mix(in srgb, var(--t-grass, #4caf50) 45%, var(--border)); background: linear-gradient(120deg, color-mix(in srgb, var(--t-grass, #4caf50) 12%, var(--panel)), var(--panel)); }
.qg-box.qg-done .qg-hint { color: var(--t-grass, #4caf50); font-weight: 700; }
.qg-lock {
  margin: 0 0 .4rem; padding: .7rem .9rem; border-radius: 12px;
  background: color-mix(in srgb, var(--brand) 10%, var(--panel));
  border: 1px dashed color-mix(in srgb, var(--brand) 40%, var(--border));
  color: var(--muted); font-size: .88rem; font-weight: 600; text-align: center;
}
.qg-activity { animation: menFade .25s ease; }

/* Princípio "da vez" embutido no conteúdo do dia */
.df-principle {
  background: linear-gradient(135deg, color-mix(in srgb, var(--topic) 16%, var(--panel)), var(--panel));
  border: 1px solid color-mix(in srgb, var(--topic) 40%, var(--border));
  border-radius: 12px; padding: .85rem 1rem; margin-bottom: 1rem;
}
.df-principle .eyebrow { display: block; color: var(--topic); }
.df-principle-title { display: block; font-size: 1.02rem; margin: .2rem 0 .3rem; }
.df-principle.read { border-color: color-mix(in srgb, var(--call) 55%, var(--border)); }
.df-principle .btn { margin-top: .5rem; }
.df-principle .btn:disabled { opacity: 1; background: color-mix(in srgb, var(--call) 22%, var(--panel)); color: var(--call); border-color: transparent; cursor: default; }

/* Manual da Staff — progresso + itens (lido vs a guardar) */
.manual-progress { margin-bottom: .8rem; }
.manual-progress span { display: block; font-weight: 700; margin-bottom: .35rem; }
.manual-tag { display: inline-block; font-size: .68rem; font-weight: 800; letter-spacing: .03em; text-transform: uppercase; margin-bottom: .2rem; color: var(--muted); }
.manual-item.read .manual-tag { color: var(--call); }
.manual-item.read { border-color: color-mix(in srgb, var(--call) 45%, var(--border)); background: color-mix(in srgb, var(--call) 8%, var(--panel)); }

/* HOJE (hero) + sub-abas da Mentoria */
.men-today { margin-top: 1.2rem; }
.today-toolbar { display: flex; justify-content: flex-end; margin-bottom: .5rem; }
.study-focus-btn { font-weight: 700; }

/* Cartão de início do dia (mentorado) — abre o estudo em modo foco */
.today-start .ts-flow {
  display: flex; flex-wrap: wrap; align-items: center; gap: .3rem;
  margin: .6rem 0 .2rem; font-size: .9rem;
}
.today-start .ts-flow .df-step {
  background: var(--panel-2); border: 1px solid var(--border);
  border-radius: 999px; padding: .12rem .55rem; font-weight: 600;
}
.today-start .ts-flow .df-arrow { color: var(--muted); }
.today-start .ts-hint { margin: .5rem 0 .7rem; }
.today-start .ts-start {
  width: 100%; font-size: 1.05rem; font-weight: 800; padding: .8rem 1rem;
}
.men-today-head { display: flex; align-items: center; justify-content: space-between; gap: .8rem; flex-wrap: wrap; margin-bottom: .5rem; }
.men-today-head .schedule-line { margin: 0; }
.men-nav { margin-top: 1.4rem; }
.men-sections { margin-top: 1rem; }
.men-sec { animation: menFade .25s ease; }
.section-intro-row { margin-bottom: .7rem; }
.section-intro-row .eyebrow { display: block; font-size: .95rem; }
.section-intro-row p { margin: .2rem 0 0; }
@keyframes menFade { from { opacity: 0; transform: translateY(4px); } to { opacity: 1; transform: none; } }
.men-roadmap, .men-missions, .men-archive { margin-top: 1.4rem; }
/* Seletor de mentorado no Acervo de revisão (visão do mentor/staff). */
.archive-sel-row { display: flex; align-items: center; gap: .5rem; margin-top: .5rem; flex-wrap: wrap; }
.archive-sel-row .crev-target { flex: 1 1 200px; min-width: 160px; max-width: 340px; }

/* ── Citações do dia (duas frases, mesmo estilo) ─────────────────── */
.men-daily {
  margin-top: 1rem; display: grid; grid-template-columns: 1fr 1fr; gap: .7rem;
}
.men-daily .md-quote {
  position: relative; display: flex; align-items: center; min-height: 3.4rem;
  border: 1px solid var(--border); border-radius: 14px; padding: .8rem .9rem;
  background:
    radial-gradient(circle at 0% 100%, rgba(109,94,252,.16), transparent 55%),
    var(--panel);
}
.men-daily .md-quote.gold {
  background:
    radial-gradient(circle at 100% 0%, rgba(255,210,63,.18), transparent 55%),
    var(--panel);
}
.men-daily .mdq-mark {
  position: absolute; top: -.35rem; left: .5rem; font-size: 2.6rem;
  color: var(--brand-2); opacity: .35; font-family: Georgia, serif;
}
.men-daily .md-quote.gold .mdq-mark { color: #e0a800; }
.men-daily .mdq-text { margin: 0 0 0 1.6rem; font-style: italic; font-weight: 600; line-height: 1.35; }
@media (max-width: 640px) { .men-daily { grid-template-columns: 1fr; } }

/* ── Trilha / próximos marcos ───────────────────────────────────── */
.roadmap-card {
  background: var(--panel); border: 1px solid var(--border);
  border-radius: 16px; padding: .9rem 1rem;
}
.rm-head { display: flex; align-items: center; justify-content: space-between; gap: .6rem; }
.rm-head .eyebrow { font-size: .95rem; }
.rm-pct {
  font-weight: 800; font-size: .85rem; color: var(--brand-2);
  background: color-mix(in srgb, var(--brand-2) 14%, transparent);
  border: 1px solid color-mix(in srgb, var(--brand-2) 30%, transparent);
  padding: .1rem .55rem; border-radius: 999px;
}
.rm-bar { height: 8px; margin: .55rem 0 .9rem; background: var(--panel-2); border-radius: 999px; overflow: hidden; }
.rm-fill { height: 100%; border-radius: 999px; background: linear-gradient(90deg, var(--brand), var(--brand-2)); transition: width .6s ease; }
.rm-steps { display: flex; flex-direction: column; gap: 0; position: relative; }
.rm-step { display: grid; grid-template-columns: auto 1fr; gap: .7rem; padding: .5rem 0; position: relative; }
.rm-step:not(:last-child)::before {
  content: ''; position: absolute; left: 15px; top: 34px; bottom: -6px; width: 2px;
  background: var(--border);
}
.rm-dot {
  width: 32px; height: 32px; border-radius: 50%; display: grid; place-items: center;
  font-size: .95rem; background: var(--panel-2); border: 2px solid var(--border);
  position: relative; z-index: 1;
}
.rm-step.done .rm-dot { border-color: #46c07b; background: color-mix(in srgb, #46c07b 18%, var(--panel-2)); }
.rm-step.doing .rm-dot { border-color: var(--brand); background: color-mix(in srgb, var(--brand) 18%, var(--panel-2)); animation: rmPulse 1.8s ease-in-out infinite; }
.rm-step.next .rm-dot { border-color: var(--brand-2); }
.rm-step.goal .rm-dot { border-color: #ffb020; }
@keyframes rmPulse { 0%,100% { box-shadow: 0 0 0 0 color-mix(in srgb, var(--brand) 45%, transparent); } 50% { box-shadow: 0 0 0 6px transparent; } }
.rm-body { display: flex; flex-direction: column; gap: .1rem; min-width: 0; }
.rm-title { font-size: .95rem; line-height: 1.2; }
.rm-desc { font-size: .8rem; color: var(--muted); }
.rm-step.done .rm-title { color: var(--muted); }

/* ── Livro do Manual (Comunidade ▸ Pessoal) ─────────────────────── */
.manual-book { max-width: 640px; }
.mb-cover {
  display: grid; grid-template-columns: auto 1fr; gap: .8rem 1rem; align-items: center;
  padding: 1rem 1.1rem; border-radius: 16px; color: #fff;
  background: linear-gradient(135deg, #3a2a6b, #5b3aa0 60%, #7b52c9);
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.18), 0 10px 26px rgba(0,0,0,.35);
}
.mb-cover.staff { background: linear-gradient(135deg, #6b1d1d, #a02a2a 60%, #d14a3a); }
.mb-crest { font-size: 2.6rem; line-height: 1; filter: drop-shadow(0 3px 5px rgba(0,0,0,.35)); }
.mb-titles { min-width: 0; }
.mb-titles .eyebrow { opacity: .85; }
.mb-title { margin: .1rem 0; font-size: 1.5rem; line-height: 1.1; color: #fff; }
.mb-sub { margin: 0; opacity: .92; line-height: 1.3; }
.mb-prog { grid-column: 1 / -1; }
.mb-prog .jr-bar { height: 8px; margin-top: .3rem; background: rgba(255,255,255,.25); border-radius: 999px; overflow: hidden; }
.mb-prog .jr-fill { height: 100%; background: linear-gradient(90deg, #ffd23f, #fff3b0); border-radius: 999px; transition: width .5s ease; }
.mb-pages { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: .6rem; margin-top: .9rem; }
.mb-page {
  position: relative; text-align: left; font: inherit; color: var(--text);
  border: 1px solid var(--border); border-radius: 12px; padding: .7rem .8rem .75rem;
  background:
    repeating-linear-gradient(var(--panel), var(--panel) 25px, color-mix(in srgb, var(--border) 40%, transparent) 26px),
    var(--panel);
  display: flex; flex-direction: column; gap: .25rem;
}
button.mb-page { cursor: pointer; transition: transform .08s, border-color .15s, box-shadow .15s; }
button.mb-page:hover { transform: translateY(-2px); border-color: var(--brand-2); box-shadow: var(--shadow); }
.mb-page.filled { border-color: #46c07b; box-shadow: inset 3px 0 0 #46c07b; }
.mb-page.open { border-style: dashed; }
.mb-page.sealed { opacity: .6; align-items: flex-start; }
.mb-num { font-size: .64rem; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: var(--muted); }
.mb-badge {
  align-self: flex-start; font-size: .66rem; font-weight: 800; padding: .1rem .5rem;
  border-radius: 999px; background: var(--panel-2); border: 1px solid var(--border);
}
.mb-page.filled .mb-badge { color: #2a9d5c; border-color: #46c07b; background: color-mix(in srgb, #46c07b 14%, transparent); }
.mb-page-title { font-size: 1rem; line-height: 1.2; }
.mb-page .pr-body { font-size: .85rem; color: var(--muted); }
.mb-seal { position: absolute; top: .6rem; right: .7rem; font-size: 1.1rem; }
.mb-graduate {
  margin: 1rem 0 0; text-align: center; font-weight: 800;
  padding: .7rem .9rem; border-radius: 12px;
  background: color-mix(in srgb, #ffd23f 18%, transparent);
  border: 1px solid color-mix(in srgb, #ffb020 45%, transparent);
}
@media (max-width: 560px) { .mb-pages { grid-template-columns: 1fr; } }

/* Cartão de dia (aula) */
.day-card {
  background: var(--panel);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: var(--card-pad);
}
.day-card.highlight {
  border-color: var(--brand);
  box-shadow: 0 0 0 1px rgba(227,53,13,.25), var(--shadow);
}
.day-card .day-meta {
  display: flex; gap: .5rem; align-items: center; flex-wrap: wrap;
  margin-bottom: .6rem;
}
.day-card h3 { margin: .1rem 0 .6rem; font-size: 1.25rem; }
.day-card p { line-height: 1.55; margin: .5rem 0; }
.day-card .activity {
  margin-top: 1rem; padding: .9rem 1rem;
  background: var(--bg); border-left: 3px solid var(--accent);
  border-radius: 8px;
}
.activity .eyebrow { color: var(--accent); }

.pill {
  font-size: .7rem; font-weight: 700; text-transform: uppercase;
  letter-spacing: .04em; padding: .22rem .55rem; border-radius: 20px;
  background: var(--panel-2); color: var(--muted); border: 1px solid var(--border);
}
.pill.week { color: var(--accent); }
.pill.type-call { color: var(--call); border-color: rgba(33,192,122,.4); }
.pill.type-review { color: var(--topic); border-color: rgba(79,140,255,.4); }
.pill.type-free { color: var(--muted); }

.principles { margin-top: 1.6rem; }
.principles > summary { cursor: pointer; list-style: none; user-select: none; }
.principles > summary::-webkit-details-marker { display: none; }
.principles > summary::after { content: " ▸"; color: var(--muted); font-size: .8em; }
.principles[open] > summary::after { content: " ▾"; }
.principles-list { display: grid; gap: .55rem; margin-top: .6rem; }
.principle {
  background: var(--panel); border: 1px solid var(--border);
  border-radius: 10px; padding: .7rem .9rem;
}
.principle strong { color: var(--accent); font-size: .9rem; }
.principle p { margin: .25rem 0 0; font-size: .85rem; color: var(--muted); line-height: 1.5; }

/* Acervo */
.archive-list { display: grid; gap: .5rem; margin-top: .7rem; }
.archive-item {
  width: 100%; text-align: left; cursor: pointer;
  background: var(--panel); border: 1px solid var(--border);
  border-radius: 10px; padding: .7rem .85rem;
  color: var(--text); font: inherit;
  transition: border-color .2s, transform .06s;
}
.archive-item:hover { border-color: var(--brand-2); }
.archive-item:active { transform: translateY(1px); }
.archive-item .ai-top { display: flex; justify-content: space-between; gap: .5rem; }
.archive-item small { color: var(--muted); }
.archive-item .ai-title { font-weight: 600; font-size: .92rem; margin-top: .2rem; }

/* ══ CALENDÁRIO — Agenda da Liga (estilo Pokédex) ══════════ */
/* Cartucho-cabeçalho */
.cal-dex {
  display: flex; align-items: center; gap: var(--sp-4);
  flex-wrap: wrap;
  background: linear-gradient(135deg, var(--brand) 0%, var(--brand-ink) 120%);
  border: 2px solid rgba(0,0,0,.35);
  border-radius: var(--radius);
  padding: .85rem 1.1rem; margin-bottom: 1rem;
  box-shadow: var(--shadow), inset 0 1px 0 rgba(255,255,255,.18);
}
.cal-dex-lights { display: flex; align-items: center; gap: .5rem; }
.cal-dex-lights .cal-lens {
  width: 30px; height: 30px; border-radius: 50%;
  background: radial-gradient(circle at 32% 30%, #d6f3ff 0 18%, var(--lens) 45%, #1c6fb0 100%);
  box-shadow: 0 0 0 3px #fff, 0 0 0 5px rgba(0,0,0,.4), 0 0 12px var(--lens);
}
.cal-dex-lights i {
  width: 10px; height: 10px; border-radius: 50%; display: inline-block;
  box-shadow: inset 0 0 3px rgba(0,0,0,.5);
}
.cal-dex-lights i:nth-child(2){ background:#ff5959; }
.cal-dex-lights i:nth-child(3){ background:var(--accent); }
.cal-dex-lights i:nth-child(4){ background:var(--call); }
.cal-dex-title { flex: 1 1 auto; min-width: 140px; }
.cal-dex-title .eyebrow { color: rgba(255,255,255,.85); }
.cal-dex-title h2 { margin: .1rem 0 0; color: #fff; text-shadow: 0 2px 0 rgba(0,0,0,.3); }

/* Alternador Semana/Mês */
.cal-view-toggle {
  display: inline-flex; background: rgba(0,0,0,.28); border-radius: 999px;
  padding: 3px; gap: 2px;
}
.cvt-btn {
  border: 0; background: transparent; color: #fff; cursor: pointer;
  font-family: var(--font-display); font-weight: 700; font-size: .82rem;
  padding: .35rem .85rem; border-radius: 999px; transition: all var(--dur);
}
.cvt-btn.is-active { background: var(--accent); color: #4a2b00; box-shadow: 0 2px 6px rgba(0,0,0,.3); }
.cal-controls { display: flex; gap: .4rem; }
.cal-controls .btn { background: rgba(0,0,0,.22); color: #fff; border-color: rgba(255,255,255,.25); }
.cal-controls .btn:hover { background: rgba(0,0,0,.36); }

/* Painel "Próximo evento" — Pokébola em destaque */
.cal-next-up {
  display: flex; align-items: center; gap: var(--sp-4); flex-wrap: wrap;
  background:
    linear-gradient(0deg, color-mix(in srgb, var(--cat, var(--accent)) 12%, var(--panel)) 0%, var(--panel) 100%);
  border: 1px solid var(--border);
  border-left: 5px solid var(--cat, var(--accent));
  border-radius: var(--radius); padding: .8rem 1rem; margin-bottom: 1rem;
  box-shadow: var(--shadow-sm);
}
.cal-next-up .nu-ball {
  width: 46px; height: 46px; flex: 0 0 auto; display: grid; place-items: center;
  font-size: 1.5rem; border-radius: 50%;
  background: radial-gradient(circle at 50% 42%, #fff 0 30%, transparent 31%),
              linear-gradient(180deg, var(--cat, var(--brand)) 0 50%, #f6f6f6 50% 100%);
  border: 2px solid #111; box-shadow: 0 2px 8px rgba(0,0,0,.35);
}
.cal-next-up .nu-info { display: flex; flex-direction: column; flex: 1 1 180px; min-width: 160px; }
.cal-next-up .nu-title { font-family: var(--font-display); font-size: 1.05rem; }
.cal-next-up .nu-when { color: var(--muted); font-size: .82rem; }

/* Chips de filtro por tipo Pokémon (usado no calendário e nos avisos) */
.cal-filters, .avisos-filters { display: flex; flex-wrap: wrap; gap: .45rem; margin-bottom: 1rem; }
.type-chip {
  border: 1px solid var(--border); background: var(--panel);
  color: var(--muted); cursor: pointer;
  border-radius: 999px; padding: .32rem .8rem; font-size: .8rem; font-weight: 700;
  transition: all var(--dur); user-select: none;
}
.type-chip:hover { border-color: var(--chip, var(--brand-2)); color: var(--text); }
.type-chip.is-on {
  background: var(--chip, var(--brand)); color: #fff; border-color: transparent;
  box-shadow: 0 2px 8px color-mix(in srgb, var(--chip, var(--brand)) 45%, transparent);
}

/* Grade semanal */
.calendar-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: .6rem; }
@media (max-width: 900px) { .calendar-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 520px) { .calendar-grid { grid-template-columns: 1fr; } }
.cal-day {
  background: var(--panel); border: 1px solid var(--border);
  border-radius: 12px; padding: .7rem; min-height: 130px; transition: border-color var(--dur), transform var(--dur-fast);
}
.cal-day.is-today {
  border-color: var(--accent);
  box-shadow: 0 0 0 1px var(--accent), 0 0 16px rgba(255,203,5,.2);
}
.cal-day .cd-head { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: .5rem; }
.cal-day .cd-dow { font-weight: 800; font-size: .82rem; font-family: var(--font-display); }
.cal-day .cd-date { color: var(--muted); font-size: .78rem; }
.cal-event {
  position: relative; border-radius: 9px; padding: .4rem .55rem .4rem .6rem;
  margin-bottom: .4rem; font-size: .8rem;
  background: color-mix(in srgb, var(--cat, var(--topic)) 12%, var(--bg));
  border-left: 4px solid var(--cat, var(--topic));
}
.cal-event.me-going { box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--cat) 55%, transparent); }
.cal-event .ce-time { color: var(--muted); font-size: .72rem; font-weight: 700; }
.cal-event .ce-title { line-height: 1.25; }
.cal-event .ce-rsvp {
  position: absolute; top: .35rem; right: .4rem; font-size: .68rem;
  color: var(--text); background: rgba(0,0,0,.25); border-radius: 999px; padding: 0 .4rem;
}
.cal-empty { color: var(--muted); font-size: .78rem; opacity: .6; }

/* Grade mensal */
.calendar-month .cm-head {
  display: grid; grid-template-columns: repeat(7, 1fr); gap: .4rem; margin-bottom: .4rem;
}
.calendar-month .cm-head span {
  text-align: center; font-family: var(--font-display); font-weight: 800;
  font-size: .78rem; color: var(--muted);
}
.calendar-month .cm-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: .4rem; }
.cm-cell {
  background: var(--panel); border: 1px solid var(--border); border-radius: 10px;
  min-height: 78px; padding: .4rem; display: flex; flex-direction: column; gap: .3rem;
  transition: border-color var(--dur), transform var(--dur-fast);
}
.cm-cell.is-out { opacity: .42; }
.cm-cell.is-today { border-color: var(--accent); box-shadow: 0 0 0 1px var(--accent); }
.cm-cell.clickable, .cal-day.clickable, .cal-day.editable, .cm-cell.editable { cursor: pointer; }
.cm-cell.clickable:hover, .cm-cell.editable:hover { border-color: var(--brand-2); transform: translateY(-1px); }
.cm-daynum { font-weight: 800; font-size: .82rem; }
.cm-dots { display: flex; flex-wrap: wrap; gap: 4px; margin-top: auto; }
.cm-dot { width: 9px; height: 9px; border-radius: 50%; box-shadow: inset 0 0 0 1px rgba(0,0,0,.3); }
.cm-dot.me-going { box-shadow: inset 0 0 0 1px rgba(0,0,0,.3), 0 0 0 2px rgba(255,255,255,.5); }
.cm-more { font-size: .68rem; color: var(--muted); }
@media (max-width: 620px) { .cm-cell { min-height: 58px; } .cm-daynum { font-size: .74rem; } }

/* Controle de RSVP (presença) */
.rsvp-ctrl { display: flex; flex-wrap: wrap; align-items: center; gap: .4rem; margin-top: .55rem; }
.rsvp-label { font-size: .76rem; color: var(--muted); font-weight: 700; }
.rsvp-btn {
  border: 1px solid var(--border); background: var(--bg); color: var(--text);
  cursor: pointer; border-radius: 999px; padding: .28rem .65rem; font-size: .78rem; font-weight: 700;
  transition: all var(--dur);
}
.rsvp-btn .rc { margin-left: .3rem; opacity: .75; font-size: .72rem; }
.rsvp-btn:hover { border-color: var(--brand-2); }
.rsvp-btn.yes.is-on   { background: var(--t-grass); color: #06371c; border-color: transparent; }
.rsvp-btn.maybe.is-on { background: var(--t-electric); color: #4a3b00; border-color: transparent; }
.rsvp-btn.no.is-on    { background: var(--t-fire); color: #4a1500; border-color: transparent; }
.att-group { margin: .5rem 0; }
.att-group .att-names { color: var(--muted); font-size: .86rem; margin-top: .15rem; }

/* ══ ENQUETES ══════════════════════════════════════════════ */
.polls-list { display: grid; gap: 1rem; }
.poll-card {
  background: var(--panel); border: 1px solid var(--border);
  border-radius: var(--radius); padding: var(--card-pad);
}
.poll-card .pc-head { display: flex; justify-content: space-between; gap: 1rem; align-items: flex-start; }
.poll-card h3 { margin: 0 0 .2rem; font-size: 1.15rem; }
.poll-status { font-size: .75rem; font-weight: 700; padding: .2rem .55rem; border-radius: 20px; white-space: nowrap; }
.poll-status.open { color: var(--call); background: rgba(33,192,122,.12); }
.poll-status.closed { color: var(--muted); background: var(--panel-2); }
.poll-options { display: grid; gap: .5rem; margin-top: .9rem; }
.poll-opt {
  position: relative; cursor: pointer; overflow: hidden;
  border: 1px solid var(--border); border-radius: 10px;
  padding: .65rem .8rem; background: var(--bg);
  display: flex; justify-content: space-between; gap: .5rem; align-items: center;
  font: inherit; color: var(--text); text-align: left; width: 100%;
}
.poll-opt:not(:disabled):hover { border-color: var(--brand-2); }
.poll-opt .bar {
  position: absolute; inset: 0 auto 0 0; z-index: 0;
  background: rgba(255, 203, 5, .14); width: 0; transition: width .5s ease;
}
.poll-opt.mine .bar { background: rgba(227, 53, 13, .22); }
.poll-opt .lbl, .poll-opt .pct { position: relative; z-index: 1; }
.poll-opt .pct { color: var(--muted); font-size: .82rem; font-weight: 700; }
.poll-opt.mine .lbl::after { content: " ✓"; color: var(--accent); }
.poll-foot { display: flex; justify-content: space-between; margin-top: .8rem; color: var(--muted); font-size: .8rem; }

/* ══ MODAL ═════════════════════════════════════════════════ */
.modal-backdrop {
  position: fixed; inset: 0; z-index: 40;
  /* Fundo quase opaco em vez de backdrop-filter: blur — o blur reamostra
     o desfoque a cada frame enquanto o fundo (.poke-bg) anima, derrubando
     o FPS ao interagir com o modal. Mesma decisão da .topbar. */
  background: rgba(6, 9, 16, .86);
  display: grid; place-items: center; padding: 1.2rem; overflow-y: auto;
}
.modal {
  width: 100%; max-width: 480px;
  box-sizing: border-box; min-height: 0;
  background: var(--panel); border: 1px solid var(--border);
  border-radius: var(--radius); padding: 1.5rem; box-shadow: var(--shadow);
  /* Conteúdo longo (ex.: um dia do Acervo com muito texto) precisa rolar
     dentro do modal em vez de estourar a tela sem alcance de scroll. */
  max-height: 88vh; overflow-y: auto; overscroll-behavior: contain;
}
.modal h3 { margin: 0 0 1rem; }
.modal .field { display: flex; flex-direction: column; gap: .3rem; margin-bottom: .8rem; }
.modal .field label { font-size: .82rem; font-weight: 600; }
.modal .actions { display: flex; justify-content: flex-end; gap: .6rem; margin-top: 1rem; }
.opt-row { display: flex; gap: .5rem; margin-bottom: .5rem; }
.opt-row input { flex: 1; }

/* ══ TOAST ═════════════════════════════════════════════════ */
.toast {
  position: fixed; bottom: 1.4rem; left: 50%; transform: translateX(-50%);
  background: var(--panel-2); border: 1px solid var(--border);
  color: var(--text); padding: .7rem 1.1rem; border-radius: 10px;
  box-shadow: var(--shadow); z-index: 4000; font-size: .9rem;
}
.toast.error { border-color: #ff5a5a; color: #ffbcbc; }
.toast.success { border-color: var(--call); }

.empty-state { text-align: center; color: var(--muted); padding: 2.5rem 1rem; }

/* ══════════════════════════════════════════════════════════════
   TEMA POKÉMON — pokébolas, sprites, animações e música
   (camada visual do painel interno da staff)
══════════════════════════════════════════════════════════════ */

/* ── Animações reutilizáveis ─────────────────────────────── */
@keyframes spin      { to { transform: rotate(360deg); } }
@keyframes floaty    { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-12px); } }
@keyframes pulse     { 0%,100% { transform: scale(1); } 50% { transform: scale(1.12); } }
@keyframes pop-in    { 0% { opacity: 0; transform: translateY(8px) scale(.98); } 100% { opacity: 1; transform: none; } }
@keyframes wiggle    { 0%,100% { transform: rotate(0); } 25% { transform: rotate(-8deg); } 75% { transform: rotate(8deg); } }
@keyframes drift     { from { transform: translate3d(0, 0, 0); } to { transform: translate3d(-70px, -60px, 0); } }

@media (prefers-reduced-motion: reduce) {
  .floaty, .poke-bg, .music-btn.playing, .btn-pokeball, .mem-reveal-sprite { animation: none !important; }
  /* Blinks/pulsos infinitos dos jogos bespoke (REC/LIVE/cursor) — estáticos. */
  .ld-rec, .ld-blink, .lm-live, .tri-live { animation: none !important; }
}

/* ── Fundo com pokébolas flutuantes ──────────────────────── */
.poke-bg {
  /* Padrão decorativo de pokébolas. ANTES tinha um "drift" infinito por
     transform — em PCs sem GPU (compositing por software) isso animava a tela
     inteira o tempo todo e travava TODAS as abas. Agora é estático: custo zero. */
  position: fixed; inset: 0; z-index: -1; pointer-events: none;
  background-image:
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='90' height='90' viewBox='0 0 90 90'%3E%3Cg fill='none' stroke='%23ffffff' stroke-opacity='0.045' stroke-width='3'%3E%3Ccircle cx='45' cy='45' r='30'/%3E%3Cline x1='15' y1='45' x2='75' y2='45'/%3E%3Ccircle cx='45' cy='45' r='9' fill='%23ffffff' fill-opacity='0.045'/%3E%3C/g%3E%3C/svg%3E");
}

/* ── Pokébola desenhada em CSS (substitui o badge "oP") ──── */
.brand-badge.pokeball {
  background: linear-gradient(#e3350d 0 50%, #f7f7f7 50% 100%);
  border: 3px solid #111; overflow: hidden; text-indent: -9999px;
  animation: pop-in .4s ease both;
}
.brand-badge.pokeball::before {
  content: ""; position: absolute; left: -3px; right: -3px;
  top: calc(50% - 2px); height: 4px; background: #111;
}
.brand-badge.pokeball::after {
  content: ""; position: absolute; left: 50%; top: 50%;
  width: 32%; height: 32%; transform: translate(-50%, -50%);
  border-radius: 50%; background: #fff; border: 3px solid #111;
  box-shadow: 0 0 0 2px #f7f7f7;
}
.brand-badge.pokeball { position: relative; }
.brand-badge.sm.pokeball::after { border-width: 2px; }

/* ── Mini pokébola girando dentro de botões ──────────────── */
.btn-pokeball {
  display: inline-block; width: 15px; height: 15px; vertical-align: -2px;
  border-radius: 50%; border: 2px solid #111;
  background:
    radial-gradient(circle at 50% 50%, #fff 0 22%, #111 22% 34%, transparent 34%),
    linear-gradient(#fff 0 46%, #111 46% 54%, #fff 54% 100%);
}
.btn:hover .btn-pokeball { animation: spin .7s linear infinite; }

/* ── Herói de login: Pokémon flutuando ───────────────────── */
.login-hero { display: grid; place-items: center; margin: -0.5rem 0 0.4rem; }
.login-sprite { width: 132px; height: 132px; object-fit: contain;
  filter: drop-shadow(0 12px 16px rgba(0,0,0,.45)); }
.floaty { animation: floaty 4s ease-in-out infinite; }
.login-card { position: relative; overflow: hidden; }
.login-card::after {
  content: ""; position: absolute; inset: auto -40px -60px auto;
  width: 160px; height: 160px; border-radius: 50%;
  background: radial-gradient(circle, rgba(255,203,5,.12), transparent 70%);
  pointer-events: none;
}

/* ── Botão de música ─────────────────────────────────────── */
.music-btn {
  width: 34px; height: 34px; border-radius: 50%; cursor: pointer;
  border: 1px solid var(--border); background: var(--panel);
  color: var(--text); font-size: 1rem; line-height: 1;
  display: grid; place-items: center; transition: background .2s, transform .1s;
}
.music-btn:hover { background: var(--panel-2); }
.music-btn:active { transform: scale(.92); }
.music-btn.playing {
  border-color: var(--accent);
  box-shadow: 0 0 0 3px rgba(255,203,5,.15);
  animation: pulse 1.4s ease-in-out infinite;
}

/* Sprite decorativo no cartão do dia em destaque */
.day-sprite {
  width: 64px; height: 64px; object-fit: contain; float: right;
  margin: -0.4rem -0.3rem 0.3rem 0.6rem;
  filter: drop-shadow(0 6px 8px rgba(0,0,0,.4));
  animation: floaty 5s ease-in-out infinite;
}

/* Contador de pendências na aba Admin */
.nav-badge {
  display: inline-grid; place-items: center;
  min-width: 18px; height: 18px; padding: 0 5px; margin-left: .4rem;
  border-radius: 10px; background: var(--brand); color: #fff;
  font-size: .7rem; font-weight: 800; vertical-align: middle;
  animation: pop-in .3s ease both;
}

/* Área de envio de atividade embutida (cartão de hoje + aba Atividades) */
.submission-area { margin-top: 1.1rem; padding-top: 1rem; border-top: 1px dashed var(--border); }
.sa-status { display: flex; align-items: center; justify-content: space-between; gap: .5rem; margin-bottom: .5rem; }
.submission-area textarea { width: 100%; min-height: 110px; resize: vertical; line-height: 1.5; }
.submission-area .ac-actions { display: flex; justify-content: flex-end; gap: .6rem; margin-top: .6rem; }
/* Passo-a-passo (atividade em partes/cenários) */
.stepper { margin: .3rem 0 .2rem; }
.stepper-dots { display: flex; gap: .4rem; flex-wrap: wrap; margin-bottom: .6rem; }
.stepper-dot { width: 28px; height: 28px; padding: 0; border-radius: 50%; border: 1px solid var(--border); background: transparent; color: var(--muted, #6b7280); font-weight: 600; font-size: .82rem; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; transition: all .15s; }
.stepper-dot.filled { border-color: var(--accent, #16a34a); color: var(--accent, #16a34a); }
.stepper-dot.active { background: var(--brand, #2a4b8d); border-color: transparent; color: #fff; }
.stepper-head { display: flex; align-items: baseline; gap: .5rem; flex-wrap: wrap; margin-bottom: .3rem; }
.stepper-head .step-count { font-size: .78rem; font-weight: 700; color: var(--muted, #6b7280); text-transform: uppercase; letter-spacing: .03em; }
.stepper-head .step-label { font-size: 1.02rem; }
.stepper-prompt { margin: .1rem 0 .5rem; }
.stepper textarea { width: 100%; min-height: 120px; resize: vertical; line-height: 1.5; }
.stepper-nav { display: flex; justify-content: space-between; gap: .6rem; margin-top: .5rem; }
.warmup-box {
  border: 1px dashed var(--brand-2); border-radius: 12px; padding: .7rem .9rem; margin-bottom: .8rem;
  background: linear-gradient(180deg, rgba(120,120,255,.06), transparent);
}
.warmup-box p { margin: .25rem 0 .5rem; }

/* Trava dura da atividade: checklist "ler + minigame" antes de liberar o envio. */
.act-gate {
  border: 1px solid var(--border); border-left: 3px solid var(--brand);
  border-radius: 12px; padding: .7rem .9rem; margin: .9rem 0;
  background: linear-gradient(180deg, rgba(238,21,21,.05), transparent);
  display: grid; gap: .5rem;
}
.act-gate .gate-item { display: flex; align-items: center; gap: .5rem; font-weight: 600; }
.act-gate .gate-item input[type=checkbox] { width: 18px; height: 18px; flex: 0 0 auto; }
.act-gate .gate-item.ok { color: var(--ok, #57c973); }
.act-gate p { margin: 0; }

.nav-btn { transition: color .2s, background .2s, transform .08s; }
.nav-btn:active { transform: translateY(1px); }
.tab-panel { animation: pop-in .35s ease both; }

/* Pokébola giratória como loader */
.pokeloader {
  width: 30px; height: 30px; margin: 1.5rem auto; border-radius: 50%;
  border: 2px solid #111; overflow: hidden; position: relative;
  background: linear-gradient(#e3350d 0 50%, #f7f7f7 50% 100%);
  animation: spin 1s linear infinite;
}
.pokeloader::before { content:""; position:absolute; left:0; right:0; top:calc(50% - 1.5px); height:3px; background:#111; }
.pokeloader::after { content:""; position:absolute; left:50%; top:50%; width:32%; height:32%; transform:translate(-50%,-50%); border-radius:50%; background:#fff; border:2px solid #111; }

/* ══ ATIVIDADES (submissões) ═══════════════════════════════ */
/* ══ ATIVIDADES — hero temático (mascote + case de insígnias) ═══════ */
.act-hero {
  --ah-a: #f0a83c; --ah-b: #e8743a; --ah-c: #f7c948;
  position: relative; overflow: hidden; isolation: isolate;
  display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: 1.1rem;
  margin-top: 1rem; padding: 1rem 1.15rem; border-radius: 20px; color: #fff;
  background:
    radial-gradient(130% 130% at 0% 0%, rgba(255,255,255,.22), transparent 45%),
    linear-gradient(135deg, var(--ah-b), var(--ah-a) 55%, var(--ah-c));
  border: 1px solid rgba(255,255,255,.4);
  box-shadow: 0 14px 34px rgba(120,70,20,.32), inset 0 1px 0 rgba(255,255,255,.3);
}
.act-hero .ah-glow {
  content: ''; position: absolute; z-index: 0; right: -50px; top: -54px;
  width: 190px; height: 190px; border-radius: 50%; pointer-events: none; opacity: .5;
  border: 12px solid rgba(255,255,255,.16);
  background: radial-gradient(circle, #fff 0 12px, rgba(255,255,255,.35) 12px 21px, transparent 21px) center/100% 100% no-repeat;
}
.act-hero .ah-mascot { position: relative; z-index: 1; width: 96px; height: 96px; display: grid; place-items: center; }
.act-hero .ah-eevee {
  width: 92px; height: 92px; image-rendering: pixelated; position: relative; z-index: 1;
  filter: drop-shadow(0 4px 5px rgba(0,0,0,.32)); animation: ahBob 3s ease-in-out infinite;
}
.act-hero .ah-mascot-shadow {
  position: absolute; bottom: 4px; left: 50%; transform: translateX(-50%);
  width: 60px; height: 12px; border-radius: 50%; background: rgba(0,0,0,.28); filter: blur(3px);
}
@keyframes ahBob { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-6px); } }
.act-hero .ah-main { position: relative; z-index: 1; min-width: 0; }
.act-hero .eyebrow { color: rgba(255,255,255,.92); }
.act-hero .ah-title { margin: .1rem 0 .25rem; font-size: 1.5rem; line-height: 1.05; color: #fff; text-shadow: 0 1px 2px rgba(0,0,0,.25); }
.act-hero .ah-sub { margin: 0 0 .55rem; opacity: .92; line-height: 1.35; }
.act-hero .ah-prog-top { display: flex; align-items: baseline; justify-content: space-between; gap: .5rem; margin-bottom: .28rem; }
.act-hero .ah-prog-lbl { font-size: .68rem; font-weight: 800; text-transform: uppercase; letter-spacing: .06em; opacity: .95; }
.act-hero .ah-prog-pct { font-size: .98rem; font-weight: 900; }
.act-hero .ah-bar { height: 10px; background: rgba(0,0,0,.24); border-radius: 999px; overflow: hidden; box-shadow: inset 0 1px 2px rgba(0,0,0,.32); }
.act-hero .ah-fill { height: 100%; width: 0; border-radius: 999px; background: linear-gradient(90deg, #fff, #ffe89a); box-shadow: 0 0 10px rgba(255,255,255,.55); transition: width .6s ease; }
.act-hero .ah-badges { display: flex; flex-wrap: wrap; gap: .32rem; margin-top: .65rem; }
.act-hero .ah-badge {
  width: 24px; height: 24px; border-radius: 50%; display: grid; place-items: center;
  font-size: .7rem; font-weight: 900; line-height: 1;
  background: rgba(255,255,255,.14); border: 1.5px solid rgba(255,255,255,.4); color: #fff;
  box-shadow: inset 0 1px 2px rgba(0,0,0,.18);
}
.act-hero .ah-badge.won { background: linear-gradient(#fff2b0, #ffcf3d); color: #7a4b00; border-color: #fff; box-shadow: 0 2px 6px rgba(0,0,0,.28); }
.act-hero .ah-badge.sent { background: rgba(255,255,255,.28); }
.act-hero .ah-badge.redo { background: rgba(255,120,60,.55); border-color: #ffd3b0; }
.act-hero .ah-stats { position: relative; z-index: 1; display: flex; gap: .5rem; }
.act-hero .ah-stat {
  display: grid; justify-items: center; gap: .1rem; min-width: 62px; padding: .5rem .4rem;
  border-radius: 12px; background: rgba(0,0,0,.18); border: 1px solid rgba(255,255,255,.24);
}
.act-hero .ah-stat b { font-size: 1.4rem; font-weight: 900; line-height: 1; }
.act-hero .ah-stat span { font-size: .6rem; font-weight: 800; text-transform: uppercase; letter-spacing: .04em; opacity: .88; }
.act-hero .ah-stat.won b { color: #fff0a6; }
@media (max-width: 720px) {
  .act-hero { grid-template-columns: auto 1fr; }
  .act-hero .ah-stats { grid-column: 1 / -1; justify-content: flex-start; }
}
@media (max-width: 460px) {
  .act-hero { grid-template-columns: 1fr; text-align: left; }
  .act-hero .ah-mascot { justify-self: start; }
}

.activities-list { display: grid; gap: 1rem; margin-top: 1rem; }
.activity-card {
  position: relative; overflow: hidden;
  background: var(--panel); border: 1px solid var(--border);
  border-radius: var(--radius); padding: var(--card-pad);
  transition: border-color .15s, box-shadow .15s, transform .1s;
}
.activity-card::before { /* barra lateral "tipo" por status */
  content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 4px;
  background: var(--muted); opacity: .7;
}
.activity-card.ac-todo::before          { background: var(--accent); }
.activity-card.ac-pending::before       { background: var(--accent); }
.activity-card.ac-approved::before      { background: var(--call); }
.activity-card.ac-needs_revision::before { background: var(--deadline); }
.activity-card.collapsed:hover { border-color: var(--brand-2); box-shadow: var(--shadow); transform: translateY(-1px); }
.activity-card .ac-head {
  display: flex; justify-content: space-between; gap: .8rem; align-items: center;
  width: 100%; text-align: left; background: none; border: none; color: inherit;
  font: inherit; cursor: pointer; padding: 0;
}
.activity-card .ac-mon {
  position: relative; flex: 0 0 auto; width: 56px; height: 56px; display: grid; place-items: center;
  background: radial-gradient(circle at 50% 35%, color-mix(in srgb, var(--brand) 16%, var(--panel)), var(--panel-2));
  border: 1px solid var(--border); border-radius: 13px;
}
.activity-card .ac-mon-sprite { width: 48px; height: 48px; image-rendering: pixelated; filter: drop-shadow(0 2px 2px rgba(0,0,0,.25)); }
.activity-card .ac-mon-ball {
  position: absolute; right: -4px; bottom: -4px; width: 16px; height: 16px; border-radius: 50%;
  background: linear-gradient(#ff5c5c 0 46%, #1c1c1c 46% 54%, #fff 54% 100%);
  box-shadow: 0 1px 3px rgba(0,0,0,.3), inset 0 0 0 1.5px rgba(0,0,0,.35);
}
.activity-card .ac-head-txt { min-width: 0; flex: 1; }
.activity-card .ac-head-right { display: flex; align-items: center; gap: .6rem; flex: 0 0 auto; }
.activity-card .ac-caret { transition: transform .2s ease; color: var(--muted); font-size: .9rem; }
.activity-card:not(.collapsed) .ac-caret { transform: rotate(90deg); }
.activity-card.collapsed .ac-body { display: none; }
.activity-card .ac-body { margin-top: .7rem; }
.activity-card h3 { margin: .1rem 0 .3rem; font-size: 1.1rem; }
.activity-card textarea { width: 100%; min-height: 120px; resize: vertical; margin-top: .6rem; line-height: 1.5; }
.activity-card .ac-actions { display: flex; justify-content: flex-end; gap: .6rem; margin-top: .7rem; }
.sub-status {
  font-size: .72rem; font-weight: 700; text-transform: uppercase; letter-spacing: .04em;
  padding: .22rem .6rem; border-radius: 20px; white-space: nowrap;
}
.sub-status.pending        { color: var(--accent); background: rgba(255,203,5,.12); }
.sub-status.approved       { color: var(--call);   background: rgba(33,192,122,.14); }
.sub-status.needs_revision { color: var(--deadline); background: rgba(255,138,61,.14); }

/* Metadados da entrega: prazo, atraso e nota. */
.sa-meta { display: flex; flex-wrap: wrap; gap: .4rem; margin-bottom: .6rem; }
.meta-chip {
  font-size: .74rem; font-weight: 600; padding: .2rem .55rem; border-radius: 20px;
  background: var(--bg); color: var(--muted); border: 1px solid var(--border);
}
.meta-chip.meta-late    { color: var(--deadline); border-color: rgba(255,138,61,.4); background: rgba(255,138,61,.1); }
.meta-chip.meta-late-ok { color: var(--call);     border-color: rgba(33,192,122,.4); background: rgba(33,192,122,.1); }
.meta-chip.meta-grade   { color: var(--accent);   border-color: rgba(255,203,5,.4);  background: rgba(255,203,5,.1); }

/* Linha de nota + atraso justificado no card de correção. */
.rc-grade-row { display: flex; align-items: center; flex-wrap: wrap; gap: .5rem .8rem; margin-top: .7rem; }
.grade-input { width: 5rem; text-align: center; }
.justify-check { display: inline-flex; align-items: center; gap: .35rem; font-size: .82rem; color: var(--muted); cursor: pointer; }
.justify-check input { width: auto; }
.feedback-box {
  margin-top: .8rem; padding: .8rem 1rem; border-radius: 10px;
  background: var(--bg); border-left: 3px solid var(--accent);
}
.feedback-box .eyebrow { color: var(--accent); }
.feedback-box p { margin: .3rem 0 0; line-height: 1.5; }
.submitted-text {
  margin-top: .6rem; padding: .8rem 1rem; border-radius: 10px;
  background: var(--bg); border: 1px solid var(--border);
  white-space: pre-wrap; line-height: 1.55; font-size: .92rem;
}

/* ══ ADMIN ═════════════════════════════════════════════════ */
/* ══ Console de Admin (sidebar + conteúdo) ═════════════════════ */
.admin-console { display: grid; grid-template-columns: 216px minmax(0, 1fr); gap: 1.1rem; align-items: start; max-width: 1240px; margin: 0 auto; }
.admin-nav {
  position: sticky; top: .8rem; display: flex; flex-direction: column; gap: .5rem;
  background: var(--panel); border: 1px solid var(--border); border-radius: var(--radius); padding: .8rem;
}
.admin-nav-brand { display: flex; align-items: center; gap: .5rem; padding: .2rem .3rem .6rem; border-bottom: 1px solid var(--border); }
.anv-logo { font-size: 1.5rem; }
.anv-eyebrow { display: block; font-size: .62rem; text-transform: uppercase; letter-spacing: .08em; color: var(--muted); font-weight: 800; }
.anv-title { font-family: var(--font-display); font-size: 1.05rem; }
.admin-nav-list { display: flex; flex-direction: column; gap: .25rem; }
.admin-subtab {
  display: flex; align-items: center; gap: .6rem; text-align: left; width: 100%;
  background: transparent; border: 1px solid transparent; color: var(--muted);
  font: inherit; font-weight: 700; cursor: pointer; padding: .55rem .7rem; border-radius: 10px;
  transition: background var(--dur-fast), color var(--dur-fast);
}
.admin-subtab .asb-ico { font-size: 1.1rem; width: 1.4rem; text-align: center; }
.admin-subtab:hover { color: var(--text); background: color-mix(in srgb, var(--brand) 8%, var(--panel-2)); }
.admin-subtab.active { color: #fff; background: linear-gradient(180deg, #ff5a48, var(--brand)); border-color: transparent; box-shadow: var(--shadow-sm); }
.admin-content { min-width: 0; }
@media (max-width: 780px) {
  .admin-console { grid-template-columns: 1fr; }
  /* min-width:0 deixa a barra de abas rolar em vez de esticar o console. */
  .admin-nav { position: static; flex-direction: column; min-width: 0; }
  .admin-nav-brand { display: none; }
  .admin-nav-list { flex-direction: row; overflow-x: auto; gap: .35rem; padding-bottom: .2rem; }
  /* width:auto anula o width:100% do desktop (senão cada aba quer a largura
     toda e a barra horizontal estoura para milhares de px). */
  .admin-subtab { flex: 0 0 auto; width: auto; padding: .5rem .7rem; }
  .admin-subtab .asb-lbl { white-space: nowrap; }
}

/* Visão geral: cabeçalho + KPIs + ações rápidas */
.admin-head { display: flex; align-items: center; justify-content: space-between; gap: .8rem; margin-bottom: 1rem; flex-wrap: wrap; }
.admin-role-chip {
  font-size: .72rem; font-weight: 800; color: var(--brand);
  background: color-mix(in srgb, var(--brand) 12%, var(--panel)); border: 1px solid color-mix(in srgb, var(--brand) 35%, var(--border));
  border-radius: 999px; padding: .25rem .7rem;
}
.kpi-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: .7rem; margin-bottom: 1.2rem; }
.kpi-card {
  --kpi: var(--brand); display: flex; align-items: center; gap: .7rem;
  background: var(--panel); border: 1px solid var(--border); border-left: 4px solid var(--kpi);
  border-radius: 12px; padding: .8rem .9rem;
}
.kpi-ico { font-size: 1.6rem; line-height: 1; }
.kpi-body { display: flex; flex-direction: column; min-width: 0; }
.kpi-val { font-family: var(--font-display); font-weight: 800; font-size: 1.5rem; color: var(--kpi); line-height: 1.05; }
.kpi-lbl { font-size: .74rem; color: var(--muted); font-weight: 600; }
.admin-worlds { margin-bottom: 1.2rem; }
.world-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: .6rem; margin-top: .5rem; }
.world-card { background: var(--panel); border: 1px solid var(--border); border-radius: 12px; padding: .7rem .8rem; display: flex; flex-direction: column; gap: .4rem; }
.wc-head { display: flex; align-items: center; justify-content: space-between; gap: .5rem; }
.wc-count { font-size: .8rem; font-weight: 800; color: var(--muted); }
.wc-bar { height: 7px; background: var(--panel-2); border-radius: 999px; overflow: hidden; border: 1px solid var(--border); }
.wc-fill { height: 100%; background: linear-gradient(90deg, var(--t-electric), var(--t-grass)); border-radius: 999px; }
.wc-meta { display: flex; justify-content: space-between; gap: .5rem; }
.wc-pend { color: var(--t-fire); font-weight: 700; }
.ann-world { font-size: .62rem; font-weight: 800; color: var(--t-water); background: color-mix(in srgb, var(--t-water) 14%, var(--panel)); border: 1px solid color-mix(in srgb, var(--t-water) 40%, var(--border)); border-radius: 999px; padding: .1rem .45rem; }
.ann-world-filter { font: inherit; padding: .35rem .6rem; border-radius: 999px; border: 1px solid var(--border); background: var(--panel); color: var(--text); }

/* ── 🔍 Jogo dos 7 erros (cena estilo foto) ── */
.sd-body { display: flex; flex-direction: column; gap: .6rem; }
.sd-info { font-family: var(--font-display); font-weight: 800; text-align: center; }
.sd-scenes { display: grid; grid-template-columns: 1fr 1fr; gap: .8rem; }
/* Mobile: mantém lado a lado com scroll horizontal — empilhado impossibilita comparar */
@media (max-width: 600px) {
  .sd-scenes { gap: .4rem; }
  /* Cena mais alta no celular → 6 linhas da grade viram alvos de toque maiores */
  .sd-scene { min-height: 280px; }
  .sd-tag { font-size: .65rem; font-weight: 800; padding: .1rem .3rem; }
}
.sd-panel { display: flex; flex-direction: column; gap: .3rem; }
.sd-tag { font-size: .68rem; font-weight: 800; text-transform: uppercase; letter-spacing: .05em; color: var(--muted); text-align: center; }
.sd-scene {
  position: relative; width: 100%; aspect-ratio: 3 / 4; border-radius: 14px; overflow: hidden;
  border: 2px solid var(--border);
  background:
    radial-gradient(60% 40% at 30% 20%, rgba(255,255,255,.14) 0, transparent 60%),
    linear-gradient(160deg, #2a3350, #141a2c);
}
.sd-spot { position: absolute; transform: translate(-50%, -50%); padding: 0; border: none; background: transparent; cursor: pointer; display: grid; place-items: center; border-radius: 8px; }
.sd-spot:hover { background: rgba(255,255,255,.08); }
.sd-img { width: 100%; height: 100%; object-fit: contain; image-rendering: pixelated; filter: drop-shadow(0 2px 3px rgba(0,0,0,.4)); pointer-events: none; }
.sd-spot.sd-hit { background: transparent; cursor: default; box-shadow: 0 0 0 3px var(--t-grass), 0 0 12px rgba(70,200,90,.6); border-radius: 50%; }
.sd-spot.sd-miss { animation: sdMiss .4s ease; box-shadow: 0 0 0 3px var(--t-fire); border-radius: 50%; }
@keyframes sdMiss { 0%,100% { transform: translate(-50%,-50%); } 25% { transform: translate(calc(-50% - 4px),-50%); } 75% { transform: translate(calc(-50% + 4px),-50%); } }

/* ── 🤪 Pega o Pokémon (reação) ── */
.whack-body { display: flex; flex-direction: column; gap: .6rem; }
.whack-hud { display: flex; justify-content: space-between; font-family: var(--font-display); font-weight: 800; }
.whack-arena {
  position: relative; width: 100%; aspect-ratio: 4 / 3; border-radius: 14px; overflow: hidden; border: 2px solid var(--border);
  background: radial-gradient(70% 50% at 50% 20%, rgba(255,255,255,.12) 0, transparent 60%), linear-gradient(170deg, #3a7bd5, #1d3a63);
}
.whack-arena.whack-shake { animation: whackShake .3s ease; }
@keyframes whackShake { 0%,100% { transform: translateX(0); } 25% { transform: translateX(-6px); } 75% { transform: translateX(6px); } }
.whack-target { position: absolute; width: 15%; aspect-ratio: 1; padding: 0; border: none; background: transparent; cursor: pointer; animation: whackPop .18s ease; }
.whack-target:active { transform: scale(.9); }
.whack-target.bomb { filter: drop-shadow(0 0 6px rgba(255,60,40,.8)); }
.whack-img { width: 100%; height: 100%; object-fit: contain; image-rendering: pixelated; pointer-events: none; }
@keyframes whackPop { from { transform: scale(.3); opacity: 0; } to { transform: scale(1); opacity: 1; } }
/* Pré-mentoria: esconde abas ainda não liberadas. */
.nav-btn.pre-hidden { display: none !important; }

/* ── ⚔️ Batalha PvP ao vivo ── */
.pvp-body { display: flex; flex-direction: column; gap: .7rem; flex: 1 1 auto; }
.pvp-countdown { display: flex; flex-direction: column; align-items: center; gap: .5rem; padding: 2rem 0; text-align: center; }
.pvp-cd-vs { font-family: var(--font-display); font-weight: 800; font-size: 1.2rem; }
.pvp-dots { font-size: .7rem; letter-spacing: 1px; margin-top: 2px; }
.bt-timer { font-family: var(--font-pixel); font-weight: 400; font-size: .6rem; text-align: center; color: #1c7c3a; padding: 3px 0; }
.bt-timer.low { color: #e3350d; animation: pvpPulse 1s ease infinite; }
.pvp-cd-num { font-family: var(--font-display); font-weight: 800; font-size: 4rem; color: var(--brand); animation: pvpPulse 1s ease infinite; }
@keyframes pvpPulse { 0%,100% { transform: scale(1); } 50% { transform: scale(1.25); } }
.pvp-wait { display: flex; flex-direction: column; align-items: center; gap: .8rem; padding: 2rem 0; }
.pvp-scene {
  position: relative; border-radius: 16px; padding: 1rem 1.1rem; min-height: min(52vh, 460px); flex: 1 1 auto;
  display: flex; flex-direction: column; justify-content: space-between; border: 3px solid rgba(0,0,0,.4);
  background: linear-gradient(180deg, #6fb7ee 0%, #bfe6f4 44%, #b7e58f 47%, #7ecb57 72%, #5fae44 100%);
}
.pvp-row { display: flex; align-items: flex-end; justify-content: space-between; gap: 1rem; }
.pvp-row.pvp-top { align-items: flex-start; }
.pvp-stage { display: grid; place-items: center; min-width: 120px; }
.pvp-mon { width: 150px; height: 150px; image-rendering: pixelated; object-fit: contain; filter: drop-shadow(0 4px 5px rgba(0,0,0,.35)); }
.pvp-mon.back { width: 180px; height: 180px; }
.pvp-mon.shiny { filter: drop-shadow(0 0 8px rgba(255,226,122,.85)) drop-shadow(0 4px 5px rgba(0,0,0,.35)); }
.pvp-hpbox { background: #f7f4e7; color: #2b2b2b; border: 2px solid #2b2b2b; border-radius: 10px; padding: .4rem .6rem; min-width: 160px; box-shadow: 0 3px 0 rgba(0,0,0,.3); }
.pvp-hpname { display: flex; justify-content: space-between; align-items: baseline; gap: .5rem; font-family: var(--font-display); font-weight: 800; font-size: .85rem; }
.pvp-hptrack { height: 8px; background: #4a4a3a; border-radius: 999px; overflow: hidden; border: 1px solid #2b2b2b; margin: .25rem 0; }
.pvp-hpfill { height: 100%; border-radius: 999px; transition: width .5s cubic-bezier(.2,.8,.2,1); }
.pvp-hpfill.ok { background: linear-gradient(#7be07b, #37b437); }
.pvp-hpfill.mid { background: linear-gradient(#ffe066, #f0b429); }
.pvp-hpfill.low { background: linear-gradient(#ff8a7a, #e3350d); }
.pvp-hpnum { text-align: right; font-size: .72rem; font-weight: 800; font-variant-numeric: tabular-nums; }
@media (max-width: 560px) { .pvp-mon { width: 108px; height: 108px; } .pvp-mon.back { width: 128px; height: 128px; } .pvp-hpbox { min-width: 0; width: 150px; } }
.admin-qa { margin-bottom: 1.2rem; }
.admin-qa-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: .6rem; margin-top: .5rem; }
.admin-qa-btn {
  display: flex; align-items: center; gap: .6rem; cursor: pointer; text-align: left;
  background: var(--panel); border: 1px solid var(--border); border-radius: 12px; padding: .75rem .8rem;
  font: inherit; font-weight: 700; color: var(--text); transition: transform var(--dur-fast), border-color var(--dur-fast);
}
.admin-qa-btn:hover { transform: translateY(-2px); border-color: var(--brand); }
.admin-qa-btn .qa-ico { font-size: 1.25rem; }
.admin-panel-card { background: var(--panel); border: 1px solid var(--border); border-radius: var(--radius); padding: 1rem; }
.admin-panel-card h3 { margin: 0 0 .6rem; }
.admin-pend-list { display: flex; flex-direction: column; gap: .35rem; }
.admin-pend-row {
  display: flex; align-items: center; justify-content: space-between; gap: .6rem; cursor: pointer;
  background: var(--panel-2); border: 1px solid var(--border); border-radius: 10px; padding: .5rem .7rem;
  font: inherit; font-weight: 600; color: var(--text); transition: border-color var(--dur-fast);
}
.admin-pend-row:hover { border-color: var(--brand); }

/* ══ Treinadores: toolbar + grade de cards ══════════════════════ */
.admin-toolbar-row { display: flex; align-items: center; gap: .7rem; flex-wrap: wrap; margin: .4rem 0 1rem; }
.admin-search { flex: 1 1 260px; display: flex; align-items: center; }
.admin-search-inp {
  width: 100%; font: inherit; padding: .55rem .8rem; border-radius: 999px;
  border: 1px solid var(--border); background: var(--panel); color: var(--text);
}
.admin-filter-chips { display: flex; gap: .35rem; flex-wrap: wrap; }
/* Barra "iniciar mentoria do mundo" como cartão, não solta. */
.start-mentoria-bar {
  background: var(--panel); border: 1px solid var(--border); border-radius: 12px;
  padding: .6rem .8rem !important; margin-bottom: 1.1rem !important;
}
.start-mentoria-bar select { max-width: 160px; }

/* Lista de treinadores: linhas compactas; edição abre em modal (uc-editor). */
.user-grid { display: flex; flex-direction: column; gap: .4rem; }
.ur-row {
  display: flex; align-items: center; gap: .7rem; width: 100%; text-align: left; cursor: pointer;
  background: var(--panel); border: 1px solid var(--border); border-left: 3px solid var(--border);
  border-radius: 12px; padding: .5rem .7rem; color: inherit; transition: border-color .12s, transform .12s, background .12s;
}
.ur-row:hover { border-color: var(--accent); transform: translateX(2px); background: var(--panel-2); }
.ur-row.is-inactive { opacity: .55; }
.ur-row.role-l-admin { border-left-color: var(--brand); }
.ur-row.role-l-cm { border-left-color: var(--t-psychic); }
.ur-row.role-l-gm { border-left-color: var(--t-water); }
.ur-row.role-l-tutor { border-left-color: var(--t-dragon); }
.ur-row.role-l-help { border-left-color: var(--t-grass); }
.ur-row.role-l-mentee { border-left-color: var(--call); }
.ur-avatar { flex: 0 0 auto; width: 38px; height: 38px; border-radius: 10px; display: grid; place-items: center; font-family: var(--font-display); font-weight: 800; font-size: 1.1rem; color: #fff; background: var(--muted); }
.ur-main { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: .12rem; }
.ur-line1 { display: flex; align-items: center; gap: .4rem; flex-wrap: wrap; }
.ur-name { font-size: .95rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 100%; }
.ur-tag { font-size: .7rem; font-weight: 800; border-radius: 999px; padding: .05rem .35rem; }
.ur-tag.mentor { background: color-mix(in srgb, var(--t-grass, #63c267) 22%, transparent); }
.ur-tag.off { background: color-mix(in srgb, var(--t-fire, #ee5a4e) 22%, transparent); }
.ur-tag.key { background: color-mix(in srgb, var(--t-electric, #f6c744) 26%, transparent); }
.ur-tag.pend { background: color-mix(in srgb, #ff9f43 26%, transparent); }
.ur-sub { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ur-edit { flex: 0 0 auto; opacity: .6; }
/* Linha com área principal clicável (Perfil) + botão pequeno (Cartão). */
.ur-row:has(.ur-open) { padding: 0; overflow: hidden; }
.ur-open { flex: 1; min-width: 0; display: flex; align-items: center; gap: .7rem; background: none; border: none; color: inherit; cursor: pointer; text-align: left; padding: .5rem .7rem; }
.ur-open:hover { background: var(--panel-2); }
.ur-mini { flex: 0 0 auto; background: none; border: none; border-left: 1px solid var(--border); cursor: pointer; font-size: 1.05rem; padding: .5rem .7rem; align-self: stretch; }
.ur-mini:hover { background: var(--panel-2); }

/* Editor de treinador (modal): reaproveita .uc-* já existentes. */
.uc-editor { display: flex; flex-direction: column; gap: .8rem; max-width: 560px; }
.uc-editor-head { display: flex; align-items: center; gap: .7rem; border-bottom: 1px solid var(--border); padding-bottom: .7rem; border-left: 3px solid var(--border); padding-left: .6rem; border-radius: 4px; }
.uc-editor-head.role-l-admin { border-left-color: var(--brand); }
.uc-editor-head.role-l-cm { border-left-color: var(--t-psychic); }
.uc-editor-head.role-l-gm { border-left-color: var(--t-water); }
.uc-editor-head.role-l-tutor { border-left-color: var(--t-dragon); }
.uc-editor-head.role-l-help { border-left-color: var(--t-grass); }
.uc-editor-head.role-l-mentee { border-left-color: var(--call); }
.user-card {
  display: flex; flex-direction: column; gap: .7rem;
  background: var(--panel); border: 1px solid var(--border); border-radius: 16px; padding: 1rem;
  box-shadow: var(--shadow-sm); transition: border-color var(--dur-fast), box-shadow var(--dur-fast);
}
.user-card:hover { box-shadow: var(--shadow); }
.user-card.is-inactive { opacity: .62; }
.uc-head { display: flex; align-items: center; gap: .7rem; }
.uc-avatar {
  flex: 0 0 auto; width: 44px; height: 44px; border-radius: 12px; display: grid; place-items: center;
  font-family: var(--font-display); font-weight: 800; font-size: 1.3rem; color: #fff; background: var(--brand);
}
.uc-id { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: .3rem; }
.uc-id .email-inp { font-weight: 800; font-size: 1rem; border: 1px solid transparent; background: transparent; padding: .15rem .3rem; border-radius: 8px; }
.uc-id .email-inp:hover, .uc-id .email-inp:focus { border-color: var(--border); background: var(--panel-2); }
.uc-tags { display: flex; align-items: center; gap: .35rem; flex-wrap: wrap; }
.uc-role {
  font-size: .64rem; font-weight: 800; text-transform: uppercase; letter-spacing: .04em; color: #fff;
  padding: .12rem .5rem; border-radius: 999px; background: var(--muted);
}
/* Cores por cargo (avatar + selo). */
.uc-avatar.role-admin, .uc-role.role-admin { background: var(--brand); }
.uc-avatar.role-cm, .uc-role.role-cm { background: var(--t-psychic); }
.uc-avatar.role-gm, .uc-role.role-gm { background: var(--t-water); }
.uc-avatar.role-tutor, .uc-role.role-tutor { background: var(--t-dragon); }
.uc-avatar.role-help, .uc-role.role-help { background: var(--t-grass); }
.uc-avatar.role-mentee, .uc-role.role-mentee { background: var(--call); }
.uc-inactive-tag { font-size: .64rem; font-weight: 800; color: var(--danger, #e3350d); background: color-mix(in srgb, #e3350d 12%, var(--panel)); border-radius: 999px; padding: .12rem .5rem; }
.uc-coins { font-size: .66rem; font-weight: 800; color: #a5730a; background: color-mix(in srgb, #f2b705 18%, var(--panel)); border: 1px solid color-mix(in srgb, #f2b705 45%, var(--border)); border-radius: 999px; padding: .12rem .5rem; }
.uc-note { font-size: .78rem; background: var(--panel-2); border: 1px dashed var(--border); border-radius: 8px; padding: .4rem .6rem; }
.uc-note.warn { border-color: var(--t-fire); color: color-mix(in srgb, var(--t-fire) 70%, var(--text)); }
.uc-fields { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .55rem .7rem; }
.uc-field { display: flex; flex-direction: column; gap: .2rem; min-width: 0; }
.uc-field > label { font-size: .66rem; font-weight: 800; text-transform: uppercase; letter-spacing: .03em; color: var(--muted); }
.uc-field select, .uc-field input[type="text"], .uc-field input[type="date"] {
  width: 100%; font: inherit; padding: .4rem .55rem; border-radius: 9px; border: 1px solid var(--border); background: var(--panel-2); color: var(--text);
}
.uc-field .world-checklist { grid-template-columns: repeat(2, 1fr); gap: .1rem .4rem; }
.uc-switch { display: inline-flex; align-items: center; gap: .4rem; font-size: .84rem; font-weight: 600; cursor: pointer; padding: .3rem 0; }
.uc-actions { display: flex; flex-wrap: wrap; gap: .4rem; padding-top: .7rem; border-top: 1px solid var(--border); }
.uc-actions .btn { flex: 0 0 auto; }
.btn-danger { background: #e3350d; border-color: #b3260a; color: #fff; }
.btn-danger:hover { filter: brightness(1.08); }
@media (max-width: 420px) { .uc-fields { grid-template-columns: 1fr; } }

/* ══ Progresso: ferramentas em grade + cards de mentorado ══════ */
.admin-tools-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: .6rem; margin: .3rem 0 .4rem; }
.admin-tool {
  display: flex; align-items: center; gap: .55rem; cursor: pointer; text-align: left; width: 100%;
  background: var(--panel); border: 1px solid var(--border); border-radius: 12px; padding: .65rem .7rem;
  font: inherit; font-weight: 700; font-size: .84rem; color: var(--text);
  transition: transform var(--dur-fast), border-color var(--dur-fast);
}
.admin-tool:hover { transform: translateY(-2px); border-color: var(--brand); }
.admin-tool .at-ico { font-size: 1.15rem; }
.admin-tool .at-lbl { min-width: 0; }
.mentee-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: .7rem; }
.mentee-card {
  display: flex; flex-direction: column; gap: .6rem;
  background: var(--panel); border: 1px solid var(--border); border-radius: 14px; padding: .8rem .9rem;
  box-shadow: var(--shadow-sm);
}
.mc-top { display: flex; align-items: center; justify-content: space-between; gap: .6rem; }
.mc-id { min-width: 0; }
.mc-id strong { display: flex; align-items: center; gap: .1rem; }
.mc-actions { display: flex; gap: .4rem; flex-wrap: wrap; padding-top: .5rem; border-top: 1px solid var(--border); }

/* ══ Perfil do mentorado (redesenhado) ══════════════════════════ */
.modal:has(.pf) {
  width: min(920px, calc(100vw - 1.5rem)); max-width: min(920px, calc(100vw - 1.5rem));
  max-height: calc(100dvh - 1.5rem); padding: 1.1rem; overflow: hidden;
}
.modal:has(.pf) > #modal-content { min-width: 0; width: 100%; max-width: 100%; }
.profile-modal.pf { max-width: none; min-width: 0; width: 100%; max-height: calc(100dvh - 3.7rem); overflow-y: auto; overflow-x: hidden; padding-right: .3rem; }
.pf { display: flex; flex-direction: column; gap: .9rem; min-width: 0; width: 100%; }
.pf-head { display: flex; align-items: center; gap: .8rem; }
.pf-avatar { flex: 0 0 auto; width: 52px; height: 52px; border-radius: 14px; display: grid; place-items: center; font-family: var(--font-display); font-weight: 800; font-size: 1.5rem; color: #fff; background: var(--call); }
.pf-id { flex: 1 1 auto; min-width: 0; }
.pf-id h3 { margin: 0; overflow-wrap: anywhere; }
.pf-top-actions { display: flex; gap: .4rem; flex-wrap: wrap; }
.pf-kpis { display: grid; grid-template-columns: repeat(auto-fit, minmax(110px, 1fr)); gap: .5rem; }
.pf-kpi { display: flex; align-items: center; gap: .5rem; min-width: 0; background: var(--panel-2); border: 1px solid var(--border); border-radius: 12px; padding: .55rem .6rem; }
.pf-kpi-ico { font-size: 1.25rem; }
.pf-kpi-body { display: flex; flex-direction: column; min-width: 0; }
.pf-kpi-val { font-family: var(--font-display); font-weight: 800; font-size: 1.15rem; line-height: 1.05; }
.pf-kpi-lbl { font-size: .68rem; color: var(--muted); font-weight: 600; }
.pf-formula { margin: 0; }
.pf-section { background: var(--panel); border: 1px solid var(--border); border-radius: 14px; padding: .8rem .9rem; display: flex; flex-direction: column; gap: .5rem; min-width: 0; width: 100%; overflow: hidden; }
.pf-sec-title { margin: 0; font-size: .9rem; font-family: var(--font-display); }
.pf-mini-stats { display: flex; flex-wrap: wrap; gap: .5rem .9rem; font-size: .84rem; font-weight: 600; }
.pf-foot { flex-wrap: wrap; gap: .4rem; }
.pf-section input, .pf-section select, .pf-section textarea { max-width: 100%; min-width: 0; }
.pf-voice-summary { display: flex; flex-wrap: wrap; gap: .35rem; min-width: 0; }
.pf-voice-chip { display: inline-flex; align-items: center; max-width: 100%; border: 1px solid var(--border); border-radius: 999px; padding: .25rem .55rem; font-size: .73rem; font-weight: 700; overflow-wrap: anywhere; }
.pf-voice-chip.discord { border-color: color-mix(in srgb, #5865f2 55%, var(--border)); background: color-mix(in srgb, #5865f2 12%, transparent); }
.pf-voice-chip.portal { border-color: color-mix(in srgb, var(--t-water, #4d90d5) 55%, var(--border)); background: color-mix(in srgb, var(--t-water, #4d90d5) 12%, transparent); }
.pf-voice-chip.total { border-color: color-mix(in srgb, var(--accent) 60%, var(--border)); background: color-mix(in srgb, var(--accent) 12%, transparent); }
.pf-section .audit-log { min-width: 0; width: 100%; }
.pf-section .audit-log li { overflow-wrap: anywhere; word-break: break-word; }

/* Rubrica semanal: conteúdo longo sempre quebra dentro do cartão e nunca
   empurra o modal para fora da viewport. */
.rubric-week-intro { display: flex; flex-direction: column; gap: .12rem; padding: .55rem .65rem; border-left: 3px solid var(--accent); background: color-mix(in srgb, var(--accent) 8%, transparent); border-radius: 8px; min-width: 0; }
.rubric-week-list { display: flex; flex-direction: column; gap: .55rem; min-width: 0; width: 100%; }
.rubric-week-card { border: 1px solid var(--border); border-radius: 12px; background: var(--panel-2); overflow: hidden; min-width: 0; }
.rubric-week-card.current { border-color: color-mix(in srgb, var(--accent) 60%, var(--border)); box-shadow: 0 0 0 1px color-mix(in srgb, var(--accent) 18%, transparent); }
.rubric-week-head { display: flex; align-items: baseline; justify-content: space-between; gap: .5rem; flex-wrap: wrap; padding: .5rem .65rem; border-bottom: 1px solid var(--border); background: color-mix(in srgb, var(--accent) 7%, transparent); }
.rubric-week-head .small { overflow-wrap: anywhere; }
.rubric-week-rows { display: flex; flex-direction: column; min-width: 0; }
.rubric-week-row { display: grid; grid-template-columns: minmax(130px, .7fr) minmax(180px, 1.4fr) minmax(170px, .8fr); gap: .45rem .65rem; align-items: start; padding: .55rem .65rem; border-top: 1px solid color-mix(in srgb, var(--border) 55%, transparent); min-width: 0; }
.rubric-week-row:first-child { border-top: 0; }
.rubric-week-name { display: flex; flex-direction: column; gap: .12rem; min-width: 0; }
.rubric-week-name strong, .rubric-week-reason, .rubric-week-other { overflow-wrap: anywhere; word-break: break-word; }
.rubric-week-reason { color: var(--muted); font-size: .76rem; line-height: 1.3; min-width: 0; }
.rubric-week-edit { display: flex; flex-direction: column; gap: .3rem; min-width: 0; }
.rubric-week-score { width: 62px; }
.rubric-week-note { width: 100%; resize: vertical; font-size: .74rem; padding: .35rem .45rem; }
.rubric-week-other { grid-column: 2 / -1; }
.rubric-week-foot { display: flex; align-items: center; justify-content: space-between; gap: .5rem; flex-wrap: wrap; padding: .55rem .65rem; border-top: 1px solid var(--border); }

@media (max-width: 700px) {
  .modal:has(.pf) { width: calc(100vw - .7rem); max-width: calc(100vw - .7rem); max-height: calc(100dvh - .7rem); padding: .75rem; }
  .profile-modal.pf { max-height: calc(100dvh - 2.1rem); }
  .pf-head { align-items: flex-start; flex-wrap: wrap; }
  .pf-head .rank-badge { margin-left: auto; }
  .rubric-week-row { grid-template-columns: 1fr; gap: .28rem; }
  .rubric-week-edit { flex-direction: row; align-items: flex-start; }
  .rubric-week-note { flex: 1 1 auto; }
  .rubric-week-other { grid-column: auto; }
}

@media (max-width: 430px) {
  .pf-top-actions .btn { flex: 1 1 auto; }
  .pf-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .pf-kpi { padding: .45rem; }
  .pf-kpi-val { font-size: 1rem; }
  .pf-voice-chip { width: 100%; border-radius: 9px; }
  .rubric-week-foot { align-items: stretch; }
  .rubric-week-foot .btn { width: 100%; }
}

/* ═════════ Admin: faixa de KPIs (Pessoas/Conteúdo) ═════════ */
.ukpi-strip { display: grid; grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); gap: .5rem; margin-bottom: 1rem; }
.ukpi { display: flex; align-items: center; gap: .5rem; background: var(--panel-2); border: 1px solid var(--border); border-left: 3px solid var(--acc, var(--accent)); border-radius: 12px; padding: .5rem .6rem; }
.ukpi-ico { font-size: 1.3rem; }
.ukpi-val { display: block; font-family: var(--font-display); font-weight: 800; font-size: 1.2rem; line-height: 1; color: var(--acc, var(--text)); }
.ukpi-lbl { display: block; font-size: .68rem; color: var(--muted); font-weight: 700; text-transform: uppercase; letter-spacing: .03em; }

/* ═════════ Conteúdo: cronograma por semana ═════════ */
.day-weeks { display: flex; flex-direction: column; gap: 1rem; }
.dw-group { background: var(--panel); border: 1px solid var(--border); border-radius: 14px; padding: .7rem .8rem; }
.dw-head { display: flex; align-items: center; gap: .5rem; margin-bottom: .5rem; }
.dw-badge { font-family: var(--font-display); font-weight: 800; font-size: .8rem; background: color-mix(in srgb, var(--t-psychic, #d46fb0) 26%, transparent); border-radius: 999px; padding: .2rem .6rem; }
.dw-head .btn { margin-left: auto; }
.dw-days { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: .5rem; }
.day-admin-row { display: flex; align-items: center; gap: .6rem; text-align: left; cursor: pointer; min-width: 0; overflow: hidden; background: var(--panel-2); border: 1px solid var(--border); border-left-width: 3px; border-left-color: var(--border); border-radius: 11px; padding: .55rem .6rem; color: inherit; transition: border-color .12s, transform .12s; }
.day-admin-row:hover { border-color: var(--accent); transform: translateY(-1px); }
.day-admin-row.has-act { border-left-color: var(--t-grass, #63c267); }
.dar-num { flex: 0 0 auto; font-family: var(--font-display); font-weight: 800; font-size: .8rem; color: var(--muted); background: var(--panel); border: 1px solid var(--border); border-radius: 8px; padding: .2rem .4rem; }
.dar-info { flex: 1 1 0%; min-width: 0; display: flex; flex-direction: column; align-items: stretch; }
.dar-info .de-title { display: block; max-width: 100%; margin: 0; font-weight: 700; font-size: .88rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.dar-tags { display: flex; flex-wrap: wrap; gap: .3rem; margin-top: .2rem; }
.dar-day, .dar-type, .dar-act { font-size: .68rem; font-weight: 700; border-radius: 999px; padding: .08rem .4rem; background: var(--panel); border: 1px solid var(--border); color: var(--muted); }
.dar-act.on { background: color-mix(in srgb, var(--t-grass, #63c267) 22%, transparent); color: var(--text); border-color: transparent; }
.dar-edit { flex: 0 0 auto; opacity: .6; }

/* ═════════ Revisão de conteúdo do mentor (banner + checklist + panorama) ═════════ */
.mrev-banner { display: flex; align-items: center; gap: .8rem; background: linear-gradient(180deg, color-mix(in srgb, var(--accent) 14%, var(--panel)), var(--panel)); border: 1px solid var(--accent); border-radius: 14px; padding: .8rem 1rem; margin-bottom: 1rem; }
.mrev-banner.done { border-color: var(--t-grass, #63c267); background: linear-gradient(180deg, color-mix(in srgb, var(--t-grass, #63c267) 14%, var(--panel)), var(--panel)); }
.mrev-ico { font-size: 1.6rem; }
.mrev-main { flex: 1; display: flex; flex-direction: column; gap: .2rem; min-width: 0; }
.mrev-bar { height: 8px; border-radius: 999px; background: var(--panel-2); overflow: hidden; margin-top: .2rem; }
.mrev-fill { height: 100%; background: var(--accent); border-radius: 999px; }
.mrev-fill.done { background: var(--t-grass, #63c267); }

.crev-modal { max-width: 640px; }
/* Revisão em tela grande: o modal cresce e o conteúdo ocupa TODA a largura
   (antes o .crev-modal ficava travado em 640px e os títulos usavam só metade). */
.modal:has(.crev-modal.wide) { max-width: min(1040px, 94vw); width: 94vw; }
.crev-modal.wide { max-width: none; width: 100%; }
.crev-modal.wide .crev-list { max-height: 66vh; }
.modal:has(.day-preview.wide) { max-width: min(920px, 94vw); width: 94vw; }
.day-preview.wide { max-height: 82vh; overflow-y: auto; }
.crev-prog { display: flex; flex-direction: column; gap: .25rem; margin: .5rem 0; }
.crev-list { display: flex; flex-direction: column; gap: .35rem; max-height: 56vh; overflow-y: auto; padding-right: .2rem; }
.crev-week { margin-top: .7rem; display: flex; align-items: center; justify-content: space-between; gap: .5rem; }
.crev-row { display: flex; align-items: center; gap: .55rem; background: var(--panel-2); border: 1px solid var(--border); border-radius: 10px; padding: .5rem .6rem; }
.crev-row.reviewed { border-color: color-mix(in srgb, var(--t-grass, #63c267) 50%, var(--border)); background: color-mix(in srgb, var(--t-grass, #63c267) 8%, var(--panel-2)); }
.crev-status { flex: 0 0 auto; width: 26px; height: 26px; display: grid; place-items: center; border-radius: 8px; border: 2px solid var(--border); background: var(--panel); color: var(--muted); font-weight: 900; }
.crev-status.on { background: var(--t-grass, #63c267); border-color: var(--t-grass, #63c267); color: #fff; }
.crev-open { flex: 1; display: flex; flex-direction: column; text-align: left; background: none; border: none; cursor: pointer; color: inherit; min-width: 0; padding: .1rem 0; }
.crev-open:hover .crev-title { text-decoration: underline; }
.crev-title { font-weight: 700; font-size: .9rem; }
.crev-rowactions { display: flex; gap: .3rem; flex: 0 0 auto; }
.crev-mini { width: 32px; height: 32px; border-radius: 8px; border: 1px solid var(--border); background: var(--panel); cursor: pointer; font-size: 1rem; transition: border-color .15s, transform .1s; }
.crev-mini:hover { border-color: var(--accent); transform: translateY(-1px); }
.crev-mini.danger:hover { border-color: var(--brand); }
.crev-addday { align-self: flex-start; margin-top: .5rem; }
.crev-target-row { display: flex; align-items: center; gap: .5rem; margin: .4rem 0 .2rem; flex-wrap: wrap; }
.crev-target { flex: 1; min-width: 220px; padding: .5rem .6rem; border-radius: 10px; border: 1px solid var(--border); background: var(--panel-2); color: var(--text); font: inherit; }
.crev-row.is-hidden { opacity: .6; }
.crev-tag { font-size: .62rem; font-weight: 800; border-radius: 999px; padding: .06rem .4rem; margin-left: .2rem; white-space: nowrap; }
.crev-tag.extra { background: color-mix(in srgb, var(--accent) 26%, transparent); }
.crev-tag.hid { background: color-mix(in srgb, var(--brand) 24%, transparent); }
.crev-tag.cust { background: color-mix(in srgb, var(--t-water, #4aa3ff) 26%, transparent); }

.crev-panorama { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: .6rem; }
.crev-card { background: var(--panel); border: 1px solid var(--border); border-left-width: 3px; border-left-color: #ff9f43; border-radius: 12px; padding: .7rem .8rem; display: flex; flex-direction: column; gap: .4rem; }
.crev-card.complete { border-left-color: var(--t-grass, #63c267); }
.crev-card-head { display: flex; align-items: center; justify-content: space-between; gap: .4rem; flex-wrap: wrap; }
.crev-badge { font-size: .72rem; font-weight: 800; border-radius: 999px; padding: .15rem .5rem; }
.crev-badge.ok { background: color-mix(in srgb, var(--t-grass, #63c267) 26%, transparent); }
.crev-badge.partial { background: color-mix(in srgb, #ff9f43 28%, transparent); }
.crev-badge.none { background: color-mix(in srgb, var(--t-fire, #ee5a4e) 26%, transparent); }
.crev-detail { margin-top: .3rem; }
.crev-days { display: flex; flex-wrap: wrap; gap: .3rem; }
.crev-daychip { font-size: .7rem; border-radius: 8px; padding: .12rem .4rem; border: 1px solid var(--border); }
.crev-daychip.seen { background: color-mix(in srgb, var(--t-grass, #63c267) 20%, transparent); }
.crev-daychip.unseen { color: var(--muted); }

/* ══ Revisão & Conteúdo — painel do mentor (compacto) ══════════ */
/* Sem scroll interno: quem rola é o próprio modal (evita cortar os dias). */
.modal:has(.crev2) { max-width: min(760px, 94vw); width: 94vw; }
.crev2 { display: flex; flex-direction: column; }
.crev2-head { display: flex; flex-direction: column; gap: .45rem; }
.crev2-titlebar { display: flex; align-items: center; justify-content: space-between; gap: .5rem; }
.crev2-title { margin: 0; font-size: 1.08rem; }
.crev2-hint { margin: 0; line-height: 1.35; font-size: .76rem; }

/* Abas de alvo (base / todos / cada mentorado) */
.crev2-tabs { display: flex; flex-wrap: wrap; gap: .35rem; }
.crev2-tab { font: inherit; font-size: .78rem; font-weight: 700; cursor: pointer; padding: .28rem .6rem; border-radius: 999px; border: 1px solid var(--border); background: rgba(255,255,255,.05); color: var(--muted); transition: background .15s, border-color .15s, color .15s; }
.crev2-tab:hover { border-color: var(--accent); color: var(--text); }
.crev2-tab.active { background: var(--accent); border-color: var(--accent); color: #16233a; }

/* Área de meta (progresso/dica) — atualizada em cada troca de aba. */
.crev2-meta { display: flex; flex-direction: column; gap: .45rem; }
/* Progresso: barra fina (consistente com o resto do portal). */
.crev2-prog { display: flex; flex-direction: column; gap: .25rem; }
.crev2-prog-top { display: flex; align-items: center; justify-content: space-between; gap: .5rem; }

/* Semanas — cartões compactos, sem altura fixa. */
.crev2-weeks { display: flex; flex-direction: column; gap: .55rem; margin-top: .55rem; }
.crev2-week { border: 1px solid var(--border); border-radius: 12px; overflow: hidden; background: var(--panel); }
.crev2-week-head { display: flex; align-items: center; justify-content: space-between; gap: .5rem; padding: .32rem .5rem .32rem .6rem; background: color-mix(in srgb, var(--accent) 7%, transparent); border-bottom: 1px solid var(--border); }
.crev2-week-name { font-family: var(--font-display); font-weight: 800; font-size: .82rem; letter-spacing: .01em; }
.crev2-add { flex: 0 0 auto; white-space: nowrap; font-size: .72rem; padding: .26rem .6rem; }
.crev2-daylist { display: flex; flex-direction: column; }
.crev2-day { display: flex; align-items: center; gap: .5rem; padding: .36rem .55rem; border-top: 1px solid color-mix(in srgb, var(--border) 50%, transparent); }
.crev2-daylist > .crev2-day:first-child { border-top: none; }
.crev2-day.done { background: color-mix(in srgb, var(--t-grass, #63c267) 6%, transparent); }
.crev2-day.is-hidden { opacity: .55; }
.crev2-check { flex: 0 0 auto; width: 20px; height: 20px; display: grid; place-items: center; border-radius: 6px; border: 1.5px solid var(--border); background: rgba(255,255,255,.05); color: var(--muted); font-weight: 900; font-size: .66rem; }
.crev2-check.on { background: var(--t-grass, #63c267); border-color: var(--t-grass, #63c267); color: #fff; }
.crev2-day-body { flex: 1; display: flex; flex-direction: column; gap: .05rem; min-width: 0; text-align: left; background: none; border: none; color: inherit; font: inherit; padding: 0; }
button.crev2-day-body { cursor: pointer; }
button.crev2-day-body:hover .crev2-day-title { text-decoration: underline; }
.crev2-day-title { font-weight: 600; font-size: .84rem; line-height: 1.2; }
.crev2-day-meta { display: flex; align-items: center; flex-wrap: wrap; gap: .25rem; font-size: .72rem; }
.crev2-day-actions { display: flex; gap: .25rem; flex: 0 0 auto; }
.crev2-mini { width: 28px; height: 28px; border-radius: 7px; border: 1px solid var(--border); background: rgba(255,255,255,.06); color: var(--text); cursor: pointer; font-size: .85rem; display: grid; place-items: center; transition: border-color .15s, transform .1s, background .15s; }
.crev2-mini:hover { border-color: var(--accent); background: rgba(255,255,255,.12); transform: translateY(-1px); }
.crev2-mini:disabled { opacity: .5; cursor: default; }
.crev2-mini.danger:hover { border-color: var(--brand); background: color-mix(in srgb, var(--brand) 20%, transparent); }
.crev2-add-other { align-self: flex-start; font-size: .78rem; }
.crev2-empty { text-align: center; color: var(--muted); padding: 1rem; }
.crev2-foot { margin-top: .8rem; }
@media (max-width: 560px) {
  .crev2-day { flex-wrap: wrap; }
  .crev2-day-actions { flex: 1 1 100%; justify-content: flex-end; margin-top: .15rem; }
  .crev2-week-head { flex-wrap: wrap; }
}

/* ═════════ Admin: subnav (chips) + cards de ferramenta ═════════ */
.admin-subnav { display: flex; flex-wrap: wrap; gap: .4rem; margin-bottom: .9rem; }
.admin-chip {
  border: 1px solid var(--border); background: var(--panel-2); color: var(--text);
  border-radius: 999px; padding: .3rem .7rem; font-size: .82rem; font-weight: 700; cursor: pointer;
  transition: background .15s, border-color .15s;
}
.admin-chip:hover { border-color: var(--accent); }
.admin-chip.is-on { background: var(--accent); color: #1a1500; border-color: var(--accent); }
.admin-cards-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: .6rem; }
.admin-tool-card {
  display: flex; align-items: center; gap: .7rem; text-align: left; cursor: pointer;
  background: var(--panel); border: 1px solid var(--border); border-radius: 14px; padding: .8rem .9rem;
  color: inherit; transition: transform .12s, border-color .12s, box-shadow .12s;
}
.admin-tool-card:hover { transform: translateY(-2px); border-color: var(--accent); box-shadow: var(--shadow-sm); }
.atc-ico { font-size: 1.5rem; flex: 0 0 auto; }
.atc-body { display: flex; flex-direction: column; min-width: 0; flex: 1; }
.atc-title { font-size: .95rem; }
.atc-desc { line-height: 1.3; }
.atc-go { font-size: 1.3rem; color: var(--muted); flex: 0 0 auto; }

/* ═════════ Auditoria (panorama de gestão) ═════════ */
.audit-actors { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: .5rem; margin: .4rem 0 .2rem; }
.audit-actor { background: var(--panel-2); border: 1px solid var(--border); border-left-width: 3px; border-radius: 12px; padding: .5rem .6rem; display: flex; flex-direction: column; gap: .15rem; }
.audit-actor.lvl-parado { border-left-color: var(--t-fire, #ee5a4e); }
.audit-actor.lvl-atencao { border-left-color: #ff9f43; }
.audit-actor.lvl-ok { border-left-color: var(--t-grass, #63c267); }
.aa-head { display: flex; align-items: baseline; justify-content: space-between; gap: .4rem; flex-wrap: wrap; }
.aa-idle { font-size: .74rem; font-weight: 700; }
.aa-idle.lvl-parado { color: color-mix(in srgb, var(--t-fire, #ee5a4e) 85%, var(--text)); }
.aa-idle.lvl-atencao { color: #ff9f43; }
.audit-actor-stats { display: flex; flex-wrap: wrap; gap: .3rem; margin-top: .2rem; }
.aa-chip { font-size: .72rem; font-weight: 700; background: var(--panel); border: 1px solid var(--border); border-radius: 999px; padding: .1rem .4rem; }
.audit-list { display: flex; flex-direction: column; gap: .5rem; margin-top: .3rem; }
.audit-card { background: var(--panel); border: 1px solid var(--border); border-left-width: 3px; border-radius: 12px; padding: .55rem .7rem; }
.audit-card.act-create { border-left-color: var(--t-grass, #63c267); }
.audit-card.act-update { border-left-color: var(--t-electric, #f6c744); }
.audit-card.act-delete { border-left-color: var(--t-fire, #ee5a4e); }
.audit-card.act-review { border-left-color: var(--t-water, #4d90d5); }
.audit-head { display: flex; align-items: flex-start; gap: .5rem; }
.audit-ico { font-size: 1.05rem; line-height: 1.3; }
.audit-main { display: flex; flex-direction: column; min-width: 0; }
.audit-what { font-size: .9rem; }
.audit-ent { color: var(--muted); font-weight: 600; }
.audit-label { color: var(--accent); }
.audit-diff { margin-top: .45rem; display: flex; flex-direction: column; gap: .25rem; border-top: 1px dashed var(--border); padding-top: .4rem; }
.audit-drow { display: flex; flex-wrap: wrap; align-items: baseline; gap: .35rem; font-size: .8rem; }
.audit-field { font-weight: 700; color: var(--muted); min-width: 90px; }
.audit-before { text-decoration: line-through; color: color-mix(in srgb, var(--t-fire, #ee5a4e) 80%, var(--text)); word-break: break-word; }
.audit-after { color: color-mix(in srgb, var(--t-grass, #63c267) 85%, var(--text)); word-break: break-word; }
.audit-arrow { color: var(--muted); }
.audit-add { color: color-mix(in srgb, var(--t-grass, #63c267) 85%, var(--text)); word-break: break-word; }
.audit-del { color: color-mix(in srgb, var(--t-fire, #ee5a4e) 80%, var(--text)); word-break: break-word; }

/* ═════════ Dossiê do mentorado (atividades + minigames) ═════════ */
.doss-act-head { display: flex; flex-wrap: wrap; gap: .4rem; align-items: center; }
.doss-chips { display: flex; flex-wrap: wrap; gap: .35rem; }
.doss-chip {
  border: 1px solid var(--border); background: var(--panel-2); color: var(--text);
  border-radius: 999px; padding: .22rem .6rem; font-size: .74rem; font-weight: 700; cursor: pointer;
  transition: background .15s, border-color .15s;
}
.doss-chip:hover { border-color: var(--accent); }
.doss-chip.active { background: var(--accent); color: #1a1500; border-color: var(--accent); }
.doss-act-list { display: flex; flex-direction: column; gap: .35rem; max-height: 46vh; overflow-y: auto; }
.doss-act {
  display: flex; align-items: center; justify-content: space-between; gap: .6rem;
  background: var(--panel-2); border: 1px solid var(--border); border-left-width: 3px;
  border-radius: 10px; padding: .45rem .6rem;
}
.doss-act.cat-approved { border-left-color: var(--t-grass, #63c267); }
.doss-act.cat-pending { border-left-color: var(--t-electric, #f6c744); }
.doss-act.cat-needs_revision { border-left-color: #ff9f43; }
.doss-act.cat-overdue { border-left-color: var(--t-fire, #ee5a4e); }
.doss-act.cat-open { border-left-color: var(--border); }
.doss-act-main { display: flex; flex-direction: column; min-width: 0; gap: .1rem; }
.doss-act-title { font-weight: 700; font-size: .86rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.doss-act-sub { font-size: .72rem; }
.doss-act-badges { display: flex; flex-wrap: wrap; gap: .25rem; justify-content: flex-end; flex: 0 0 auto; }
.doss-badge { font-size: .68rem; font-weight: 800; border-radius: 999px; padding: .16rem .5rem; white-space: nowrap; }
.doss-badge.ok { background: color-mix(in srgb, var(--t-grass, #63c267) 26%, transparent); }
.doss-badge.wait { background: color-mix(in srgb, var(--t-electric, #f6c744) 30%, transparent); }
.doss-badge.revise { background: color-mix(in srgb, #ff9f43 30%, transparent); }
.doss-badge.miss { background: color-mix(in srgb, var(--t-fire, #ee5a4e) 30%, transparent); }
.doss-badge.open { background: var(--panel); border: 1px solid var(--border); }
.doss-badge.late { background: color-mix(in srgb, var(--t-fire, #ee5a4e) 22%, transparent); }

.doss-game-kpis { display: grid; grid-template-columns: repeat(4, 1fr); gap: .4rem; }
.doss-gk { display: flex; flex-direction: column; align-items: center; gap: .05rem; background: var(--panel-2); border: 1px solid var(--border); border-radius: 10px; padding: .45rem .3rem; }
.doss-gk-ico { font-size: 1.05rem; }
.doss-gk-val { font-family: var(--font-display); font-weight: 800; font-size: 1.05rem; }
.doss-gk-lbl { font-size: .64rem; color: var(--muted); font-weight: 600; text-align: center; }
.doss-game-list { display: flex; flex-direction: column; gap: .3rem; max-height: 40vh; overflow-y: auto; }
.doss-game-row { display: grid; grid-template-columns: minmax(90px, 40%) 1fr auto; align-items: center; gap: .5rem; }
.doss-game-name { font-size: .8rem; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.doss-game-bar { height: 10px; background: var(--panel-2); border: 1px solid var(--border); border-radius: 999px; overflow: hidden; }
.doss-game-fill { height: 100%; border-radius: 999px; background: var(--accent); }
.doss-game-fill.kind-treino { background: var(--t-water, #6aa0e0); }
.doss-game-fill.kind-arcade { background: var(--t-psychic, #d46fb0); }
.doss-game-val { font-size: .74rem; font-weight: 700; white-space: nowrap; }
@media (max-width: 560px) { .doss-game-kpis { grid-template-columns: repeat(2, 1fr); } }

.admin-table { width: 100%; border-collapse: collapse; margin-top: .5rem; }
.admin-table .row-actions { display: flex; flex-wrap: wrap; gap: .35rem; margin-top: .4rem; }

/* ── Cartão de treinador (visão da equipe, somente leitura) ── */
.tcv-head { display: flex; align-items: center; justify-content: space-between; gap: .6rem; flex-wrap: wrap; }
.tcv-head h3 { margin: 0; }
.tcv-role { font-size: .74rem; font-weight: 800; color: var(--brand); background: color-mix(in srgb, var(--brand) 12%, var(--panel)); border: 1px solid var(--border); border-radius: 999px; padding: .2rem .6rem; }
.tcv-meta { display: flex; gap: .8rem; flex-wrap: wrap; margin: .4rem 0; }
.tcv-status { margin: .2rem 0 .6rem; font-style: italic; }
.tcv-stats { display: grid; grid-template-columns: repeat(3, 1fr); gap: .5rem; margin: .5rem 0 1rem; }
.tcv-stat { display: flex; flex-direction: column; align-items: center; gap: .1rem; background: var(--panel-2); border: 1px solid var(--border); border-radius: 12px; padding: .6rem; }
.tcv-ico { font-size: 1.3rem; }
.tcv-val { font-family: var(--font-display); font-weight: 800; }
.tcv-lbl { font-size: .7rem; color: var(--muted); }
.tcv-team { display: grid; grid-template-columns: repeat(6, 1fr); gap: .4rem; margin: .4rem 0 .2rem; }
@media (max-width: 480px) { .tcv-team { grid-template-columns: repeat(3, 1fr); } }
.tcv-slot { display: flex; flex-direction: column; align-items: center; background: var(--panel-2); border: 1px solid var(--border); border-radius: 10px; padding: .3rem; }
.tcv-slot { color: var(--text); cursor: pointer; font: inherit; }
.tcv-slot:hover, .tcv-slot:focus-visible { border-color: var(--brand-2); transform: translateY(-1px); outline: none; box-shadow: 0 0 0 2px color-mix(in srgb, var(--brand-2) 28%, transparent); }
.tcv-slot img { width: 48px; height: 48px; image-rendering: pixelated; object-fit: contain; }
.tcv-slot img.shiny { filter: drop-shadow(0 0 4px rgba(255,226,122,.9)); }
.tcv-slot-lv { font-size: .64rem; font-weight: 800; color: var(--muted); }
.tcv-slot-held { display: inline-flex; align-items: center; justify-content: center; gap: .18rem; max-width: 100%; color: var(--accent); font-size: .56rem; font-weight: 800; line-height: 1.15; text-align: center; }
.tcv-slot-held-img { width: 18px !important; height: 18px !important; image-rendering: pixelated; object-fit: contain; }
.tcv-pending { margin: .2rem 0 .4rem; color: var(--t-fire); font-weight: 600; }
.tcv-collection {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(52px, 1fr)); gap: .35rem;
  max-height: 240px; overflow-y: auto; padding: .3rem; margin-top: .3rem;
  background: var(--panel-2); border: 1px solid var(--border); border-radius: 10px; overscroll-behavior: contain;
}
.tcv-collection .tcv-slot { padding: .2rem; }
.tcv-collection .tcv-slot img { width: 40px; height: 40px; }
/* Mochila (itens do inventário) na visão de cartão do admin */
.tcv-items {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(88px, 1fr)); gap: .4rem;
  padding: .3rem; margin-top: .3rem;
  background: var(--panel-2); border: 1px solid var(--border); border-radius: 10px;
}
.tcv-item { display: flex; flex-direction: column; align-items: center; gap: .1rem; text-align: center; padding: .3rem; }
.tcv-item-ico { width: 34px; height: 34px; image-rendering: pixelated; object-fit: contain; }
.tcv-item-emoji { font-size: 1.4rem; line-height: 1; }
.tcv-item-qty { font-size: .68rem; font-weight: 800; color: var(--brand); }
.tcv-item-name { color: var(--muted); line-height: 1.1; }
/* Insígnias e cosméticos (chips) */
.tcv-badges { display: flex; flex-wrap: wrap; gap: .35rem; margin-top: .3rem; }
.tcv-badge {
  display: inline-flex; align-items: center; gap: .2rem; font-size: .74rem; font-weight: 700;
  background: var(--panel-2); border: 1px solid var(--border); border-radius: 999px; padding: .22rem .55rem;
}
.tcv-pokemon-overview { display: grid; grid-template-columns: repeat(4, 1fr); gap: .45rem; margin: .35rem 0 .8rem; }
.tcv-pokemon-overview .tcv-stat { padding: .45rem .3rem; }

/* ── Ficha individual de Pokémon ───────────────────────────── */
.modal:has(.pkmn-detail) { width: min(980px, calc(100vw - 1rem)); max-width: none; padding: 0; overflow: hidden; }
.pkmn-detail { color: var(--text); background: var(--panel); padding: 1.1rem; max-height: 88vh; overflow-y: auto; overscroll-behavior: contain; }
.pkmn-detail-head { display: flex; align-items: center; gap: .55rem; min-height: 2rem; }
.pkmn-detail-head .eyebrow { flex: 1 1 auto; text-align: center; margin: 0; }
.pkmn-detail-close { width: 2rem; height: 2rem; border: 1px solid var(--border); border-radius: 9px; background: var(--panel-2); color: var(--text); font-size: 1.4rem; line-height: 1; cursor: pointer; }
.pkmn-detail-close:hover, .pkmn-detail-close:focus-visible { border-color: var(--brand-2); color: var(--brand-2); outline: none; }
.pkmn-detail-hero { display: flex; align-items: center; gap: 1rem; padding: .65rem 0 .8rem; }
.pkmn-detail-sprite-wrap { width: 148px; height: 148px; flex: 0 0 148px; display: grid; place-items: center; border: 1px solid var(--border); border-radius: 22px; background: radial-gradient(circle at 50% 32%, color-mix(in srgb, var(--brand-2) 20%, var(--panel-2)), var(--panel-2)); }
.pkmn-detail-sprite-wrap.shiny { background: radial-gradient(circle at 50% 32%, rgba(255, 210, 63, .26), var(--panel-2)); box-shadow: 0 0 24px rgba(255, 210, 63, .18); }
.pkmn-detail-sprite { width: 128px; height: 128px; object-fit: contain; image-rendering: pixelated; }
.pkmn-detail-sprite-wrap.shiny .pkmn-detail-sprite { filter: drop-shadow(0 0 9px rgba(255, 226, 122, .85)); }
.pkmn-detail-title { min-width: 0; }
.pkmn-number { color: var(--muted); font-size: .8rem; font-weight: 800; }
.pkmn-detail-title h2 { margin: .05rem 0 .25rem; color: var(--text); font-family: var(--font-display); overflow-wrap: anywhere; }
.pkmn-detail-types, .pkmn-detail-level { display: flex; align-items: center; flex-wrap: wrap; gap: .35rem; }
.pkmn-detail-level { margin-top: .55rem; gap: .5rem; }
.pkmn-condition { border-radius: 999px; border: 1px solid var(--border); padding: .18rem .5rem; font-size: .72rem; font-weight: 800; }
.pkmn-condition.healthy { color: var(--t-grass); background: color-mix(in srgb, var(--t-grass) 13%, var(--panel)); }
.pkmn-condition.st-psn { color: #ef8cff; background: rgba(158, 86, 175, .18); }
.pkmn-condition.st-brn { color: #ffb15c; background: rgba(220, 100, 35, .18); }
.pkmn-condition.st-par { color: #ffe36e; background: rgba(211, 174, 25, .18); }
.pkmn-condition.st-slp { color: #8fc4ff; background: rgba(65, 115, 190, .18); }
.pkmn-condition.st-frz { color: #9ceaff; background: rgba(67, 170, 205, .18); }
.pkmn-hp-panel, .pkmn-detail-panel { border: 1px solid var(--border); border-radius: 14px; background: var(--panel-2); padding: .75rem; }
.pkmn-hp-panel { margin-bottom: .7rem; }
.pkmn-hp-top { display: flex; justify-content: space-between; gap: .5rem; color: var(--text); font-size: .82rem; }
.pkmn-hp-track, .pkmn-stat-track { overflow: hidden; border-radius: 999px; background: rgba(255,255,255,.12); }
.pkmn-hp-track { height: 11px; margin: .4rem 0 .35rem; }
.pkmn-hp-fill { display: block; height: 100%; border-radius: inherit; transition: width .25s ease; }
.pkmn-hp-fill.healthy { background: linear-gradient(90deg, #39c879, #8ff0ae); }
.pkmn-hp-fill.warning { background: linear-gradient(90deg, #e7b53c, #ffe37b); }
.pkmn-hp-fill.critical { background: linear-gradient(90deg, #d84c5c, #ff9b85); }
.pkmn-detail-columns { display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(260px, .65fr); gap: .7rem; margin-bottom: .7rem; }
.pkmn-panel-title { display: flex; align-items: center; gap: .4rem; margin-bottom: .6rem; color: var(--text); }
.pkmn-panel-title .small { margin-left: auto; color: var(--muted); }
.pkmn-stat-grid { display: grid; gap: .45rem; }
.pkmn-stat-row { display: grid; grid-template-columns: minmax(92px, .7fr) minmax(90px, 1fr) 40px; gap: .45rem; align-items: center; }
.pkmn-stat-label { display: flex; flex-direction: column; min-width: 0; }
.pkmn-stat-label strong, .pkmn-stat-label span { overflow-wrap: anywhere; }
.pkmn-stat-track { height: 8px; }
.pkmn-stat-fill { display: block; height: 100%; border-radius: inherit; background: linear-gradient(90deg, var(--brand-2), var(--accent)); }
.pkmn-stat-fill.stat-hp { background: linear-gradient(90deg, #39c879, #8ff0ae); }
.pkmn-stat-fill.stat-spe { background: linear-gradient(90deg, #7b8cff, #c3a3ff); }
.pkmn-stat-effective { text-align: right; color: var(--text); }
.pkmn-held-card { min-height: 76px; display: flex; align-items: center; flex-wrap: wrap; gap: .6rem; border: 1px solid var(--border); border-radius: 11px; padding: .55rem; background: color-mix(in srgb, var(--brand-2) 8%, var(--panel)); }
.pkmn-held-card > div { min-width: 0; display: flex; flex-direction: column; gap: .2rem; }
.pkmn-held-copy { flex: 1 1 auto; }
.pkmn-held-change, .pkmn-held-remove, .pkmn-held-equip { flex: 0 0 auto; align-self: center; padding: .28rem .45rem; font-size: .58rem; white-space: nowrap; }
.pkmn-held-card.empty { justify-content: center; }
.pkmn-held-sprite { width: 48px; height: 48px; object-fit: contain; image-rendering: pixelated; flex: 0 0 48px; }
.pkmn-held-empty-icon { font-size: 1.7rem; }
.pkmn-genetics-panel { margin-bottom: .7rem; }
.pkmn-genetics-card { border: 1px solid color-mix(in srgb, var(--brand-2) 45%, var(--border)); border-radius: 12px; padding: .65rem; background: color-mix(in srgb, var(--brand-2) 8%, var(--panel)); }
.pkmn-genetics-card.hidden-genetics { border-color: color-mix(in srgb, var(--accent) 38%, var(--border)); background: color-mix(in srgb, var(--accent) 7%, var(--panel)); }
.pkmn-genetics-head { display: flex; align-items: center; gap: .55rem; min-width: 0; }
.pkmn-genetics-head > div { min-width: 0; flex: 1 1 auto; display: flex; flex-direction: column; gap: .12rem; }
.pkmn-genetics-head strong, .pkmn-genetics-head span { overflow-wrap: anywhere; }
.pkmn-genetics-icon { width: 2rem; height: 2rem; display: grid; place-items: center; flex: 0 0 2rem; border-radius: 10px; background: color-mix(in srgb, var(--brand-2) 18%, transparent); font-size: 1.1rem; }
.pkmn-genetic-list { display: flex; flex-wrap: wrap; gap: .3rem; margin-top: .55rem; }
.pkmn-genetic-chip { border: 1px solid var(--border); border-radius: 999px; background: var(--panel-2); color: var(--text); padding: .22rem .45rem; font-size: .68rem; font-weight: 800; font-variant-numeric: tabular-nums; }
.pkmn-genetics-card .btn { flex: 0 0 auto; white-space: nowrap; }
.pkmn-panel-note { margin: .5rem 0 0; line-height: 1.4; }
.pkmn-panel-note { margin: .55rem 0 0; }
.pkmn-moves-panel { margin-bottom: .7rem; }
.pkmn-move-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .5rem; }
.pkmn-move-card { border: 1px solid var(--border); border-radius: 11px; padding: .55rem; background: color-mix(in srgb, var(--panel) 75%, var(--brand-2)); }
.pkmn-move-head { display: flex; align-items: center; gap: .4rem; min-width: 0; }
.pkmn-move-head strong { flex: 1 1 auto; overflow-wrap: anywhere; }
.pkmn-move-source { flex: 0 0 auto; color: var(--accent); border: 1px solid color-mix(in srgb, var(--accent) 50%, transparent); border-radius: 999px; padding: .1rem .35rem; font-size: .62rem; font-weight: 900; }
.pkmn-move-source.generated { color: var(--muted); border-color: var(--border); }
.pkmn-move-meta { display: flex; flex-wrap: wrap; gap: .25rem .45rem; margin-top: .45rem; color: var(--muted); font-size: .68rem; }
.pkmn-move-meta .type-badge { font-size: .62rem; }
.pkmn-detail > .actions { position: sticky; bottom: -.1rem; z-index: 3; margin: .8rem -.2rem -.2rem; padding: .65rem .2rem .2rem; background: linear-gradient(180deg, color-mix(in srgb, var(--panel) 0%, transparent), var(--panel) 30%); }
.pkmn-ribbons { display: flex; flex-wrap: wrap; gap: .25rem .5rem; margin-top: .45rem; padding-top: .45rem; border-top: 1px dashed var(--border); color: var(--accent); }

/* Visão rápida dos Pokémon dentro da mochila. */
.bag-section-head { display: flex; justify-content: space-between; align-items: end; gap: .6rem; border-bottom: 1px solid var(--border); padding-bottom: .55rem; }
.bag-section-head p { margin: .15rem 0 0; }
.bag-pokemon-count { color: var(--accent); font-size: .72rem; font-weight: 800; white-space: nowrap; }
.bag-pokemon-section { margin: .7rem 0 .9rem; }
.bag-subtitle { display: block; margin-bottom: .35rem; color: var(--text); font-size: .76rem; font-weight: 900; text-transform: uppercase; letter-spacing: .05em; }
.bag-pokemon-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(112px, 1fr)); gap: .45rem; max-height: 218px; overflow-y: auto; padding: .2rem; }
.bag-pokemon-card { display: flex; flex-direction: column; align-items: center; gap: .15rem; min-width: 0; padding: .42rem .28rem; border: 1px solid var(--border); border-radius: 12px; background: var(--panel-2); color: var(--text); font: inherit; cursor: pointer; text-align: center; }
.bag-pokemon-card:hover, .bag-pokemon-card:focus-visible, .bag-pokemon-card.active { border-color: var(--brand-2); outline: none; box-shadow: 0 0 0 2px color-mix(in srgb, var(--brand-2) 22%, transparent); }
.bag-pokemon-card.active { background: color-mix(in srgb, var(--brand-2) 12%, var(--panel-2)); }
.bag-pokemon-sprite { width: 58px; height: 58px; object-fit: contain; image-rendering: pixelated; }
.bag-pokemon-name { max-width: 100%; font-weight: 900; overflow-wrap: anywhere; }
.bag-pokemon-held { max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--accent); font-size: .62rem; }
@media (max-width: 650px) {
  .pkmn-detail { padding: .8rem; }
  .pkmn-detail-hero { align-items: flex-start; gap: .65rem; }
  .pkmn-detail-sprite-wrap { width: 102px; height: 102px; flex-basis: 102px; border-radius: 16px; }
  .pkmn-detail-sprite { width: 92px; height: 92px; }
  .pkmn-detail-title h2 { font-size: 1.2rem; }
  .pkmn-detail-columns { grid-template-columns: 1fr; }
  .pkmn-move-grid { grid-template-columns: 1fr; }
  .pkmn-stat-row { grid-template-columns: minmax(78px, .8fr) minmax(80px, 1fr) 34px; gap: .3rem; }
  .pkmn-genetics-head { align-items: flex-start; flex-wrap: wrap; }
  .pkmn-genetics-head .btn { margin-left: 2.55rem; }
  .tcv-pokemon-overview { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 390px) {
  .pkmn-detail-hero { flex-direction: column; align-items: center; text-align: center; }
  .pkmn-detail-title { width: 100%; }
  .pkmn-detail-types, .pkmn-detail-level { justify-content: center; }
  .pkmn-detail-head .eyebrow { text-align: left; }
}

/* ── Batalha admin (X vs Y) ── */
.ab-picks { display: grid; grid-template-columns: 1fr auto 1fr; gap: .6rem; align-items: end; margin: .6rem 0; }
.ab-vs { font-family: var(--font-display); font-weight: 800; color: var(--brand); padding-bottom: .5rem; }
.ab-arena { margin-top: .6rem; }
.ab-result { border: 1px solid var(--border); border-radius: var(--radius); padding: .8rem; background: var(--panel-2); }
.ab-result.win { border-color: var(--t-grass); }
.ab-banner { font-family: var(--font-display); font-weight: 800; font-size: 1.15rem; text-align: center; margin-bottom: .4rem; }
.ab-teams { display: flex; justify-content: space-between; gap: .6rem; font-size: .82rem; font-weight: 700; margin-bottom: .5rem; }
.ab-log { max-height: 220px; overflow-y: auto; display: flex; flex-direction: column; gap: .15rem; font-size: .8rem; }
.ab-log-row { padding: .2rem .4rem; border-radius: 6px; background: var(--panel); }
@media (max-width: 480px) { .ab-picks { grid-template-columns: 1fr; } .ab-vs { text-align: center; padding: .2rem 0; } }

/* ── 🏆 Arena / Torneio ── */
.arena-head { display: flex; align-items: center; gap: .6rem; flex-wrap: wrap; }
.arena-head h3 { margin: 0; }
.arena-list { display: flex; flex-direction: column; gap: .5rem; margin: .6rem 0; }
.arena-card { display: flex; align-items: center; gap: .6rem; text-align: left; cursor: pointer; width: 100%;
  background: var(--panel-2); border: 1px solid var(--border); border-radius: 12px; padding: .7rem .8rem; color: var(--text); transition: border-color var(--dur-fast); }
.arena-card:hover { border-color: var(--brand); }
.arena-card-main { flex: 1 1 auto; min-width: 0; }
.arena-actions { display: flex; gap: .5rem; flex-wrap: wrap; margin: .5rem 0 1rem; }
.arena-parts { display: flex; flex-wrap: wrap; gap: .35rem; margin: .4rem 0; }
.arena-part { display: inline-flex; align-items: center; gap: .2rem; background: var(--panel-2); border: 1px solid var(--border); border-radius: 999px; padding: .25rem .6rem; font-size: .84rem; font-weight: 600; }
.arena-kick { border: none; background: transparent; color: var(--danger, #e3350d); cursor: pointer; font-weight: 800; padding: 0 .1rem; }
.arena-champ { margin-top: .8rem; text-align: center; font-family: var(--font-display); font-weight: 800; font-size: 1.1rem;
  background: linear-gradient(180deg, #ffe08a, #f2b705); color: #4a3400; border-radius: 12px; padding: .7rem; }
/* Copa da Semana — banner destacado no topo da Arena */
.arena-weekly { display: flex; align-items: center; gap: .6rem; background: linear-gradient(135deg, color-mix(in srgb, var(--brand) 15%, var(--panel-2)), var(--panel-2));
  border: 2px solid var(--brand); border-radius: 14px; padding: .7rem .8rem; margin: .6rem 0; cursor: pointer; transition: border-color var(--dur-fast); }
.arena-weekly:hover { border-color: var(--brand-dark, var(--brand)); filter: brightness(1.05); }
.arena-weekly-main { flex: 1 1 auto; min-width: 0; display: flex; align-items: center; gap: .55rem; }
.arena-weekly-badge { font-size: 1.7rem; line-height: 1; flex-shrink: 0; }
.arena-weekly-actions { display: flex; align-items: center; gap: .4rem; flex-shrink: 0; }
.bracket-scroll { overflow-x: auto; padding-bottom: .4rem; }
.bracket { display: flex; gap: 1rem; align-items: flex-start; min-width: min-content; }
.bracket-col { display: flex; flex-direction: column; gap: .6rem; min-width: 150px; }
.bracket-title { font-size: .68rem; font-weight: 800; text-transform: uppercase; letter-spacing: .05em; color: var(--muted); text-align: center; }
.bracket-match { display: flex; flex-direction: column; gap: .15rem; background: var(--panel-2); border: 1px solid var(--border); border-radius: 10px; padding: .45rem .55rem; }
.bracket-match.done { border-color: var(--t-grass); }
.bm-p { font-size: .84rem; font-weight: 600; padding: .15rem .3rem; border-radius: 6px; }
.bm-p.win { background: color-mix(in srgb, var(--t-grass) 22%, transparent); font-weight: 800; }
.bm-vs { font-size: .62rem; color: var(--muted); text-align: center; }
.bm-fight { margin-top: .3rem; }
.bm-schedule, .bm-mode, .arena-waiting { display: block; text-align: center; margin-top: .25rem; }
.arena-empty { margin: 1rem 0; padding: 1rem; border: 1px dashed var(--border); border-radius: 12px; background: var(--panel-2); color: var(--muted); text-align: center; }
.arena-team-picker { max-width: 760px; }
.arena-team-picker-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(105px, 1fr)); gap: .55rem; max-height: 52vh; overflow-y: auto; margin: .7rem 0; padding: .2rem; }
.arena-team-choice { display: grid; justify-items: center; gap: .1rem; min-width: 0; padding: .4rem .25rem; border: 1px solid var(--border); border-radius: 11px; background: var(--panel-2); color: var(--text); cursor: pointer; font: inherit; }
.arena-team-choice:hover, .arena-team-choice.active { border-color: var(--accent); background: color-mix(in srgb, var(--accent) 14%, var(--panel-2)); }
.arena-team-choice.active { box-shadow: 0 0 0 2px color-mix(in srgb, var(--accent) 30%, transparent); }
.arena-team-sprite { width: 58px; height: 58px; object-fit: contain; image-rendering: pixelated; }
.arena-match-prompt { position: fixed; inset: 0; z-index: 4001; display: grid; place-items: center; padding: 1rem; background: rgba(4, 7, 16, .86); }
.arena-match-prompt-card { width: min(560px, 100%); padding: 1.5rem; border: 2px solid var(--accent); border-radius: 20px; background: linear-gradient(145deg, var(--panel-2), var(--panel)); box-shadow: 0 20px 60px rgba(0,0,0,.55), 0 0 30px color-mix(in srgb, var(--accent) 22%, transparent); text-align: center; animation: pop-in .25s ease both; }
.arena-match-prompt-card h2 { margin: .35rem 0 .5rem; color: var(--accent); }
.arena-match-prompt-card .actions { justify-content: center; }
@media (max-width: 560px) {
  .arena-team-picker { padding: 1rem; }
  .arena-team-picker-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); max-height: 48vh; }
  .arena-team-sprite { width: 48px; height: 48px; }
  .arena-match-prompt-card { padding: 1.1rem; }
  .arena-match-prompt-card .actions { flex-direction: column-reverse; }
  .arena-match-prompt-card .actions .btn { width: 100%; }
}
/* Multi-tenancy: checklist de mundos cobertos por um CM */
.world-checklist { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .2rem .6rem; margin-bottom: .4rem; }
.world-chk { display: flex; align-items: center; gap: .3rem; font-size: .85rem; cursor: pointer; }
.mentor-toggle { display: inline-flex; align-items: center; gap: .35rem; font-size: .84rem; font-weight: 600; cursor: pointer; white-space: nowrap; }
.mentor-toggle.hidden { display: none; }
.mentor-badge {
  display: inline-block; margin: .15rem 0; font-size: .64rem; font-weight: 800; text-transform: uppercase; letter-spacing: .03em;
  color: #4a3400; background: linear-gradient(180deg, #ffe08a, #f2b705); border: 1px solid rgba(0,0,0,.2);
  padding: .1rem .45rem; border-radius: 999px;
}
.world-chk input { margin: 0; }
.admin-table th, .admin-table td {
  text-align: left; padding: .6rem .7rem; border-bottom: 1px solid var(--border); font-size: .9rem;
}
.admin-table th { color: var(--muted); font-size: .75rem; text-transform: uppercase; letter-spacing: .05em; }
.admin-table tr:hover td { background: var(--panel); }
.admin-table input, .admin-table select { padding: .4rem .5rem; font-size: .85rem; width: 100%; }
.role-badge { font-size: .72rem; font-weight: 700; padding: .15rem .5rem; border-radius: 20px; }
.role-badge.admin  { color: var(--brand); background: rgba(227,53,13,.14); }
.role-badge.mentor { color: var(--topic); background: rgba(79,140,255,.14); }
.role-badge.mentee { color: var(--muted); background: var(--panel-2); }
.inactive-row td { opacity: .5; }

.review-card {
  background: var(--panel); border: 1px solid var(--border);
  border-radius: var(--radius); padding: 1.1rem 1.25rem; margin-bottom: 1rem;
  min-width: 0; overflow: hidden;
}
.review-filter-banner {
  display: flex; align-items: center; justify-content: space-between; gap: .7rem;
  flex-wrap: wrap; margin: -.35rem 0 .8rem; padding: .65rem .8rem;
  border: 1px solid color-mix(in srgb, var(--brand) 55%, var(--border));
  border-radius: 12px; background: color-mix(in srgb, var(--brand) 12%, var(--panel));
  font-weight: 700;
}
.review-card .rc-head { display: flex; justify-content: space-between; gap: 1rem; align-items: flex-start; margin-bottom: .3rem; }
.review-card .rc-who { font-size: .82rem; color: var(--muted); }
.review-card textarea { width: 100%; min-height: 70px; resize: vertical; margin-top: .5rem; }
.review-card .rc-actions { display: flex; gap: .6rem; margin-top: .7rem; flex-wrap: wrap; align-items: center; }
.submitted-wrap { width: 100%; min-width: 0; margin-top: .7rem; }
.submitted-label { color: var(--topic); margin-bottom: .25rem; }
.submitted-text {
  width: 100%; max-width: 100%; min-width: 0; margin: 0;
  overflow-wrap: anywhere; word-break: break-word; white-space: pre-wrap;
}
.submitted-text .md-p, .submitted-text .md-h, .submitted-text li { overflow-wrap: anywhere; word-break: break-word; }
.review-recorded-feedback {
  width: 100%; min-width: 0; margin-top: .8rem; padding: .75rem .9rem;
  border: 1px solid color-mix(in srgb, var(--call) 42%, var(--border));
  border-left: 3px solid var(--call); border-radius: 0 10px 10px 0;
  background: color-mix(in srgb, var(--call) 8%, var(--panel-2));
}
.review-evaluator { margin-top: .55rem; color: var(--muted); font-size: .8rem; font-weight: 700; }
.review-recorded-feedback .eyebrow { color: var(--call); }
.review-feedback-content { margin-top: .25rem; min-width: 0; overflow-wrap: anywhere; word-break: break-word; }
.review-feedback-content .md-p:first-child { margin-top: .15rem; }
.review-feedback-content .md-p:last-child { margin-bottom: .15rem; }
/* Atalhos ao lado dos botões: tecla dentro do botão + dica J/K à direita. */
.review-prompt {
  margin: .75rem 0 .2rem; padding: .7rem .9rem;
  background: var(--panel-2); border: 1px solid var(--border);
  border-left: 3px solid var(--accent); border-radius: 0 10px 10px 0;
}
.review-prompt > .eyebrow { color: var(--accent); margin-bottom: .25rem; }
.review-prompt-content { font-size: .92rem; }
.review-prompt-content .md-p:first-child { margin-top: .15rem; }
.review-prompt-content .md-p:last-child { margin-bottom: .15rem; }
.rc-actions .btn-approve, .rc-actions .btn-revise {
  display: inline-flex; align-items: center; justify-content: center; gap: .45rem;
  min-height: 2.45rem;
}
.rc-kbd {
  display: inline-grid; place-items: center; min-width: 1.45rem; height: 1.45rem;
  padding: 0 .28rem; border: 1px solid currentColor; border-bottom-width: 2px;
  border-radius: 6px; background: rgba(255,255,255,.18); color: inherit;
  font-family: var(--font-display); font-size: .72rem; font-weight: 900;
  line-height: 1; opacity: 1; vertical-align: middle;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.18);
}
.btn-approve .rc-kbd { background: rgba(6,35,26,.14); border-color: rgba(6,35,26,.38); }
.btn-revise .rc-kbd { background: rgba(42,20,0,.14); border-color: rgba(42,20,0,.38); }
.rc-kbd-hint { margin-left: auto; align-self: center; }
.btn-approve { background: var(--call); color: #06231a; }
.btn-approve:hover { filter: brightness(1.08); }
.btn-revise { background: var(--deadline); color: #2a1400; }
.btn-revise:hover { filter: brightness(1.08); }

/* #134 Revisão em lote */
.btn.btn-active { border-color: var(--brand); background: rgba(255,203,5,.14); color: var(--text); }
.rc-checkwrap { display: flex; align-items: center; padding-right: .4rem; }
.rc-checkwrap input { width: 1.15rem; height: 1.15rem; cursor: pointer; }
.review-card.rc-selected { border-color: var(--brand); box-shadow: 0 0 0 2px rgba(255,203,5,.25) inset; }
/* #131 — cartão em foco pelos atalhos de teclado */
.review-card.rc-focused { outline: 2px solid var(--brand); outline-offset: 2px; }
.review-hint { margin-bottom: .6rem; }
.bulk-bar {
  position: sticky; top: .4rem; z-index: 5; display: flex; flex-direction: column; gap: .5rem;
  background: var(--panel); border: 1px solid var(--brand); border-radius: var(--radius);
  padding: .8rem 1rem; margin-bottom: 1rem;
}
.bulk-selall { display: inline-flex; align-items: center; gap: .4rem; font-weight: 700; }
.bulk-selall input { width: 1.1rem; height: 1.1rem; }
.bulk-count { font-size: .85rem; color: var(--muted); }
.bulk-fb { width: 100%; min-height: 54px; resize: vertical; }
.bulk-actions { display: flex; align-items: center; gap: .6rem; flex-wrap: wrap; }
.bulk-actions .grade-input { width: 4.5rem; }

/* ══ AVISOS (mural) ════════════════════════════════════════ */
/* ══ AVISOS — Quadro do Ginásio ════════════════════════════ */
.avisos-toolbar {
  display: flex; gap: .6rem; align-items: center; flex-wrap: wrap; margin: .2rem 0 .8rem;
}
.avisos-search {
  display: flex; align-items: center; gap: .45rem; flex: 1 1 220px;
  background: var(--panel); border: 1px solid var(--border); border-radius: 999px;
  padding: .35rem .8rem;
}
.avisos-search input {
  border: 0; background: transparent; color: var(--text); width: 100%; outline: none; font-size: .9rem;
}
.announcements-list { margin-top: .4rem; }
.ann-group-title { display: block; margin: 1.4rem 0 .7rem; font-size: .8rem; }
.ann-group-title:first-child { margin-top: 0; }
.ann-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1rem; }
@media (max-width: 760px) { .ann-grid { grid-template-columns: 1fr; } }

/* 🧠 Pergunta do dia (card no topo dos Avisos) */
.dq-card {
  padding: 1rem 1.1rem;
  margin-bottom: 1rem;
  border-left: 4px solid var(--t-psychic, #f759ab);
  background:
    radial-gradient(700px 180px at 100% 0, rgba(247, 89, 171, .12), transparent 62%),
    var(--panel);
}
.dq-head { display: flex; justify-content: space-between; align-items: center; gap: .5rem; flex-wrap: wrap; }
.dq-reward { font-size: .78rem; font-weight: 700; color: var(--muted, #8a8f98); }
.dq-situation {
  margin: .75rem 0 .9rem;
  padding: .8rem .9rem;
  line-height: 1.5;
  color: var(--text);
  background: color-mix(in srgb, var(--panel-2) 78%, transparent);
  border: 1px solid var(--border);
  border-radius: 12px;
}
.dq-options { display: grid; gap: .5rem; }
.dq-opt { display: flex; align-items: center; gap: .6rem; text-align: left; width: 100%;
  padding: .65rem .8rem; border-radius: 12px; border: 1.5px solid rgba(128,128,128,.28);
  background: color-mix(in srgb, var(--panel-2) 72%, transparent);
  color: var(--text);
  font: inherit;
  cursor: pointer;
  transition: border-color .15s, background .15s, transform .12s; }
.dq-opt:hover:not(:disabled) { border-color: var(--t-psychic, #f759ab); background: rgba(247,89,171,.08); }
.dq-opt:hover:not(:disabled) { transform: translateY(-1px); }
.dq-opt:focus-visible { outline: 3px solid color-mix(in srgb, var(--t-psychic, #f759ab) 55%, transparent); outline-offset: 2px; }
.dq-opt b { flex: 0 0 1.4rem; height: 1.4rem; display: grid; place-items: center; border-radius: 50%;
  background: color-mix(in srgb, var(--t-psychic, #f759ab) 22%, var(--panel));
  color: var(--text); font-size: .8rem; }
.dq-opt.correct { border-color: #2fbf71; background: rgba(47,191,113,.14); }
.dq-opt.wrong { border-color: #e5533c; background: rgba(229,83,60,.12); }
.dq-opt:disabled { cursor: default; }
.dq-result { margin: .8rem 0 0; }
.ann-card {
  position: relative; overflow: hidden;
  background: var(--panel); border: 1px solid var(--border);
  border-top: 4px solid var(--cat, var(--brand));
  border-radius: var(--radius); padding: var(--card-pad);
  display: flex; flex-direction: column; cursor: pointer;
  transition: border-color var(--dur), transform var(--dur-fast), box-shadow var(--dur);
}
.ann-card:hover { transform: translateY(-2px); box-shadow: var(--shadow-sm); }
.ann-card.is-pending { border-style: dashed; border-top-color: var(--deadline); }
.ann-card.is-pinned { box-shadow: 0 0 0 1px color-mix(in srgb, var(--accent) 40%, transparent); }
.ann-card.is-urgent { border-color: color-mix(in srgb, var(--brand) 55%, var(--border)); }
.ann-card.is-unread::after {
  content: ""; position: absolute; top: 0; right: 0;
  border-width: 0 22px 22px 0; border-style: solid;
  border-color: transparent var(--cat, var(--brand)) transparent transparent;
}
.ann-cat-strip { display: flex; flex-wrap: wrap; align-items: center; gap: .4rem; margin-bottom: .5rem; }
.ann-cat {
  font-size: .72rem; font-weight: 800; letter-spacing: .02em;
  color: color-mix(in srgb, var(--cat, var(--brand)) 80%, var(--text));
  background: color-mix(in srgb, var(--cat, var(--brand)) 14%, transparent);
  border-radius: 999px; padding: .12rem .55rem;
}
.ann-pin-flag { font-size: .7rem; font-weight: 800; color: var(--accent); }
.ann-urgent {
  font-size: .7rem; font-weight: 800; color: #fff; background: var(--brand);
  border-radius: 999px; padding: .12rem .5rem; animation: annPulse 1.6s ease-in-out infinite;
}
@keyframes annPulse { 0%,100% { box-shadow: 0 0 0 0 rgba(238,21,21,.5); } 50% { box-shadow: 0 0 0 5px rgba(238,21,21,0); } }
.ann-newdot { font-size: .68rem; font-weight: 800; color: var(--cat, var(--brand)); margin-left: auto; }
.ann-head { display: flex; justify-content: space-between; gap: .8rem; align-items: flex-start; }
.ann-head h3 { margin: 0 0 .3rem; font-size: 1.1rem; }
.ann-body { margin: .2rem 0 .6rem; line-height: 1.55; white-space: pre-wrap; flex: 1; }
.ann-meta { display: flex; justify-content: space-between; gap: .6rem; color: var(--muted); font-size: .78rem; flex-wrap: wrap; }
.ann-reacts { display: flex; flex-wrap: wrap; gap: .35rem; margin: .6rem 0 .2rem; }
.react-btn {
  border: 1px solid var(--border); background: var(--bg); cursor: pointer;
  border-radius: 999px; padding: .18rem .5rem; font-size: .9rem; line-height: 1;
  transition: all var(--dur);
}
.react-btn .rc { font-size: .72rem; font-weight: 800; margin-left: .25rem; color: var(--muted); }
.react-btn:hover { transform: scale(1.12); border-color: var(--brand-2); }
.react-btn.is-mine { background: color-mix(in srgb, var(--accent) 22%, var(--panel)); border-color: var(--accent); }
.react-btn.is-mine .rc { color: var(--text); }
.ann-actions { display: flex; gap: .5rem; margin-top: .8rem; flex-wrap: wrap; }
.ann-pin-toggle { display: flex; align-items: center; gap: .45rem; font-size: .88rem; margin: .2rem 0; cursor: pointer; }
.field-row { display: flex; gap: .8rem; flex-wrap: wrap; }
.field-row .field { flex: 1 1 140px; }

/* ══ ADMIN — editor de atividade por dia ═══════════════════ */
.day-edit-card {
  background: var(--panel); border: 1px solid var(--border);
  border-radius: var(--radius); padding: 1rem 1.15rem; margin-bottom: .9rem;
}
.de-head { display: flex; justify-content: space-between; align-items: center; gap: .6rem; }
.de-title { font-weight: 700; margin: .35rem 0 .1rem; }
.day-edit-card textarea { width: 100%; min-height: 80px; resize: vertical; margin-top: .5rem; line-height: 1.5; }
.day-edit-card .ac-actions { display: flex; justify-content: flex-end; gap: .6rem; margin-top: .6rem; }

/* ══ ACERVO — status da atividade ══════════════════════════ */
.sub-status.todo { color: var(--accent); background: rgba(255, 203, 5, .12); }
.ai-sub { display: inline-block; margin-top: .45rem; }

/* ══ CALENDÁRIO — edição de eventos ════════════════════════ */
.cal-day.editable, .cal-day.clickable { cursor: pointer; transition: border-color .15s, transform .06s; }
.cal-day.editable:hover, .cal-day.clickable:hover { border-color: var(--brand-2); }
.cal-day.editable:active { transform: translateY(1px); }
.cal-day.editable .cal-empty { color: var(--brand-2); opacity: .8; }

.ev-list { display: grid; gap: .6rem; margin: .3rem 0 1rem; }
.ev-row {
  display: flex; justify-content: space-between; gap: .8rem; align-items: flex-start;
  background: color-mix(in srgb, var(--cat, var(--topic)) 8%, var(--bg));
  border: 1px solid var(--border);
  border-left: 4px solid var(--cat, var(--topic)); border-radius: 10px; padding: .6rem .8rem;
}
.ev-time { color: var(--muted); font-size: .78rem; font-weight: 700; }
.pill.type-topic    { color: var(--t-water);    border-color: color-mix(in srgb, var(--t-water) 40%, transparent); }
.pill.type-call     { color: var(--t-electric); border-color: color-mix(in srgb, var(--t-electric) 40%, transparent); }
.pill.type-deadline { color: var(--t-fire);     border-color: color-mix(in srgb, var(--t-fire) 40%, transparent); }
.ev-acts { display: flex; gap: .4rem; flex-shrink: 0; flex-wrap: wrap; }
.small-btn { padding: .3rem .6rem; font-size: .78rem; }

/* ══ CONTEÚDO RICO (Markdown renderizado) ══════════════════ */
.md-content { line-height: 1.6; }
.md-content .md-p { margin: .5rem 0; }
.md-content .md-h { margin: 1rem 0 .4rem; line-height: 1.3; }
.md-content h3.md-h { font-size: 1.15rem; }
.md-content h4.md-h { font-size: 1rem; }
.md-content h5.md-h { font-size: .9rem; color: var(--muted); }
.md-content .md-list { margin: .5rem 0; padding-left: 1.4rem; }
.md-content .md-list li { margin: .2rem 0; }
.md-content .md-quote {
  margin: .7rem 0; padding: .5rem .9rem; border-left: 3px solid var(--accent);
  background: rgba(255, 203, 5, .06); border-radius: 0 8px 8px 0; color: var(--muted);
}
.md-content a { color: var(--topic); text-decoration: underline; }
.md-content code {
  background: var(--bg); border: 1px solid var(--border); border-radius: 5px;
  padding: .05rem .35rem; font-size: .88em; font-family: ui-monospace, Menlo, Consolas, monospace;
}
.md-content hr { border: none; border-top: 1px solid var(--border); margin: 1rem 0; }
.md-img { max-width: 100%; border-radius: 8px; }
.md-img.block { display: block; margin: .8rem 0; }
.md-video {
  position: relative; padding-bottom: 56.25%; height: 0; margin: .9rem 0;
  border-radius: 10px; overflow: hidden; background: #000;
}
.md-video iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }

/* ══ ADMIN — lista de dias: estilos em "Conteúdo: cronograma por semana" ══ */

/* ══ EDITOR RICO (página dedicada, tela cheia) ═════════════ */
.editor-view {
  position: fixed; inset: 0; z-index: 50; overflow-y: auto;
  background: radial-gradient(1200px 600px at 80% -10%, #1b2b4c 0, transparent 60%), var(--bg);
  animation: pop-in .25s ease both;
}
.editor-inner { max-width: 1100px; margin: 0 auto; padding: 1.4rem 1.3rem 4rem; }
.editor-head {
  display: flex; justify-content: space-between; align-items: center; gap: 1rem;
  margin-bottom: 1.2rem; padding-bottom: 1rem; border-bottom: 1px solid var(--border);
  position: sticky; top: 0; background: var(--bg); z-index: 2;
}
.editor-head h2 { margin: .1rem 0 0; }
.editor-body { display: grid; gap: 1rem; }
.editor-body .field { display: flex; flex-direction: column; gap: .3rem; }
.editor-body label { font-size: .82rem; font-weight: 600; }
.editor-meta { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; }
@media (max-width: 640px) { .editor-meta { grid-template-columns: 1fr; } }
.editor-actions {
  display: flex; justify-content: flex-end; gap: .7rem; margin-top: 1.4rem;
  padding-top: 1.2rem; border-top: 1px solid var(--border);
}

.md-toolbar { display: flex; gap: .35rem; flex-wrap: wrap; margin-bottom: .4rem; }
.md-tool {
  min-width: 34px; height: 32px; padding: 0 .5rem; cursor: pointer;
  background: var(--panel-2); border: 1px solid var(--border); color: var(--text);
  border-radius: 8px; font-weight: 700; font-size: .9rem;
}
.md-tool:hover { border-color: var(--brand-2); background: var(--panel); }
.md-split { display: grid; grid-template-columns: 1fr 1fr; gap: .8rem; }
@media (max-width: 760px) { .md-split { grid-template-columns: 1fr; } }
.md-pane { display: flex; flex-direction: column; gap: .3rem; }
.md-pane-label { font-size: .7rem; text-transform: uppercase; letter-spacing: .06em; color: var(--muted); }
.md-editor {
  width: 100%; min-height: 240px; resize: vertical; line-height: 1.5;
  font-family: ui-monospace, Menlo, Consolas, monospace; font-size: .88rem;
}
.md-preview {
  min-height: 240px; background: var(--panel); border: 1px solid var(--border);
  border-radius: 10px; padding: .7rem .9rem; overflow: auto;
}
.md-editor.code { color: #cfe3ff; }

/* ══ TREINOS (jogos interativos) ═══════════════════════════ */

/* Faixa de gamificação: XP + nível + estrelas */
.xp-card {
  display: flex; justify-content: space-between; align-items: center; gap: 1rem;
  background: linear-gradient(135deg, var(--panel), var(--bg-2));
  border: 1px solid var(--border); border-radius: var(--radius);
  padding: 1.1rem 1.3rem; margin-bottom: 1.1rem; box-shadow: var(--shadow);
}
.xp-info { flex: 1; }
.xp-info h2 { margin: .15rem 0 .5rem; }
.xp-bar { height: 10px; background: var(--bg); border-radius: 999px; overflow: hidden; border: 1px solid var(--border); }
.xp-fill { height: 100%; width: 0; border-radius: 999px; background: linear-gradient(90deg, var(--accent), #ffe37a); transition: width .5s ease; }
.xp-sub { margin: .45rem 0 0; }
.xp-stars {
  font-size: 1.15rem; font-weight: 800; color: var(--accent);
  background: var(--bg); border: 1px solid var(--border); border-radius: 12px;
  padding: .7rem 1rem; white-space: nowrap;
}

/* ── Topo "Pokédex do Treinador": parceiro + XP + faixa de estatísticas ── */
.xp-card.dash-hero {
  flex-direction: column; align-items: stretch; gap: 1.15rem;
  position: relative; overflow: hidden; isolation: isolate; color: #fff;
  border: 1px solid rgba(255,255,255,.14); border-radius: 20px;
  background:
    radial-gradient(120% 130% at 100% 0%, rgba(238,90,78,.42), transparent 52%),
    radial-gradient(100% 120% at 0% 100%, rgba(59,76,202,.24), transparent 55%),
    linear-gradient(135deg, #241017, #1a0d13 60%, #140b10);
  box-shadow: 0 16px 38px rgba(0,0,0,.4), inset 0 1px 0 rgba(255,255,255,.12);
}
.xp-card.dash-hero::before { /* faixa holográfica no topo */
  content: ""; position: absolute; inset: 0 0 auto 0; height: 4px; z-index: 2;
  background: linear-gradient(90deg, #ee5a4e, #ffcb05, #ee5a4e);
}
.xp-card.dash-hero::after { /* marca d'água de Pokébola (bem sutil, atrás do texto) */
  content: ""; position: absolute; z-index: 0; right: -50px; top: -58px; left: auto; bottom: auto;
  width: 188px; height: 188px; border-radius: 50%; pointer-events: none; opacity: .22;
  border: 12px solid rgba(255,255,255,.5); -webkit-mask: none; mask: none;
  background: radial-gradient(circle, #fff 0 12px, rgba(255,255,255,.6) 12px 21px, transparent 21px) center/100% 100% no-repeat;
}
.dash-hero > * { position: relative; z-index: 1; }
.dash-hero .eyebrow { color: rgba(255,255,255,.92); }
.dash-hero #xp-level, .dash-hero h2 { color: #fff; text-shadow: 0 1px 2px rgba(0,0,0,.28); }
.dash-hero .xp-bar { background: rgba(0,0,0,.28); border-color: rgba(255,255,255,.3); box-shadow: inset 0 1px 2px rgba(0,0,0,.35); }
.dash-hero .xp-fill { background: linear-gradient(90deg, #ffd23f, #fff3b0); box-shadow: 0 0 10px rgba(255,210,63,.6); }
.dash-hero .xp-sub { color: rgba(255,255,255,.9); }
.dash-hero .xp-stars {
  color: #ffe07a; background: rgba(255,255,255,.08); border-color: rgba(255,255,255,.22);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.12);
}
.dash-top { display: flex; align-items: center; gap: 1.1rem; }
/* Parceiro no hero: anel e moldura adaptados ao fundo vermelho */
.dash-hero .evo-ring { background: conic-gradient(#ffd23f var(--evo, 0%), rgba(255,255,255,.28) 0); box-shadow: 0 0 0 1px rgba(255,255,255,.32), 0 0 18px rgba(255,210,63,.3); }
.dash-hero .evo-core { background: radial-gradient(circle at 50% 28%, rgba(0,0,0,.3), rgba(0,0,0,.52)); }
.dash-hero .evo-name { color: #fff; }
.dash-hero .evo-dot { background: rgba(255,255,255,.35); }
.dash-hero .evo-dot.on { background: #ffd23f; box-shadow: 0 0 6px rgba(255,210,63,.7); }

.dash-stats { display: grid; grid-template-columns: repeat(6, 1fr); gap: .55rem; }
@media (max-width: 720px) { .dash-stats { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 380px) { .dash-stats { grid-template-columns: repeat(2, 1fr); } }
.dstat {
  display: flex; flex-direction: column; align-items: center; gap: var(--sp-1); text-align: center;
  padding: .6rem .35rem; border: 1px solid rgba(255,255,255,.16); border-radius: 13px;
  background: rgba(255,255,255,.07); color: #fff; font: inherit;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.1);
  transition: transform .1s, border-color .15s, box-shadow .15s;
}
.dstat { border-top: 3px solid var(--acc, #ffcb05); }
.dstat.clickable { cursor: pointer; }
.dstat.clickable:hover { transform: translateY(-2px); box-shadow: 0 7px 16px rgba(0,0,0,.32); border-color: color-mix(in srgb, var(--acc, #ffcb05) 70%, transparent); }
.dstat-ico { font-size: 1.4rem; line-height: 1; filter: drop-shadow(0 0 6px color-mix(in srgb, var(--acc, #ffcb05) 55%, transparent)); }
.dstat-val { font-family: var(--font-display); font-weight: 800; font-size: 1.12rem; color: #fff; }
.dstat-lbl { font-size: .64rem; text-transform: uppercase; letter-spacing: .04em; color: rgba(255,255,255,.82); font-weight: 700; }

/* Estrelas reutilizáveis */
.stars { display: inline-flex; gap: .1rem; font-size: 1.05rem; line-height: 1; }
.stars.big { font-size: 1.8rem; gap: .2rem; }
.star { color: var(--border); }
.star.on { color: var(--accent); text-shadow: 0 0 8px rgba(255, 203, 5, .5); }

/* Lista de treinos */
.exercises-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 1rem; }
.exercise-card {
  display: flex; flex-direction: column; gap: .6rem;
  background: var(--panel); border: 1px solid var(--border);
  border-radius: var(--radius); padding: 1.1rem; position: relative; overflow: hidden;
}
.exercise-card::before {
  content: ''; position: absolute; inset: 0 auto 0 0; width: 4px; background: var(--topic);
}
.exercise-card.type-quiz::before { background: var(--topic); }
.exercise-card.type-scenario::before { background: var(--call); }
.exercise-card.type-memory::before { background: var(--brand); }
.exercise-card.locked { opacity: .6; }
.exercise-card h3 { margin: 0; font-size: 1.1rem; }
.ex-icon { font-size: 1.8rem; }
.ex-meta { display: flex; flex-wrap: wrap; gap: .35rem; }
.ex-foot { margin-top: auto; padding-top: .3rem; }
.ex-foot .btn { width: 100%; display: flex; align-items: center; justify-content: center; }
.pill.diff-easy { background: rgba(33, 192, 122, .15); color: #5fe0a6; }
.pill.diff-medium { background: rgba(79, 140, 255, .15); color: #8fb6ff; }
.pill.diff-hard { background: rgba(227, 53, 13, .15); color: #ff8a6b; }

/* Arena de jogo (reaproveita .editor-view / .editor-inner) */
.game-inner { max-width: min(1100px, 96vw); padding-top: 1.6rem; }
/* Fundo de pokébolas sutil em TODOS os minigames (atrás do conteúdo). */
#game-view::before {
  content: ""; position: fixed; inset: 0; z-index: 0; pointer-events: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='150' height='150' viewBox='0 0 150 150'%3E%3Cg fill='none' stroke='%23ffffff' stroke-width='4'%3E%3Ccircle cx='75' cy='75' r='40'/%3E%3Cpath d='M35 75h25M90 75h25'/%3E%3Ccircle cx='75' cy='75' r='12' fill='%23ffffff'/%3E%3C/g%3E%3C/svg%3E");
  background-size: 130px 130px; opacity: .045;
}
#game-view > .game-inner { position: relative; z-index: 1; }
/* Cabeçalho da arena como barra contida (o botão "Sair" não encosta na borda). */
.game-inner .editor-head {
  background: var(--panel); border: 1px solid var(--border);
  border-radius: 12px; padding: .6rem .8rem .6rem 1rem; top: .8rem; margin-bottom: 1.3rem;
}
.game-nav { display: flex; justify-content: space-between; gap: .7rem; margin-top: 1.3rem; }
.game-nav.center { justify-content: center; }

/* ── Identidade visual por jogo (bug 4) ──────────────────────────
   Cada treino recebe uma cor de destaque (--game-accent) + tratamento
   próprio de cabeçalho, corpo e HUD, para nenhum parecer o mesmo molde.
   Só passar {theme, accent} em gameShell() já diferencia o jogo. */
.game-inner[class*="game-theme-"] .game-head {
  border-color: color-mix(in srgb, var(--game-accent, var(--accent)) 55%, var(--border));
  box-shadow: inset 5px 0 0 var(--game-accent, var(--accent));
  background: linear-gradient(90deg, color-mix(in srgb, var(--game-accent, var(--accent)) 18%, var(--panel)), var(--panel) 62%);
}
.game-inner[class*="game-theme-"] .game-head h2 { color: var(--game-accent, var(--accent)); }
.game-inner[class*="game-theme-"] .game-head .eyebrow { color: color-mix(in srgb, var(--game-accent, var(--accent)) 60%, var(--muted)); }
.game-inner[class*="game-theme-"] .wt-round { color: var(--game-accent, var(--accent)); }
.game-inner[class*="game-theme-"] .wt-score { color: color-mix(in srgb, var(--game-accent, var(--accent)) 65%, var(--text)); }
/* Corpo com leve tingimento da cor + moldura (vale p/ quase todos os jogos). */
.game-inner[class*="game-theme-"] .whos-body,
.game-inner[class*="game-theme-"] .flash-body {
  padding: 1rem 1.1rem 1.2rem; border-radius: 16px;
  border: 1px solid color-mix(in srgb, var(--game-accent) 28%, var(--border));
  background: radial-gradient(130% 90% at 50% 0%, color-mix(in srgb, var(--game-accent) 11%, var(--panel)), var(--panel) 72%);
}
/* Realces internos comuns puxam a cor do jogo. */
.game-inner[class*="game-theme-"] .flash-q { border-left: 3px solid var(--game-accent); }
.game-inner[class*="game-theme-"] .scam-offer:hover,
.game-inner[class*="game-theme-"] .quiz-opt:hover { border-color: var(--game-accent); }

/* ── Motivos especiais (mais elaborados) — vêm depois p/ prevalecer. ── */
/* Quem é esse Pokémon? — tela de "scanner" da Pokédex (linhas de varredura). */
.game-inner.game-theme-whosthat .whos-body {
  background:
    repeating-linear-gradient(0deg, transparent 0 7px, color-mix(in srgb, var(--game-accent) 9%, transparent) 7px 8px),
    radial-gradient(circle at 50% 30%, color-mix(in srgb, var(--game-accent) 14%, var(--panel)), var(--panel));
}
.game-theme-whosthat .wt-q { color: var(--game-accent); }
/* Anagrama — mesa de peças de letras (xadrez diagonal + espaçamento). */
.game-inner.game-theme-anagram .whos-body {
  background: repeating-linear-gradient(45deg, color-mix(in srgb, var(--game-accent) 8%, var(--panel)) 0 14px, var(--panel) 14px 28px);
}
.game-theme-anagram .flash-text, .game-theme-anagram .flash-q { letter-spacing: .14em; }
/* Sequência (Simon) — pads com brilho neon roxo. */
.game-inner.game-theme-simon .whos-body { background: radial-gradient(circle at 50% 0%, color-mix(in srgb, var(--game-accent) 16%, var(--panel)), var(--panel)); }
.game-theme-simon .simon-grid { filter: drop-shadow(0 0 12px color-mix(in srgb, var(--game-accent) 45%, transparent)); }
.game-theme-simon .simon-pad { border-color: color-mix(in srgb, var(--game-accent) 45%, var(--border)); }
/* Fraqueza de tipos — arena de batalha (topo em brasa). */
.game-inner.game-theme-types .whos-body {
  background: radial-gradient(circle at 50% 0%, color-mix(in srgb, var(--game-accent) 18%, var(--panel)), var(--panel));
  border-top: 3px solid var(--game-accent);
}

/* ══════════════════════════════════════════════════════════════
   Layouts SOB MEDIDA (bug 4 — leva bespoke)
   Cada um destes jogos tem estrutura/interação própria, não só cor.
   ══════════════════════════════════════════════════════════════ */

/* ── Detetive de Logs — console de monitoramento (SOC/CRT) ── */
.ld-body { background: none !important; border: none !important; padding: 0 !important; }
.ld-term {
  font-family: ui-monospace, "Cascadia Code", Consolas, "Liberation Mono", monospace;
  background: linear-gradient(180deg, #0b1512, #0a1110);
  border: 1px solid #163a33; border-radius: 12px; overflow: hidden; position: relative;
  box-shadow: 0 18px 40px rgba(0, 0, 0, .5), inset 0 0 60px rgba(51, 214, 182, .05);
}
.ld-term::after { /* scanlines de CRT */
  content: ""; position: absolute; inset: 0; pointer-events: none; opacity: .3; z-index: 2;
  background: repeating-linear-gradient(0deg, rgba(0, 0, 0, 0) 0 2px, rgba(0, 0, 0, .28) 2px 3px);
}
.ld-topbar { display: flex; align-items: center; gap: .6rem; padding: .5rem .8rem; background: #0d1a17; border-bottom: 1px solid #16332c; }
.ld-dots { display: flex; gap: 5px; }
.ld-dots i { width: 10px; height: 10px; border-radius: 50%; background: #26463f; }
.ld-dots i:first-child { background: #e0533b; }
.ld-dots i:nth-child(2) { background: #e0a93b; }
.ld-dots i:nth-child(3) { background: #33d6b6; }
.ld-title { color: #7fd8c6; font-size: .82rem; letter-spacing: .02em; }
.ld-rec { margin-left: auto; color: #ff5b5b; font-size: .72rem; font-weight: 700; letter-spacing: .08em; animation: ld-rec 1.4s steps(1) infinite; }
@keyframes ld-rec { 50% { opacity: .25; } }
.ld-meta { display: flex; align-items: center; gap: .6rem; padding: .55rem .8rem; border-bottom: 1px dashed #16332c; flex-wrap: wrap; }
.ld-tag { font-size: .7rem; color: #5fbfa9; border: 1px solid #1c4038; border-radius: 5px; padding: .1rem .45rem; letter-spacing: .06em; }
.ld-tag.ok { color: #33d6b6; border-color: #2a5a4f; }
.ld-hint { margin-left: auto; color: #4e7a70; font-size: .72rem; }
.ld-log { display: flex; flex-direction: column; padding: .4rem .5rem; gap: 2px; position: relative; z-index: 1; }
.ld-line {
  display: grid; grid-template-columns: 26px 72px auto 1fr auto; align-items: center; gap: .6rem;
  text-align: left; background: transparent; border: 1px solid transparent; border-radius: 6px;
  color: #cfeee6; padding: .34rem .5rem; cursor: pointer; font: inherit; font-size: .85rem;
  transition: background .12s, border-color .12s;
}
.ld-line:hover:not([disabled]) { background: rgba(51, 214, 182, .08); border-color: #2a5a4f; }
.ld-gutter { color: #3c5f57; font-size: .72rem; text-align: right; }
.ld-ts { color: #4e8478; font-size: .74rem; }
.ld-user { color: #7fe0cd; font-weight: 700; white-space: nowrap; }
.ld-text { color: #b9d4cd; }
.ld-flag { color: #2a5a4f; font-size: .72rem; opacity: 0; transition: opacity .12s; }
.ld-line:hover:not([disabled]) .ld-flag { opacity: 1; }
.ld-line[disabled] { cursor: default; opacity: .9; }
.ld-line.violation { background: rgba(255, 80, 80, .14); border-color: #e0533b; }
.ld-line.violation .ld-user, .ld-line.violation .ld-text { color: #ffb3a8; }
.ld-line.violation .ld-flag { opacity: 1; color: #ff6b5b; }
.ld-line.missed { border-color: #e0a93b; }
.ld-prompt { padding: .3rem .9rem .7rem; color: #33d6b6; position: relative; z-index: 1; font-size: .9rem; }
.ld-blink { animation: ld-blink 1s steps(1) infinite; }
@keyframes ld-blink { 50% { opacity: 0; } }
.ld-reveal { margin-top: .9rem; }
.ld-verdict { font-family: ui-monospace, Consolas, monospace; border-radius: 10px; padding: .8rem .9rem; border: 1px solid; background: #0b1512; }
.ld-verdict.ok { border-color: #2a7a68; box-shadow: 0 0 0 1px rgba(51, 214, 182, .2); }
.ld-verdict.no { border-color: #7a3a2a; box-shadow: 0 0 0 1px rgba(224, 83, 59, .2); }
.ld-verdict-head { font-weight: 800; letter-spacing: .04em; margin-bottom: .4rem; }
.ld-verdict.ok .ld-verdict-head { color: #33d6b6; }
.ld-verdict.no .ld-verdict-head { color: #ff8b7a; }
.ld-rule-k { color: #4e8478; font-size: .74rem; display: block; margin-bottom: .15rem; }
.ld-rule p { margin: 0; color: #c9ded7; font-size: .9rem; line-height: 1.5; }
.ld-next { margin-top: .8rem; font-family: ui-monospace, Consolas, monospace; }
@media (max-width: 560px) {
  .ld-line { grid-template-columns: 20px auto 1fr; gap: .4rem; font-size: .8rem; }
  .ld-ts, .ld-flag { display: none; }
}

/* ── Torre de Desafios — escalada vertical (uma vida) ── */
.twr-body { background: none !important; border: none !important; padding: 0 !important; }
.twr-stage { display: grid; grid-template-columns: 132px 1fr; gap: 1.1rem; align-items: stretch; }
.twr-tower {
  position: relative; display: flex; flex-direction: column; gap: 0;
  background: linear-gradient(180deg, #241a2e, #1a1420); border: 1px solid var(--border); border-radius: 14px;
  padding: 8px; min-height: 380px; box-shadow: inset 0 0 40px rgba(0, 0, 0, .4);
}
.twr-roof { text-align: center; font-size: 1.2rem; margin-bottom: 4px; filter: drop-shadow(0 2px 3px rgba(0, 0, 0, .5)); }
.twr-floor {
  flex: 1; display: flex; align-items: center; justify-content: flex-end; padding: 0 8px;
  border: 1px solid #3a2c46; border-radius: 5px; margin-bottom: 4px; min-height: 22px; position: relative;
  background: repeating-linear-gradient(90deg, #2a2033 0 10px, #251c2e 10px 20px);
  color: #6b5a7a; font-size: .7rem; font-weight: 700;
}
.twr-floor.lit {
  background: linear-gradient(90deg, color-mix(in srgb, var(--game-accent) 40%, #2a2033), color-mix(in srgb, var(--game-accent) 18%, #251c2e));
  color: #ffd9b0; border-color: color-mix(in srgb, var(--game-accent) 55%, #3a2c46);
}
.twr-floor.current { border-color: var(--game-accent); color: #fff; box-shadow: 0 0 0 2px var(--game-accent), 0 0 14px color-mix(in srgb, var(--game-accent) 60%, transparent); }
.twr-floor.record::before { content: "🏆"; position: absolute; left: 6px; font-size: .74rem; }
.twr-climber {
  position: absolute; left: 12px; width: 26px; height: 26px; display: grid; place-items: center; font-size: 1.3rem;
  transition: bottom .45s cubic-bezier(.34, 1.3, .6, 1); z-index: 3; filter: drop-shadow(0 3px 3px rgba(0, 0, 0, .5));
}
.twr-climber.falling { transition: bottom .55s cubic-bezier(.5, 0, .9, .4), transform .55s; bottom: 4px !important; transform: rotate(220deg); }
.twr-side { display: flex; flex-direction: column; gap: .9rem; }
.twr-hud { display: flex; align-items: center; gap: .6rem; flex-wrap: wrap; }
.twr-floornow { font-family: var(--font-display); font-weight: 800; color: var(--game-accent); font-size: 1.05rem; }
.twr-best { color: var(--muted); font-weight: 700; }
.twr-life { margin-left: auto; color: #ff6b6b; font-weight: 700; font-size: .85rem; }
.twr-gate {
  border: 2px solid color-mix(in srgb, var(--game-accent) 45%, var(--border)); border-radius: 14px; padding: 1.1rem 1.4rem;
  background: radial-gradient(120% 100% at 50% 0%, color-mix(in srgb, var(--game-accent) 16%, var(--panel)), var(--panel)); position: relative;
}
.twr-gate::before, .twr-gate::after {
  content: ""; position: absolute; top: 10px; bottom: 10px; width: 5px; opacity: .5;
  background: repeating-linear-gradient(180deg, var(--game-accent) 0 8px, transparent 8px 16px);
}
.twr-gate::before { left: 7px; }
.twr-gate::after { right: 7px; }
.twr-q { font-size: 1.15rem; font-weight: 700; margin: .4rem 0 0; line-height: 1.4; }
.twr-btns { display: grid; grid-template-columns: 1fr 1fr; gap: .7rem; }
.twr-yes, .twr-no { font-size: 1.05rem; font-weight: 800; padding: .9rem; border-radius: 12px; color: #fff; }
.twr-yes { background: #1f7a4d; border: 1px solid #2aa869; }
.twr-yes:hover:not([disabled]) { background: #249259; }
.twr-no { background: #a83232; border: 1px solid #d64545; }
.twr-no:hover:not([disabled]) { background: #c23c3c; }
@media (max-width: 560px) { .twr-stage { grid-template-columns: 100px 1fr; } .twr-gate { padding: 1rem; } }

/* ── Fila de Denúncias — central de tickets + anel de SLA ── */
.rq-head { display: flex; align-items: center; gap: .8rem; margin-bottom: .9rem; }
.rq-brand { display: flex; align-items: center; gap: .6rem; }
.rq-ico { font-size: 1.5rem; }
.rq-brand strong { display: block; font-family: var(--font-display); }
.rq-ring { position: relative; width: 56px; height: 56px; margin-left: auto; flex-shrink: 0; }
.rq-ring svg { width: 100%; height: 100%; transform: rotate(-90deg); }
.rq-ring circle { fill: none; stroke-width: 6; }
.rq-track { stroke: color-mix(in srgb, var(--game-accent) 20%, var(--border)); }
.rq-prog { stroke: var(--game-accent); stroke-linecap: round; }
.rq-ring.run .rq-prog { stroke: #e8b23a; }
.rq-ring-lbl { position: absolute; inset: 0; display: grid; place-items: center; font-size: .62rem; font-weight: 800; color: var(--muted); letter-spacing: .06em; }
.rq-ticket { border: 1px solid var(--border); border-left: 4px solid var(--game-accent); border-radius: 12px; background: var(--panel); padding: .9rem 1rem; box-shadow: 0 8px 22px rgba(0, 0, 0, .25); }
.rq-ticket-top { display: flex; align-items: center; gap: .6rem; margin-bottom: .7rem; padding-bottom: .6rem; border-bottom: 1px dashed var(--border); }
.rq-id { font-family: ui-monospace, Consolas, monospace; font-weight: 800; color: var(--game-accent); letter-spacing: .04em; }
.rq-badge { font-size: .68rem; font-weight: 800; color: #e0533b; letter-spacing: .06em; }
.rq-slacount { margin-left: auto; font-size: .72rem; color: var(--muted); }
.rq-field { display: grid; grid-template-columns: 96px 1fr; gap: .6rem; padding: .28rem 0; align-items: start; }
.rq-k { font-size: .72rem; text-transform: uppercase; letter-spacing: .05em; color: var(--muted); font-weight: 700; padding-top: .1rem; }
.rq-v { line-height: 1.4; }
.rq-v.strong { font-weight: 800; font-size: 1.05rem; }
.rq-actions { display: grid; grid-template-columns: repeat(3, 1fr); gap: .6rem; margin-top: 1rem; }
.rq-action { padding: .85rem .7rem; border-radius: 12px; font-weight: 700; border: 1px solid var(--border); background: var(--panel-2); color: var(--text); text-align: center; cursor: pointer; transition: transform .06s, border-color .15s, background .15s; }
.rq-action:hover:not([disabled]) { border-color: var(--game-accent); transform: translateY(-2px); }
.rq-action.good { border-color: #2aa869; background: rgba(42, 168, 105, .16); color: #8ff0bf; }
.rq-action.bad { border-color: #d64545; background: rgba(214, 69, 69, .16); color: #ffb3ab; }
@media (max-width: 560px) { .rq-actions { grid-template-columns: 1fr; } }

/* ── Triagem de Chat — moderação ao vivo ── */
.tri-head { display: flex; align-items: center; gap: .6rem; padding: .5rem .8rem; border: 1px solid var(--border); border-radius: 10px 10px 0 0; background: #1a1020; }
.tri-live { color: #ff4d4d; font-weight: 800; font-size: .72rem; letter-spacing: .06em; animation: ld-rec 1.3s steps(1) infinite; }
.tri-chan { font-family: ui-monospace, Consolas, monospace; color: var(--game-accent); font-weight: 700; }
.tri-count { margin-left: auto; font-size: .72rem; color: var(--muted); }
.tri-feed { border: 1px solid var(--border); border-top: none; background: linear-gradient(180deg, #140c1a, #0f0a14); padding: 1.1rem 1rem 1.3rem; min-height: 120px; }
.tri-msg { display: flex; gap: .6rem; align-items: flex-start; animation: tri-in .25s ease both; }
@keyframes tri-in { from { opacity: 0; transform: translateY(8px); } }
.tri-av { width: 38px; height: 38px; border-radius: 50%; display: grid; place-items: center; font-weight: 800; color: #fff; flex-shrink: 0; background: linear-gradient(135deg, var(--game-accent), #7a2d20); }
.tri-bubble { background: var(--panel); border: 1px solid var(--border); border-radius: 4px 14px 14px 14px; padding: .6rem .8rem; max-width: 80%; }
.tri-user { display: block; font-size: .72rem; font-weight: 800; color: var(--game-accent); margin-bottom: .15rem; }
.tri-text { margin: 0; font-size: 1.1rem; line-height: 1.4; }
.tri-timer { padding: .5rem .2rem 0; }
.tri-timer-lbl { font-size: .72rem; color: var(--muted); }
.tri-track { height: 8px; border-radius: 99px; background: var(--panel-2); overflow: hidden; margin-top: .3rem; }
.tri-bar { height: 100%; width: 100%; border-radius: 99px; background: linear-gradient(90deg, #2aa869, #e8b23a 60%, #e0533b); }
.tri-actions { display: grid; grid-template-columns: repeat(3, 1fr); gap: .7rem; margin-top: 1rem; }
.tri-punish, .tri-release, .tri-guide { padding: 1rem .6rem; border-radius: 12px; font-size: 1rem; font-weight: 800; color: #fff; transition: transform .06s, filter .15s; }
.tri-punish { background: #a83232; border: 1px solid #d64545; }
.tri-punish:hover:not([disabled]) { background: #c23c3c; }
.tri-release { background: #1f7a4d; border: 1px solid #2aa869; }
.tri-release:hover:not([disabled]) { background: #249259; }
.tri-guide { background: #b5771f; border: 1px solid #d9a441; }
.tri-guide:hover:not([disabled]) { background: #cc8724; }
/* Feedback pós-resposta: verde na ação certa, vermelho na escolhida errada */
.tri-actions .right { outline: 3px solid #7CFFB2; outline-offset: 1px; filter: brightness(1.12); }
.tri-actions .wrong { outline: 3px solid #ff9a9a; outline-offset: 1px; opacity: .85; }
.tri-actions button[disabled] { cursor: default; }
.tri-chandesc { margin: .1rem 0 .6rem; line-height: 1.35; }
.tri-ch-game { color: #6cc1ff; } .tri-ch-help { color: #8affc0; } .tri-ch-trade { color: #ffd06c; }

/* Centro de trocas — compacto no desktop e empilhado no celular. */
.trade-modal { max-width: 760px; }
.trade-form, .trade-card { display: grid; gap: .65rem; padding: .85rem; margin: .7rem 0; border: 1px solid var(--line, rgba(255,255,255,.12)); border-radius: 14px; background: var(--surface-2, rgba(255,255,255,.04)); }
.trade-form label { display: grid; gap: .25rem; }
.trade-form .btn { justify-self: start; }
.trade-arrow { display: grid; place-items: center; color: var(--accent, #ffd166); font-size: 1.35rem; font-weight: 800; }
.trade-section-title { display: block; margin-top: 1rem; }
.trade-card.resolved { opacity: .68; }
.trade-card-head, .trade-pair { display: flex; align-items: center; justify-content: space-between; gap: .6rem; }
.trade-pair { justify-content: flex-start; }
.trade-mon-line { display: flex; align-items: center; gap: .45rem; min-width: 0; flex: 1; }
.trade-mon-line > span { overflow-wrap: anywhere; }
.trade-mon-sprite { width: 42px; height: 42px; image-rendering: pixelated; object-fit: contain; }
.trade-empty, .trade-loading { padding: 1rem; border-radius: 12px; background: var(--surface-2, rgba(255,255,255,.04)); color: var(--muted, #9ca8bd); }
@media (min-width: 620px) {
  .trade-form { grid-template-columns: 1.2fr 1fr auto 1fr; align-items: end; }
  .trade-form > .eyebrow { grid-column: 1 / -1; }
  .trade-form > .btn { grid-column: 1 / -1; }
}
@media (max-width: 619px) {
  .trade-card-head, .trade-pair { align-items: flex-start; flex-direction: column; }
  .trade-pair .trade-arrow { align-self: center; transform: rotate(90deg); }
  .trade-mon-line { width: 100%; }
}
@media (max-width: 460px) { .tri-actions { grid-template-columns: 1fr; } }

/* ── Quem é esse caso? — mesa de decisão (dossiê de processo) ── */
.cdk-dossier { position: relative; margin-top: .4rem; }
.cdk-tab { display: inline-block; font-size: .68rem; font-weight: 800; letter-spacing: .08em; color: #2a2410; background: var(--game-accent); padding: .25rem .8rem; border-radius: 8px 8px 0 0; }
.cdk-file { position: relative; border: 1px solid var(--border); border-top: 3px solid var(--game-accent); border-radius: 0 12px 12px 12px; padding: 1rem 1.1rem 1.4rem; box-shadow: 0 10px 26px rgba(0, 0, 0, .28);
  background: repeating-linear-gradient(0deg, var(--panel) 0 27px, color-mix(in srgb, var(--game-accent) 5%, var(--panel)) 27px 28px); }
.cdk-filetop { display: flex; justify-content: space-between; gap: .6rem; margin-bottom: .5rem; flex-wrap: wrap; }
.cdk-pnum { font-family: ui-monospace, Consolas, monospace; font-weight: 800; color: var(--game-accent); letter-spacing: .03em; }
.cdk-progress { font-size: .74rem; color: var(--muted); }
.cdk-text { font-size: 1.12rem; line-height: 1.55; margin: .3rem 0 0; }
.cdk-stamp { position: absolute; right: 14px; bottom: 12px; transform: rotate(-11deg); opacity: .5; font-weight: 800; font-size: .78rem; letter-spacing: .12em; padding: .15rem .5rem; border-radius: 5px; border: 2px solid color-mix(in srgb, var(--game-accent) 70%, #999); color: color-mix(in srgb, var(--game-accent) 70%, #999); }
.cdk-ask { font-weight: 700; margin: .9rem 0 .5rem; }
.cdk-verdicts { display: grid; gap: .55rem; }
.cdk-verdict { text-align: left; background: var(--panel); border: 1px solid var(--border); border-radius: 11px; padding: .85rem 1rem .85rem 2.4rem; cursor: pointer; font: inherit; font-size: 1rem; color: var(--text); position: relative; transition: border-color .15s, background .15s, transform .06s; }
.cdk-verdict::before { content: "⚖"; position: absolute; left: .9rem; opacity: .5; }
.cdk-verdict:hover:not([disabled]) { border-color: var(--game-accent); background: var(--panel-2); transform: translateX(2px); }
.cdk-verdict.right { border-color: #2aa869; background: rgba(42, 168, 105, .14); }
.cdk-verdict.right::before { content: "✓"; opacity: 1; color: #2aa869; }
.cdk-verdict.wrong { border-color: #d64545; background: rgba(214, 69, 69, .14); }
.cdk-verdict.wrong::before { content: "✗"; opacity: 1; color: #d64545; }

/* ── Digitação — janela de chat de suporte ── */
.sup-head { display: flex; align-items: center; gap: .5rem; padding: .55rem .8rem; background: #0f1a24; border: 1px solid var(--border); border-radius: 12px 12px 0 0; }
.sup-head strong { font-family: var(--font-display); color: #cfe6f5; }
.sup-dot { width: 9px; height: 9px; border-radius: 50%; background: #2aa869; box-shadow: 0 0 8px #2aa869; }
.sup-meta { margin-left: auto; font-size: .72rem; color: var(--muted); }
.sup-chat { border: 1px solid var(--border); border-top: none; background: linear-gradient(180deg, #0c151d, #0a1219); padding: 1rem .9rem; display: flex; flex-direction: column; gap: .7rem; max-height: 260px; overflow-y: auto; }
.sup-row { display: flex; gap: .5rem; align-items: flex-end; }
.sup-row.in { justify-content: flex-start; }
.sup-row.out { justify-content: flex-end; animation: tri-in .22s ease both; }
.sup-av { width: 32px; height: 32px; border-radius: 50%; display: grid; place-items: center; background: #16303f; font-size: 1rem; flex-shrink: 0; }
.sup-bubble { border-radius: 4px 14px 14px 14px; padding: .6rem .8rem; max-width: 82%; background: #16232e; border: 1px solid #23384a; }
.sup-bubble.sent { border-radius: 14px 14px 4px 14px; background: #1f4a63; border-color: #2c6a8c; }
.sup-tag { display: block; font-size: .68rem; text-transform: uppercase; letter-spacing: .05em; color: var(--game-accent); font-weight: 700; margin-bottom: .25rem; }
.sup-target { margin: 0; font-size: 1.05rem; line-height: 1.45; color: #e6f1f8; user-select: none; }
.sup-bubble p { margin: 0; color: #e6f1f8; }
.sup-row.out.ok .sup-bubble.sent { border-color: #2aa869; }
.sup-row.out.no .sup-bubble.sent { border-color: #d64545; background: #5a2530; }
.sup-ticks { display: block; text-align: right; font-size: .66rem; margin-top: .25rem; opacity: .85; }
.sup-row.out.ok .sup-ticks { color: #7ef0b6; }
.sup-composer { display: flex; gap: .5rem; padding: .6rem; border: 1px solid var(--border); border-top: none; border-radius: 0 0 12px 12px; background: #0f1a24; }
.sup-input { flex: 1; background: #0c151d; border: 1px solid #23384a; border-radius: 22px; color: #e6f1f8; padding: .7rem 1rem; font: inherit; }
.sup-input:focus { outline: none; border-color: var(--game-accent); }
.sup-send { width: 44px; border-radius: 50%; background: var(--game-accent); color: #08131b; font-size: 1.1rem; font-weight: 800; border: none; flex-shrink: 0; cursor: pointer; }
.sup-send:hover:not([disabled]) { filter: brightness(1.1); }

/* ── Reescreva o Tom — editor lado a lado (antes → depois) ── */
.tw-cols { display: grid; grid-template-columns: 1fr 1fr; gap: .8rem; }
.tw-col { border: 1px solid var(--border); border-radius: 12px; background: var(--panel); overflow: hidden; display: flex; flex-direction: column; }
.tw-col-head { font-size: .74rem; font-weight: 800; letter-spacing: .04em; padding: .55rem .8rem; border-bottom: 1px solid var(--border); }
.tw-bad { border-color: color-mix(in srgb, #d64545 45%, var(--border)); }
.tw-bad .tw-col-head { color: #ff9a8f; background: rgba(214, 69, 69, .1); }
.tw-mine { border-color: color-mix(in srgb, var(--game-accent) 45%, var(--border)); }
.tw-mine .tw-col-head { color: var(--game-accent); background: color-mix(in srgb, var(--game-accent) 10%, transparent); }
.tw-col-body { margin: 0; padding: .9rem; line-height: 1.55; font-size: 1rem; }
.tw-bad .tw-col-body { color: #e7c3bd; font-style: italic; }
.tw-editor { border: none; background: transparent; color: var(--text); resize: vertical; min-height: 140px; padding: .9rem; font: inherit; font-size: 1rem; line-height: 1.55; }
.tw-editor:focus { outline: none; }
.tw-model { grid-column: 1 / -1; display: none; border-color: #2aa869; }
.tw-model.show { display: flex; animation: tri-in .3s ease both; }
.tw-model .tw-col-head { color: #7ef0b6; background: rgba(42, 168, 105, .12); }
.tw-model .tw-col-body { color: #d7f2e5; }
.tw-compare { margin-top: 1rem; width: 100%; }
@media (max-width: 620px) { .tw-cols { grid-template-columns: 1fr; } }

/* ── Aviso, Mute ou Ban? — escada de punição ── */
.esc-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: .7rem; }
.esc-badge { font-family: ui-monospace, Consolas, monospace; font-size: .72rem; font-weight: 800; letter-spacing: .06em; color: var(--game-accent); }
.esc-hits { font-size: .8rem; color: var(--muted); font-weight: 700; }
.esc-case { border: 1px solid var(--border); border-left: 4px solid #d64545; border-radius: 12px; background: var(--panel); padding: .9rem 1rem; }
.esc-text { margin: .25rem 0 0; font-size: 1.12rem; line-height: 1.5; }
.esc-ask { font-weight: 700; margin: .9rem 0 .5rem; }
.esc-ladder { display: flex; flex-direction: column; gap: .5rem; }
.esc-rung { display: flex; align-items: center; gap: .8rem; text-align: left; padding: .8rem 1rem; border-radius: 12px; border: 1px solid var(--border); background: var(--panel); cursor: pointer; font: inherit; color: var(--text); position: relative; transition: transform .06s, border-color .15s, box-shadow .15s; }
.esc-rung:hover:not([disabled]) { transform: translateX(3px); }
.esc-rung-n { width: 30px; height: 30px; flex-shrink: 0; display: grid; place-items: center; border-radius: 8px; font-weight: 800; color: #1a1a1a; }
.esc-rung-main { display: flex; flex-direction: column; }
.esc-rung-label { font-weight: 800; font-size: 1.05rem; }
.esc-rung-hint { font-size: .76rem; color: var(--muted); }
.esc-aviso { border-left: 5px solid #e3c93a; } .esc-aviso .esc-rung-n { background: #e3c93a; }
.esc-mute  { border-left: 5px solid #e0872e; } .esc-mute .esc-rung-n  { background: #e0872e; }
.esc-ban   { border-left: 5px solid #d64545; } .esc-ban .esc-rung-n   { background: #d64545; color: #fff; }
.esc-rung.right { box-shadow: 0 0 0 2px #2aa869, 0 8px 18px rgba(42, 168, 105, .25); border-color: #2aa869; }
.esc-rung.right::after { content: "✓"; margin-left: auto; color: #2aa869; font-weight: 800; font-size: 1.2rem; }
.esc-rung.wrong { box-shadow: 0 0 0 2px #d64545; opacity: .8; }
.esc-rung.wrong::after { content: "✗"; margin-left: auto; color: #ff8b7a; font-weight: 800; font-size: 1.2rem; }

/* ── Cite a Regra — código de conduta ── */
.rb-book { border: 1px solid var(--border); border-radius: 12px; overflow: hidden; background: repeating-linear-gradient(0deg, var(--panel) 0 29px, color-mix(in srgb, var(--game-accent) 5%, var(--panel)) 29px 30px); box-shadow: 0 10px 26px rgba(0, 0, 0, .25); }
.rb-book-head { display: flex; align-items: center; justify-content: space-between; gap: .6rem; padding: .6rem .9rem; background: color-mix(in srgb, var(--game-accent) 16%, var(--panel)); border-bottom: 2px solid color-mix(in srgb, var(--game-accent) 45%, var(--border)); flex-wrap: wrap; }
.rb-title { font-family: var(--font-display); font-weight: 800; color: var(--game-accent); letter-spacing: .02em; }
.rb-page { font-size: .72rem; color: var(--muted); }
.rb-occurrence { padding: .9rem 1.1rem 1.1rem; border-left: 4px solid color-mix(in srgb, var(--game-accent) 55%, var(--border)); margin: .3rem .3rem; }
.rb-scene { margin: .3rem 0 0; font-size: 1.1rem; line-height: 1.55; }
.rb-ask { font-weight: 700; margin: .9rem 0 .5rem; }
.rb-articles { display: grid; gap: .5rem; }
.rb-article { display: flex; align-items: baseline; gap: .8rem; text-align: left; padding: .8rem 1rem; border-radius: 10px; border: 1px solid var(--border); background: var(--panel); cursor: pointer; font: inherit; color: var(--text); transition: border-color .15s, background .15s, transform .06s; }
.rb-article:hover:not([disabled]) { border-color: var(--game-accent); background: var(--panel-2); transform: translateX(2px); }
.rb-art-n { font-family: ui-monospace, Consolas, monospace; font-weight: 800; color: var(--game-accent); flex-shrink: 0; min-width: 3.4rem; }
.rb-art-t { font-size: 1rem; }
.rb-article.good { border-color: #2aa869; background: rgba(42, 168, 105, .14); }
.rb-article.good .rb-art-n { color: #2aa869; }
.rb-article.bad { border-color: #d64545; background: rgba(214, 69, 69, .14); }

/* ── Modo História — trilha de patente + reputação ── */
.sty-rail { display: flex; align-items: center; gap: .4rem; margin-bottom: .8rem; }
.sty-rank { display: flex; align-items: center; gap: .35rem; font-size: .8rem; font-weight: 700; color: var(--muted); padding: .3rem .7rem; border-radius: 99px; border: 1px solid var(--border); background: var(--panel); }
.sty-rank:not(:last-child)::after { content: "→"; margin-left: .4rem; color: var(--border); }
.sty-rank-dot { font-weight: 800; }
.sty-rank.done { color: #7ef0b6; border-color: #2aa869; }
.sty-rank.on { color: var(--game-accent); border-color: var(--game-accent); box-shadow: 0 0 0 1px var(--game-accent); }
.sty-rep { display: flex; align-items: center; gap: .6rem; margin-bottom: 1rem; }
.sty-rep-lbl { font-size: .74rem; color: var(--muted); font-weight: 700; }
.sty-repbar { flex: 1; height: 10px; border-radius: 99px; background: var(--panel-2); overflow: hidden; }
.sty-repfill { display: block; height: 100%; border-radius: 99px; background: linear-gradient(90deg, color-mix(in srgb, var(--game-accent) 60%, #6b4fa0), var(--game-accent)); transition: width .4s ease; }
.sty-repnum { font-weight: 800; color: var(--game-accent); }
.sty-scene { border: 1px solid var(--border); border-radius: 14px; background: linear-gradient(180deg, color-mix(in srgb, var(--game-accent) 12%, var(--panel)), var(--panel)); padding: 1.1rem 1.2rem; border-left: 4px solid var(--game-accent); }
.sty-text { margin: .3rem 0 0; font-size: 1.14rem; line-height: 1.6; }
.sty-choices { display: grid; gap: .5rem; margin-top: 1rem; }
.sty-choice { display: flex; align-items: center; gap: .7rem; text-align: left; padding: .85rem 1rem; border-radius: 12px; border: 1px solid var(--border); background: var(--panel); cursor: pointer; font: inherit; font-size: 1rem; color: var(--text); transition: border-color .15s, background .15s, transform .06s; }
.sty-choice:hover { border-color: var(--game-accent); background: var(--panel-2); transform: translateX(3px); }
.sty-arrow { color: var(--game-accent); font-weight: 800; flex-shrink: 0; }

/* ── Modere o Chat — janela de chat ao vivo ── */
.lm-head { display: flex; align-items: center; gap: .6rem; padding: .55rem .85rem; background: #1c110e; border: 1px solid var(--border); border-radius: 12px 12px 0 0; }
.lm-live { color: #ff4d3d; font-weight: 800; font-size: .72rem; letter-spacing: .08em; animation: ld-rec 1.3s steps(1) infinite; }
.lm-chan { font-family: ui-monospace, Consolas, monospace; color: var(--game-accent); font-weight: 700; }
.lm-count { margin-left: auto; font-weight: 800; color: #ff9a3d; }
.lm-instr { font-size: .78rem; color: var(--muted); margin: .5rem .2rem .6rem; }
.lm-feed { border: 1px solid var(--border); border-top: none; border-radius: 0 0 12px 12px; background: linear-gradient(180deg, #17100e, #120c0a); padding: .6rem; min-height: 220px; max-height: 340px; overflow-y: auto; display: flex; flex-direction: column; gap: .4rem; }
.lm-msg { display: flex !important; align-items: center; gap: .55rem; text-align: left; width: 100%; background: var(--panel); border: 1px solid var(--border); border-radius: 10px; padding: .5rem .7rem; cursor: pointer; animation: tri-in .22s ease both; transition: transform .1s, border-color .15s, background .2s; }
.lm-msg:hover { transform: translateX(2px); border-color: var(--game-accent); }
.lm-av { width: 30px; height: 30px; border-radius: 50%; flex-shrink: 0; display: grid; place-items: center; font-weight: 800; color: #fff; background: linear-gradient(135deg, #4a4a55, #2a2a33); }
.lm-msg.is-bad .lm-av { background: linear-gradient(135deg, var(--game-accent), #7a2417); }
.lm-body { display: flex; flex-direction: column; min-width: 0; }
.lm-body .log-user { font-size: .72rem; font-weight: 800; color: var(--game-accent); }
.lm-body .log-text { color: var(--text); }
.lm-msg.muted { border-color: #2aa869; background: rgba(42, 168, 105, .12); opacity: .85; }
.lm-msg.wrongmute { border-color: #d64545; background: rgba(214, 69, 69, .14); }
.lm-msg.expired { border-color: #e0a93b; }
.lm-msg.leaving { opacity: 0; transform: translateX(30px); transition: opacity .4s, transform .4s; }

/* ── Forca da Moderação — forca desenhada ── */
.fc-stagewrap { display: grid; grid-template-columns: 140px 1fr; gap: 1rem; align-items: center; }
.fc-stage { background: linear-gradient(180deg, #1a2216, #131a10); border: 1px solid var(--border); border-radius: 14px; padding: .6rem; }
.fc-svg { width: 100%; height: auto; display: block; }
.fc-frame { stroke: #6f5a3a; stroke-width: 6; stroke-linecap: round; }
.fc-rope { stroke: #b89b5e; stroke-width: 3; }
.fc-p { stroke: var(--game-accent); fill: none; stroke-width: 5; stroke-linecap: round; opacity: 0; transition: opacity .25s ease; }
.fc-p:first-of-type { fill: none; }
circle.fc-p { fill: transparent; }
.fc-p.show { opacity: 1; }
/* "Boneco" = Pokémon numa jaula que fecha a cada erro */
.fc-cage { position: relative; display: grid; place-items: center; min-height: 130px; padding: .4rem; }
.fc-cage-top { position: absolute; top: -.2rem; font-size: 1.2rem; z-index: 3; }
.fc-mon { width: 96px; height: 96px; object-fit: contain; image-rendering: pixelated; transition: transform .3s ease, filter .3s ease; z-index: 1; }
.fc-bars { position: absolute; inset: 12% 8% 6%; display: flex; justify-content: space-between; z-index: 2; pointer-events: none; }
.fc-bar { width: 4px; border-radius: 3px; background: linear-gradient(180deg, #cdd6e6, #7f8aa3); box-shadow: 0 0 4px rgba(0,0,0,.4); transform: scaleY(0); transform-origin: top; transition: transform .28s cubic-bezier(.3,.8,.3,1.2); }
.fc-bar.show { transform: scaleY(1); }
.fc-cage.shut .fc-mon { filter: grayscale(.6) brightness(.8); transform: scale(.9); }
.fc-cage.free .fc-mon { animation: fc-escape .6s ease both; }
@keyframes fc-escape { 0% { transform: translateY(0); } 40% { transform: translateY(-14px) scale(1.08); } 100% { transform: translateY(0) scale(1); } }
.fc-panel { display: flex; flex-direction: column; gap: .6rem; }
.fc-errhud { font-family: var(--font-display); font-weight: 800; color: var(--game-accent); }
.fc-word { display: flex; flex-wrap: wrap; gap: .3rem; }
.fc-kb { margin-top: .3rem; }
@media (max-width: 560px) { .fc-stagewrap { grid-template-columns: 110px 1fr; } }

/* ── Ordene o Protocolo — prancheta/checklist ── */
.op-clip { border: 1px solid var(--border); border-top: 4px solid var(--game-accent); border-radius: 12px; background: var(--panel); padding: .8rem 1rem; margin-bottom: .8rem; position: relative; }
.op-clip::before { content: ""; position: absolute; top: -11px; left: 50%; transform: translateX(-50%); width: 54px; height: 12px; border-radius: 6px; background: #7d848c; box-shadow: inset 0 -2px 3px rgba(0, 0, 0, .3); }
.op-clip-top { display: flex; align-items: center; justify-content: space-between; }
.op-title { font-family: var(--font-display); font-weight: 800; color: var(--game-accent); }
.op-progress { font-family: ui-monospace, Consolas, monospace; font-weight: 800; color: var(--muted); }
.op-instr { font-size: .78rem; color: var(--muted); margin: .3rem 0 0; }
.op-list { display: flex; flex-direction: column; gap: .45rem; }
.op-item { display: flex; align-items: center; gap: .8rem; text-align: left; padding: .75rem .9rem; border-radius: 10px; border: 1px dashed var(--border); background: var(--panel); cursor: pointer; font: inherit; color: var(--text); transition: border-color .15s, background .15s, transform .06s; }
.op-item:hover:not(.chosen) { border-color: var(--game-accent); transform: translateX(2px); }
.op-num { width: 28px; height: 28px; flex-shrink: 0; display: grid; place-items: center; border-radius: 8px; font-weight: 800; background: var(--panel-2); color: var(--muted); border: 1px solid var(--border); }
.op-item.chosen { border-style: solid; border-color: color-mix(in srgb, var(--game-accent) 55%, var(--border)); background: color-mix(in srgb, var(--game-accent) 10%, var(--panel)); }
.op-item.chosen .op-num { background: var(--game-accent); color: #08131b; border-color: var(--game-accent); }
.op-step-t { line-height: 1.4; }
.op-step-main { display: flex; flex-direction: column; gap: .15rem; }
.op-step-tip { line-height: 1.35; opacity: .85; }
.op-item { align-items: flex-start; }
.op-scenario { margin: .5rem 0 .2rem; padding: .6rem .7rem; border-radius: 10px; background: color-mix(in srgb, var(--game-accent) 8%, var(--panel-2)); border: 1px solid color-mix(in srgb, var(--game-accent) 30%, var(--border)); }
.op-scenario p { margin: .2rem 0 0; line-height: 1.4; }

/* ── Árvore de Decisão — fluxograma ── */
.dt-trail { display: flex; flex-direction: column; align-items: center; gap: 0; margin-bottom: .4rem; }
.dt-node { display: flex; align-items: center; gap: .5rem; padding: .4rem .8rem; border-radius: 99px; font-size: .82rem; font-weight: 700; border: 1px solid var(--border); background: var(--panel); }
.dt-node.yes { border-color: #2aa869; color: #7ef0b6; }
.dt-node.no { border-color: #d64545; color: #ff9a8f; }
.dt-node-i { width: 20px; height: 20px; display: grid; place-items: center; border-radius: 50%; background: var(--panel-2); font-size: .7rem; }
.dt-trail .dt-node:not(:last-child)::after,
.dt-current::before { content: ""; }
.dt-trail .dt-node { position: relative; margin-bottom: 20px; }
.dt-trail .dt-node:not(:last-child)::after { position: absolute; left: 50%; bottom: -20px; width: 2px; height: 20px; background: var(--border); }
.dt-current { display: flex; flex-direction: column; align-items: center; margin: .6rem 0 1rem; }
.dt-step { font-size: .72rem; text-transform: uppercase; letter-spacing: .06em; color: var(--game-accent); font-weight: 800; margin-bottom: .5rem; }
.dt-diamond { max-width: 460px; border: 2px solid var(--game-accent); background: radial-gradient(120% 120% at 50% 0%, color-mix(in srgb, var(--game-accent) 16%, var(--panel)), var(--panel)); border-radius: 16px; padding: 1.1rem 1.3rem; text-align: center; position: relative; box-shadow: 0 8px 22px rgba(0, 0, 0, .25); }
.dt-diamond::before { content: "◆"; position: absolute; top: -12px; left: 50%; transform: translateX(-50%); color: var(--game-accent); font-size: 1rem; background: var(--bg, var(--panel)); padding: 0 .3rem; }
.dt-q { font-size: 1.12rem; font-weight: 700; line-height: 1.5; }
.dt-branches { display: grid; grid-template-columns: 1fr 1fr; gap: .8rem; max-width: 460px; margin: 0 auto; }
.dt-yes, .dt-no { font-size: 1.05rem; font-weight: 800; padding: .9rem; border-radius: 12px; color: #fff; }
.dt-yes { background: #1f7a4d; border: 1px solid #2aa869; }
.dt-yes:hover { background: #249259; }
.dt-no { background: #a83232; border: 1px solid #d64545; }
.dt-no:hover { background: #c23c3c; }

/* ── Encaixe a Punição — tabuleiro de ligação ── */
.mt-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: .8rem; }
.mt-title { font-weight: 700; }
.mt-count { font-family: ui-monospace, Consolas, monospace; font-weight: 800; color: var(--game-accent); }
.mt-grid { display: grid; grid-template-columns: 1fr 1fr; gap: .8rem; }
.mt-col { display: flex; flex-direction: column; gap: .5rem; }
.mt-collabel { font-size: .72rem; text-transform: uppercase; letter-spacing: .05em; font-weight: 800; color: var(--muted); text-align: center; padding-bottom: .2rem; border-bottom: 2px dashed color-mix(in srgb, var(--game-accent) 35%, var(--border)); }
.mt-grid .match-item { display: block; width: 100%; text-align: left; padding: .8rem .9rem; border-radius: 11px; border: 1px solid var(--border); background: var(--panel); cursor: pointer; font: inherit; color: var(--text); transition: border-color .12s, background .12s, transform .08s, box-shadow .15s; }
.mt-grid .match-item:hover:not([disabled]):not(.done) { border-color: var(--game-accent); transform: translateY(-1px); }
.mt-grid .match-item.sel { border-color: var(--game-accent); background: color-mix(in srgb, var(--game-accent) 16%, var(--panel)); box-shadow: 0 0 0 2px var(--game-accent); }
.mt-grid .match-item.done { border-color: #2aa869; background: rgba(42, 168, 105, .14); opacity: .75; }
.mt-grid .match-item.miss { border-color: #d64545; background: rgba(214, 69, 69, .16); animation: mt-shake .4s; }
@keyframes mt-shake { 0%,100%{ transform: translateX(0);} 25%{ transform: translateX(-5px);} 75%{ transform: translateX(5px);} }

/* ── Erro do Dia — revisão de caso ── */
.md-report { border: 1px solid var(--border); border-left: 4px solid var(--game-accent); border-radius: 12px; background: var(--panel); padding: .9rem 1.1rem; box-shadow: 0 8px 22px rgba(0, 0, 0, .22); }
.md-report-top { display: flex; align-items: center; justify-content: space-between; gap: .6rem; margin-bottom: .5rem; padding-bottom: .5rem; border-bottom: 1px dashed var(--border); flex-wrap: wrap; }
.md-stamp { font-family: ui-monospace, Consolas, monospace; font-weight: 800; letter-spacing: .05em; color: var(--game-accent); }
.md-day { font-size: .72rem; color: var(--muted); }
.md-scene { margin: 0; font-size: 1.12rem; line-height: 1.55; }
.md-ask { font-weight: 700; margin: .9rem 0 .5rem; }
.md-options { display: grid; gap: .5rem; }
.md-option { text-align: left; padding: .8rem 1rem .8rem 2.5rem; border-radius: 10px; border: 1px solid var(--border); background: var(--panel); cursor: pointer; font: inherit; font-size: 1rem; color: var(--text); position: relative; transition: border-color .15s, background .15s, transform .06s; }
.md-option::before { content: "🩺"; position: absolute; left: .8rem; top: 50%; transform: translateY(-50%); opacity: .55; }
.md-option:hover:not([disabled]) { border-color: var(--game-accent); background: var(--panel-2); transform: translateX(2px); }
.md-option.good { border-color: #2aa869; background: rgba(42, 168, 105, .14); }
.md-option.good::before { content: "✓"; opacity: 1; color: #2aa869; }
.md-option.bad { border-color: #d64545; background: rgba(214, 69, 69, .14); }
.md-option.bad::before { content: "✗"; opacity: 1; color: #d64545; }

/* ── Quiz de Cena — print de tela (screenshot) ── */
.sc-shot { border: 1px solid var(--border); border-radius: 12px; overflow: hidden; box-shadow: 0 12px 30px rgba(0, 0, 0, .3); }
.sc-bar { display: flex; align-items: center; gap: .6rem; padding: .5rem .7rem; background: #171722; border-bottom: 1px solid var(--border); }
.sc-dots { display: flex; gap: 5px; }
.sc-dots i { width: 10px; height: 10px; border-radius: 50%; background: #3a3a48; }
.sc-dots i:first-child { background: #e0533b; }
.sc-dots i:nth-child(2) { background: #e0a93b; }
.sc-dots i:nth-child(3) { background: #2aa869; }
.sc-chan { font-family: ui-monospace, Consolas, monospace; color: #b7b7c8; font-size: .82rem; }
.sc-badge { margin-left: auto; font-size: .64rem; font-weight: 800; letter-spacing: .08em; color: var(--game-accent); border: 1px solid color-mix(in srgb, var(--game-accent) 45%, var(--border)); border-radius: 5px; padding: .1rem .4rem; }
.sc-log { background: linear-gradient(180deg, #12121b, #0e0e15); padding: .7rem; display: flex; flex-direction: column; gap: .35rem; }
.sc-line { display: flex; gap: .5rem; padding: .3rem .4rem; border-radius: 6px; }
.sc-line.staff { background: color-mix(in srgb, var(--game-accent) 12%, transparent); border-left: 2px solid var(--game-accent); }
.sc-u { font-weight: 800; color: #9a8fd6; white-space: nowrap; }
.sc-line.staff .sc-u { color: var(--game-accent); }
.sc-t { color: #cdcde0; }
.sc-ask { display: flex; align-items: center; gap: .6rem; margin: .9rem 0 .5rem; padding: .7rem .9rem; border-radius: 10px; background: color-mix(in srgb, var(--game-accent) 12%, var(--panel)); border: 1px solid color-mix(in srgb, var(--game-accent) 35%, var(--border)); }
.sc-ask p { margin: 0; font-weight: 700; }
.sc-ask-ico { font-size: 1.2rem; }

/* ── Roleplay — chat de atendimento + medidor de humor ── */
.rp-head { display: flex; align-items: center; justify-content: space-between; gap: 1rem; flex-wrap: wrap; margin-bottom: .8rem; }
.rp-who { display: flex; align-items: center; gap: .6rem; }
.rp-face { font-size: 1.9rem; line-height: 1; }
.rp-who strong { display: block; }
.rp-sat { display: flex; align-items: center; gap: .5rem; min-width: 200px; flex: 1; justify-content: flex-end; }
.rp-satbar { width: 130px; height: 10px; border-radius: 99px; background: var(--panel-2); overflow: hidden; }
.rp-satfill { display: block; height: 100%; border-radius: 99px; transition: width .4s ease, background .3s; }
.rp-satfill.hi { background: linear-gradient(90deg, #2aa869, #6fe0a0); }
.rp-satfill.mid { background: linear-gradient(90deg, #e0a93b, #f0c968); }
.rp-satfill.lo { background: linear-gradient(90deg, #d64545, #e0533b); }
.rp-satnum { font-weight: 800; color: var(--game-accent); min-width: 3ch; text-align: right; }
.rp-intro { font-size: .82rem; color: var(--muted); font-style: italic; margin: 0 0 .7rem; }
.rp-chat { background: linear-gradient(180deg, #1a1016, #140c11); border: 1px solid var(--border); border-radius: 14px; padding: 1rem; }
.rp-msg { display: flex; gap: .6rem; align-items: flex-start; }
.rp-av { width: 40px; height: 40px; border-radius: 50%; display: grid; place-items: center; font-size: 1.2rem; background: linear-gradient(135deg, var(--game-accent), #7a3a5a); flex-shrink: 0; }
.rp-bubble2 { background: var(--panel); border: 1px solid var(--border); border-radius: 4px 16px 16px 16px; padding: .8rem 1rem; font-size: 1.12rem; line-height: 1.5; max-width: 85%; }
.rp-opts { display: grid; gap: .5rem; margin-top: 1rem; }
.rp-opt { text-align: left; padding: .8rem 1rem; border-radius: 11px; border: 1px solid var(--border); background: var(--panel); cursor: pointer; font: inherit; font-size: 1rem; color: var(--text); transition: border-color .15s, background .15s, transform .06s; }
.rp-opt:hover:not([disabled]) { border-color: var(--game-accent); background: var(--panel-2); transform: translateX(2px); }
.rp-opt.good { border-color: #2aa869; background: rgba(42, 168, 105, .14); }
.rp-opt.bad { border-color: #d64545; background: rgba(214, 69, 69, .14); }

/* ── Quiz-relâmpago — cartão arcade certo/errado ── */
.fq-top { display: flex; align-items: center; justify-content: space-between; margin-bottom: 1rem; }
.fq-dots { display: flex; gap: .4rem; }
.fq-dot { width: 12px; height: 12px; border-radius: 50%; background: var(--panel-2); border: 1px solid var(--border); }
.fq-dot.done { background: var(--game-accent); border-color: var(--game-accent); }
.fq-dot.now { box-shadow: 0 0 0 3px color-mix(in srgb, var(--game-accent) 30%, transparent); border-color: var(--game-accent); }
.fq-score { font-family: var(--font-display); font-weight: 800; color: var(--game-accent); }
.fq-card { position: relative; border: 2px solid color-mix(in srgb, var(--game-accent) 45%, var(--border)); border-radius: 18px; padding: 2rem 1.4rem; text-align: center; background: radial-gradient(130% 100% at 50% 0%, color-mix(in srgb, var(--game-accent) 20%, var(--panel)), var(--panel)); box-shadow: 0 10px 30px rgba(0, 0, 0, .28); overflow: hidden; }
.fq-card::before { content: "⚡"; position: absolute; top: -8px; right: 10px; font-size: 3.4rem; opacity: .12; transform: rotate(12deg); }
.fq-kicker { font-size: .74rem; text-transform: uppercase; letter-spacing: .1em; font-weight: 800; color: var(--game-accent); }
.fq-statement { font-size: 1.35rem; font-weight: 700; line-height: 1.45; margin: .6rem 0 0; }
.fq-btns { display: grid; grid-template-columns: 1fr 1fr; gap: .8rem; margin-top: 1.1rem; }
.fq-yes, .fq-no { display: flex; align-items: center; justify-content: center; gap: .5rem; padding: 1.1rem; border-radius: 14px; font-size: 1.15rem; font-weight: 800; color: #fff; }
.fq-ico { font-size: 1.3rem; }
.fq-yes { background: #1f7a4d; border: 1px solid #2aa869; }
.fq-yes:hover:not([disabled]) { background: #249259; transform: translateY(-2px); }
.fq-no { background: #a83232; border: 1px solid #d64545; }
.fq-no:hover:not([disabled]) { background: #c23c3c; transform: translateY(-2px); }
.fq-next { display: block; width: 100%; margin-top: 1rem; padding: .85rem 1rem; font-size: 1.02rem; }

/* ── Elite dos 4 — arena de desafiantes ── */
.e4-arena { border: 1px solid var(--border); border-radius: 14px; background: linear-gradient(180deg, #241d0f, #1a1509); padding: .9rem 1rem; box-shadow: inset 0 0 40px rgba(212, 175, 55, .08); }
.e4-seals { display: flex; justify-content: center; gap: .5rem; margin-bottom: .8rem; }
.e4-seal { font-size: 1.3rem; color: #6a5a2e; transition: transform .2s; }
.e4-seal.won { color: var(--game-accent); text-shadow: 0 0 10px color-mix(in srgb, var(--game-accent) 60%, transparent); }
.e4-seal.now { color: #fff; transform: scale(1.25); }
.e4-challenger { display: flex; align-items: center; gap: .8rem; }
.e4-face { font-size: 2.6rem; line-height: 1; filter: drop-shadow(0 3px 4px rgba(0, 0, 0, .5)); }
.e4-idcol { display: flex; flex-direction: column; }
.e4-role { font-size: .72rem; text-transform: uppercase; letter-spacing: .06em; color: #b39a4e; font-weight: 700; }
.e4-name { font-family: var(--font-display); font-size: 1.2rem; color: #f0dfa8; }
.e4-hp { margin-left: auto; font-weight: 800; color: var(--game-accent); font-size: 1.1rem; }
.e4-q { margin: 1rem 0 .6rem; padding: 1rem 1.2rem; border-radius: 12px; border-left: 4px solid var(--game-accent); background: var(--panel); }
.e4-q p { margin: 0; font-size: 1.15rem; font-weight: 700; line-height: 1.5; }
.e4-opts { display: grid; gap: .5rem; }
.e4-opt { text-align: left; padding: .85rem 1rem; border-radius: 11px; border: 1px solid var(--border); background: var(--panel); cursor: pointer; font: inherit; font-size: 1rem; color: var(--text); transition: border-color .15s, background .15s, transform .06s; }
.e4-opt:hover:not([disabled]) { border-color: var(--game-accent); background: var(--panel-2); transform: translateX(2px); }
.e4-opt.good { border-color: #2aa869; background: rgba(42, 168, 105, .14); }
.e4-opt.bad { border-color: #d64545; background: rgba(214, 69, 69, .14); }

/* ── Pokémon do Dia — cartão de calendário + scanner ── */
.pd-card { max-width: 420px; margin: 0 auto; border: 1px solid var(--border); border-radius: 16px; overflow: hidden; box-shadow: 0 12px 30px rgba(0, 0, 0, .28); }
.pd-cal { display: flex; align-items: center; gap: .6rem; padding: .6rem .9rem; background: color-mix(in srgb, var(--game-accent) 22%, var(--panel)); border-bottom: 2px solid color-mix(in srgb, var(--game-accent) 45%, var(--border)); }
.pd-cal-top { font-family: var(--font-display); font-weight: 800; font-size: .82rem; letter-spacing: .05em; color: var(--game-accent); }
.pd-cal-date { font-family: ui-monospace, Consolas, monospace; font-size: .74rem; color: var(--muted); }
.pd-streak { margin-left: auto; font-weight: 800; color: #ff8a3d; }
.pd-scan { position: relative; display: flex; flex-direction: column; align-items: center; gap: .6rem; padding: 1.4rem 1rem; background: radial-gradient(circle at 50% 40%, color-mix(in srgb, var(--game-accent) 16%, var(--panel)), var(--panel)); }
.pd-scan::before { content: ""; position: absolute; inset: 0; pointer-events: none; background: repeating-linear-gradient(0deg, transparent 0 8px, color-mix(in srgb, var(--game-accent) 8%, transparent) 8px 9px); }
.pd-q { color: var(--game-accent); font-weight: 700; z-index: 1; }
.pd-mon { width: 150px; height: 150px; object-fit: contain; z-index: 1; filter: drop-shadow(0 6px 8px rgba(0, 0, 0, .45)); }

/* ── Roleta do Dia — janela de sorteio com ponteiro ── */
.rl-machine { position: relative; display: flex; flex-direction: column; align-items: center; margin: .4rem 0 .2rem; }
.rl-pointer { color: var(--accent, #ffcb05); font-size: 1.2rem; line-height: 1; margin-bottom: -4px; filter: drop-shadow(0 2px 2px rgba(0, 0, 0, .5)); z-index: 2; }
.rl-window { width: 100%; min-height: 64px; display: grid; place-items: center; text-align: center; font-weight: 800; font-size: 1.05rem; padding: 1rem; border-radius: 12px; border: 2px solid var(--border); background: linear-gradient(180deg, var(--panel-2), var(--panel)); box-shadow: inset 0 8px 16px rgba(0, 0, 0, .3), inset 0 -8px 16px rgba(0, 0, 0, .3); overflow: hidden; }
.rl-window.landed { border-color: var(--accent, #ffcb05); box-shadow: 0 0 0 2px var(--accent, #ffcb05), 0 0 24px color-mix(in srgb, var(--accent, #ffcb05) 50%, transparent); animation: rl-pop .4s ease; }
@keyframes rl-pop { 0% { transform: scale(.9); } 60% { transform: scale(1.06); } 100% { transform: scale(1); } }

/* ── Torneio — setup de competidores (bracket/seed) ── */
.tn-banner { display: flex; align-items: center; gap: .8rem; padding: .8rem 1rem; margin: -.2rem 0 .8rem; border-radius: 12px; background: linear-gradient(90deg, color-mix(in srgb, #d4af37 24%, var(--panel)), var(--panel) 70%); border: 1px solid color-mix(in srgb, #d4af37 45%, var(--border)); box-shadow: inset 4px 0 0 #d4af37; }
.tn-trophy { font-size: 2.2rem; filter: drop-shadow(0 3px 4px rgba(0, 0, 0, .4)); }
.tn-banner h3 { margin: 0; color: #e8cf7a; font-family: var(--font-display); }
.tn-field { margin: .3rem 0 .6rem; }
.tn-slots { display: flex; flex-direction: column; gap: .5rem; margin: .3rem 0 .2rem; }
.tn-slot { display: flex; align-items: center; gap: .6rem; padding: .35rem .5rem; border: 1px solid var(--border); border-radius: 10px; background: var(--panel); }
.tn-seed { width: 26px; height: 26px; flex-shrink: 0; display: grid; place-items: center; border-radius: 8px; font-weight: 800; color: #2a2410; background: #d4af37; }
.tn-input { flex: 1; background: transparent; border: none; color: var(--text); font: inherit; font-weight: 600; padding: .3rem .2rem; }
.tn-input:focus { outline: none; }
.tn-ball { color: #d4af37; opacity: .5; }

/* Quiz */
.quiz-count { font-size: .78rem; text-transform: uppercase; letter-spacing: .08em; color: var(--muted); font-weight: 700; margin-bottom: .4rem; }
.quiz-prompt { font-size: 1.2rem; margin-bottom: 1rem; }
.quiz-options { display: grid; gap: .6rem; }
.quiz-opt {
  display: flex; align-items: center; gap: .8rem; text-align: left; width: 100%;
  background: var(--panel); border: 1px solid var(--border); color: var(--text);
  border-radius: 12px; padding: .9rem 1rem; cursor: pointer; font-size: .95rem;
  font-family: inherit; transition: border-color .15s, background .15s, transform .06s;
}
.quiz-opt:hover { border-color: var(--brand-2); background: var(--panel-2); }
.quiz-opt:active { transform: translateY(1px); }
.quiz-opt.selected { border-color: var(--accent); background: rgba(255, 203, 5, .1); }
.quiz-opt-key {
  display: grid; place-items: center; width: 28px; height: 28px; flex-shrink: 0;
  background: var(--bg); border: 1px solid var(--border); border-radius: 8px; font-weight: 800; font-size: .85rem;
}
.quiz-opt.selected .quiz-opt-key { background: var(--accent); color: #1a1a1a; border-color: var(--accent); }

/* Revisão pós-quiz */
.quiz-review { display: grid; gap: .7rem; margin-top: 1.2rem; }
.qr-item { border: 1px solid var(--border); border-left: 4px solid var(--call); border-radius: 10px; padding: .7rem .9rem; background: var(--panel); }
.qr-item.bad { border-left-color: var(--brand); }
.qr-q { margin-bottom: .3rem; }
.qr-line { font-size: .88rem; margin-top: .2rem; }
.qr-line.correct { color: #5fe0a6; }
.qr-explain { margin-top: .35rem; }

/* Cenário */
.scenario-points { font-size: .78rem; font-weight: 700; color: var(--accent); margin-bottom: .5rem; }
.scenario-text { font-size: 1.12rem; margin-bottom: 1.1rem; }
.scenario-choices { display: grid; gap: .6rem; }
.scenario-choice {
  text-align: left; width: 100%; background: var(--panel); border: 1px solid var(--border);
  color: var(--text); border-radius: 12px; padding: .9rem 1rem; cursor: pointer;
  font-size: .95rem; font-family: inherit; transition: border-color .15s, background .15s, transform .06s;
}
.scenario-choice:hover { border-color: var(--brand-2); background: var(--panel-2); transform: translateX(3px); }
.scenario-feedback { border-radius: 12px; padding: 1rem 1.1rem; border: 1px solid var(--border); animation: pop-in .25s ease both; }
.scenario-feedback.good { border-left: 4px solid var(--call); background: rgba(33, 192, 122, .08); }
.scenario-feedback.bad { border-left: 4px solid var(--deadline); background: rgba(255, 138, 61, .08); }
.sf-points { font-weight: 800; margin-bottom: .3rem; }
.scenario-ending { font-size: 1.15rem; text-align: center; padding: 1.4rem 1rem; border-radius: 12px; margin-bottom: 1rem; background: var(--panel); border: 1px solid var(--border); }
.scenario-ending.good { border-color: var(--call); }
.scenario-ending.bad { border-color: var(--deadline); }

/* Faixa de resultado */
.result-banner {
  display: flex; flex-direction: column; align-items: center; gap: .5rem; text-align: center;
  padding: 1.4rem 1rem; background: linear-gradient(135deg, var(--panel), var(--bg-2));
  border: 1px solid var(--border); border-radius: var(--radius); animation: pop-in .3s ease both;
}
.rb-score { font-size: 1.1rem; font-weight: 700; }
.rb-xp { font-size: 1.05rem; font-weight: 800; color: var(--accent); }

/* ── Jogo da memória (situação × punição) ─────────────────── */
.memory-info {
  margin-bottom: .8rem; font-weight: 700; letter-spacing: .01em;
  display: inline-block; padding: .3rem .7rem; border-radius: 999px;
  background: var(--panel-2); border: 1px solid var(--border);
}
.memory-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: .8rem; }
@media (max-width: 620px) { .memory-grid { grid-template-columns: repeat(2, 1fr); gap: .6rem; } }

.mem-card {
  position: relative; aspect-ratio: 3 / 4; border: none; background: transparent;
  padding: 0; cursor: pointer; perspective: 900px;
}
.mem-card:focus-visible { outline: 3px solid rgba(255, 203, 5, .6); outline-offset: 3px; border-radius: 18px; }

.mem-face {
  position: absolute; inset: 0; display: grid; place-items: center; text-align: center;
  border-radius: 16px; border: 1px solid var(--border); padding: .55rem;
  backface-visibility: hidden; transition: transform .45s cubic-bezier(.2, .7, .3, 1.25); overflow: hidden;
}

/* Verso: "carta de treinador" — idêntica em todas (não dá para colar). */
.mem-back {
  background: radial-gradient(120% 92% at 50% 14%, var(--brand-2) 0, var(--brand) 44%, #7a1c07 100%);
  color: #fff; font-weight: 800;
  box-shadow: inset 0 0 0 3px rgba(255, 255, 255, .12), inset 0 -26px 36px rgba(0, 0, 0, .28);
}
.mem-sprite {
  width: 64%; height: 64%; object-fit: contain; position: relative; z-index: 1;
  image-rendering: pixelated; filter: drop-shadow(0 3px 5px rgba(0, 0, 0, .5));
}
/* "?" decorativo no canto (e reserva se o sprite não carregar). */
.mem-back-q {
  position: absolute; right: .5rem; bottom: .28rem; font-size: 1.3rem;
  font-weight: 900; opacity: .5; z-index: 2;
}

/* Frente: cartão de conteúdo com faixa colorida por tipo. */
.mem-front {
  background: linear-gradient(180deg, var(--panel), var(--panel-2));
  transform: rotateY(180deg); flex-direction: column; gap: .45rem;
  display: flex; align-items: center; justify-content: flex-start; padding-top: .85rem;
}
.mem-front::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 6px; background: var(--border); }
.mem-card.situation  .mem-front { border-color: var(--topic); }
.mem-card.situation  .mem-front::before { background: var(--topic); }
.mem-card.punishment .mem-front { border-color: var(--accent); }
.mem-card.punishment .mem-front::before { background: var(--accent); }

.mem-card.flipped .mem-back { transform: rotateY(180deg); }
.mem-card.flipped .mem-front { transform: rotateY(360deg); }

.mem-card.matched .mem-front {
  border-color: var(--call); border-style: solid;
  box-shadow: 0 0 0 2px rgba(33, 192, 122, .35), 0 8px 20px rgba(33, 192, 122, .18);
  animation: pop-in .35s ease;
}
.mem-card.matched .mem-front::before { background: var(--call); }
.mem-card.matched .mem-text { font-size: .72rem; opacity: .85; }

.mem-kind {
  font-size: .58rem; text-transform: uppercase; letter-spacing: .07em; font-weight: 800;
  color: var(--muted); background: rgba(255, 255, 255, .05);
  border: 1px solid var(--border); padding: .12rem .55rem; border-radius: 999px;
}
.mem-card.situation.flipped  .mem-kind { color: var(--topic);  border-color: rgba(79, 140, 255, .5); }
.mem-card.punishment.flipped .mem-kind { color: var(--accent); border-color: rgba(255, 203, 5, .5); }
.mem-card.matched .mem-kind::after { content: ' ✓'; color: var(--call); }
.mem-text { font-size: .8rem; line-height: 1.28; font-weight: 600; color: var(--text); }

/* Pokémon "capturado" ao formar o par. */
.mem-reveal { display: grid; place-items: center; margin-top: auto; }
.mem-reveal-sprite {
  width: 46px; height: 46px; object-fit: contain; image-rendering: pixelated;
  filter: drop-shadow(0 2px 4px rgba(0, 0, 0, .45));
  animation: capture-pop .55s cubic-bezier(.2, .9, .3, 1.4) both;
}
@keyframes capture-pop {
  0%   { transform: scale(0) rotate(-25deg); opacity: 0; }
  60%  { transform: scale(1.15) rotate(6deg); opacity: 1; }
  100% { transform: scale(1) rotate(0); }
}
.memory-foot { margin-top: 1rem; }

/* Construtores de conteúdo (autoria) */
.builder { display: grid; gap: .8rem; }
.builder-q { background: var(--panel); border: 1px solid var(--border); border-radius: 12px; padding: .9rem; display: grid; gap: .5rem; }
.builder-q-head { display: flex; justify-content: space-between; align-items: center; }
.builder-opts { display: grid; gap: .4rem; }
.builder-opt-row { display: flex; align-items: center; gap: .5rem; }
.builder-opt-row .opt-inp { flex: 1; }
.builder-pair { display: flex; align-items: center; gap: .5rem; }
.builder-pair input { flex: 1; }
.pair-link { color: var(--accent); font-weight: 800; }
.icon-btn {
  width: 30px; height: 30px; flex-shrink: 0; border-radius: 8px; cursor: pointer;
  background: var(--panel-2); border: 1px solid var(--border); color: var(--muted); font-weight: 700;
}
.icon-btn:hover { border-color: var(--brand); color: var(--brand-2); }

/* Login gerado (modal pós-criação) + e-mail editável na lista */
.cred-box {
  font-family: ui-monospace, Menlo, Consolas, monospace; font-weight: 700; font-size: 1.05rem;
  color: var(--accent); background: var(--bg); border: 1px solid var(--border);
  border-radius: 10px; padding: .7rem .9rem; margin: .6rem 0; word-break: break-all;
}
.email-inp { width: 100%; max-width: 260px; margin-top: .25rem; font-size: .82rem; padding: .35rem .5rem; }

/* ── Anexos de imagem (atividades) ─────────────────────────── */
.btn-sm { padding: .35rem .6rem; font-size: .8rem; }
.attach-field { margin: .6rem 0; display: flex; flex-direction: column; gap: .5rem; align-items: flex-start; }
.attach-preview { display: flex; align-items: center; gap: .6rem; flex-wrap: wrap; }
.attach-thumb { display: inline-block; border: 1px solid var(--border); border-radius: 10px; overflow: hidden; line-height: 0; }
.attach-thumb img { max-width: 180px; max-height: 140px; object-fit: cover; display: block; }
.sealed-answer { margin-top: .5rem; padding: .7rem .9rem; border: 1px dashed var(--border); border-radius: 10px; background: var(--bg); min-width: 0; overflow: hidden; }
.sealed-answer p { white-space: pre-wrap; }
.sealed-answer .md-content { width: 100%; min-width: 0; overflow-wrap: anywhere; word-break: break-word; }

/* ── Progresso: participação + rubrica/ranking ─────────────── */
.progress-card { display: flex; align-items: center; gap: .8rem; justify-content: space-between; flex-wrap: wrap; padding: .7rem .9rem; border: 1px solid var(--border); border-radius: 12px; background: var(--surface, var(--bg)); }
.progress-card > div:first-child { flex: 1 1 140px; }
.rank-badge { font-weight: 800; font-size: .8rem; padding: .25rem .6rem; border-radius: 999px; border: 1px solid var(--border); white-space: nowrap; }
.rank-badge.tier-exemplar { background: #1c7c3a33; color: #7CFC9B; border-color: #2ecc71; }
.rank-badge.tier-consistente { background: #1c5a7c33; color: #7CD6FC; border-color: #3aa0d1; }
.rank-badge.tier-em { background: #7c6a1c33; color: #FCE47C; border-color: #d1b83a; }
.rank-badge.tier-iniciante { background: #7c2b1c33; color: #FCA07C; border-color: #d1633a; }
.rank-badge.tier-sem { background: var(--bg); color: var(--muted); }
.profile-modal { display: flex; flex-direction: column; gap: .55rem; max-width: 560px; max-height: 78vh; overflow-y: auto; padding-right: .3rem; }
.profile-head { display: flex; align-items: center; justify-content: space-between; gap: .8rem; }
.cat-list { display: flex; flex-direction: column; gap: .4rem; }
.cat-row { display: grid; grid-template-columns: 130px 1fr auto; align-items: center; gap: .6rem; }
.cat-name { font-size: .82rem; }
.cat-bar { height: 9px; background: var(--bg); border-radius: 999px; overflow: hidden; border: 1px solid var(--border); }
.cat-fill { height: 100%; background: linear-gradient(90deg, var(--brand), var(--accent)); }
.cat-val { font-size: .78rem; color: var(--muted); white-space: nowrap; }
.rate-form { border: 1px dashed var(--border); border-radius: 10px; padding: .6rem .7rem; display: flex; flex-direction: column; gap: .5rem; }
.rate-row { display: flex; gap: .5rem; align-items: center; flex-wrap: wrap; }
.audit-log { margin: .2rem 0 .4rem; padding-left: 1.1rem; display: flex; flex-direction: column; gap: .2rem; font-size: .82rem; }
.mark-list { display: flex; flex-direction: column; gap: .5rem; max-height: 50vh; overflow-y: auto; }
.mark-row { display: grid; grid-template-columns: 1fr 150px 1fr auto; gap: .5rem; align-items: center; }
.mark-name { font-weight: 600; font-size: .85rem; }
.mark-note { font-size: .8rem; }

/* ── Cronograma de conteúdo (item 10) ──────────────────────── */
.schedule-line { display: flex; align-items: center; gap: .6rem; flex-wrap: wrap; margin-top: .5rem; }
.sched-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: .4rem; margin: .6rem 0; }
.sched-check { display: flex; align-items: center; gap: .5rem; padding: .4rem .6rem; border: 1px solid var(--border); border-radius: 8px; cursor: pointer; font-size: .85rem; }
.sched-check input { accent-color: var(--brand); }

/* ── Quiz ao vivo (multiplayer) ────────────────────────────── */
.live-bar { display:flex; align-items:center; gap:.7rem; flex-wrap:wrap; padding:.6rem .8rem; margin-bottom:.8rem; border:1px solid var(--border); border-radius:12px; background:var(--surface,var(--bg)); }
.live-bar > span:first-child { font-weight:700; }
/* Jogo ainda bloqueado por nível (bug 2): cinza, apagado e sem clique. */
.btn.game-locked { opacity:.45; filter:grayscale(1); cursor:not-allowed; box-shadow:none; }
.btn.game-locked:hover { transform:none; }
.unlock-hint { margin:-.3rem 0 .8rem; }

/* ══════════════════════════════════════════════════════════════
   Aba TREINOS — layout em seções (redesign): sub-nav + uma seção
   por vez + jogos em grade de cards (sem a parede de botões).
   ══════════════════════════════════════════════════════════════ */
#exercises-list { display: block; }
.treinos-nav {
  display: flex; gap: .3rem; flex-wrap: wrap; margin-bottom: 1.2rem;
  padding: .35rem; border: 1px solid var(--border); border-radius: 14px;
  background: linear-gradient(180deg, var(--panel), var(--panel-2)); box-shadow: inset 0 1px 0 rgba(255,255,255,.05);
}
.tseg {
  display: inline-flex; align-items: center; justify-content: center; gap: .45rem; flex: 1 1 auto;
  min-width: 92px; padding: .62rem .7rem; border-radius: 10px; border: 1px solid transparent;
  background: transparent; color: var(--muted); font: inherit; font-weight: 700; cursor: pointer;
  transition: background .15s, color .15s, border-color .15s, box-shadow .15s;
}
.tseg:hover { background: var(--panel); color: var(--text); }
.tseg.active {
  background: linear-gradient(135deg, var(--accent), #ff9a3c); color: #3a2600;
  border-color: transparent; box-shadow: 0 4px 12px rgba(255, 154, 60, .32); font-weight: 800;
}
.tseg-ico { font-size: 1.15rem; }
@media (max-width: 560px) { .tseg-lbl { display: none; } .tseg { min-width: 0; padding: .6rem; } }

.treinos-content { animation: tsec-in .25s ease; }
.tsec.hidden { display: none; }
@keyframes tsec-in { from { opacity: 0; transform: translateY(6px); } }

.tsub { font-family: var(--font-display); font-weight: 800; font-size: 1.08rem; margin: 1.5rem 0 .7rem; }
.tsub:first-child { margin-top: .2rem; }

.play-live {
  display: flex; align-items: center; justify-content: space-between; gap: 1rem; flex-wrap: wrap;
  padding: .95rem 1.15rem; border: 1px solid color-mix(in srgb, var(--accent) 35%, var(--border));
  border-left: 4px solid var(--accent); border-radius: 14px;
  background: linear-gradient(90deg, color-mix(in srgb, var(--accent) 16%, var(--panel)), var(--panel) 72%);
  box-shadow: 0 4px 14px rgba(0,0,0,.16);
}
.pl-txt { font-size: 1.02rem; }
.pl-txt strong { display: block; }

.tier-head { display: flex; align-items: baseline; gap: .55rem; font-weight: 800; font-size: 1.02rem; margin: 1.2rem 0 .6rem; padding-bottom: .4rem; border-bottom: 1px solid var(--border); }

.game-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(148px, 1fr)); gap: .7rem; }
.gcard {
  display: flex; flex-direction: column; align-items: center; text-align: center; gap: .5rem;
  padding: 1rem .7rem; border: 1px solid var(--border); border-radius: 16px;
  background: linear-gradient(180deg, var(--panel), var(--panel-2));
  color: var(--text); font: inherit; cursor: pointer; position: relative; overflow: hidden;
  transition: transform .1s, border-color .15s, box-shadow .15s;
}
.gcard::before { content: ""; position: absolute; inset: 0 0 auto 0; height: 3px; background: linear-gradient(90deg, var(--accent), #ff7a3c); opacity: 0; transition: opacity .15s; }
.gcard:hover:not([disabled]) { transform: translateY(-3px); border-color: color-mix(in srgb, var(--accent) 50%, var(--border)); box-shadow: 0 12px 24px rgba(0, 0, 0, .3); }
.gcard:hover:not([disabled])::before { opacity: 1; }
.gcard-ico {
  font-size: 1.85rem; line-height: 1; width: 58px; height: 58px; display: grid; place-items: center;
  border-radius: 15px; background: radial-gradient(circle at 50% 30%, color-mix(in srgb, var(--accent) 16%, var(--panel-2)), var(--panel-2));
  box-shadow: inset 0 0 0 1px var(--border); filter: drop-shadow(0 2px 3px rgba(0, 0, 0, .3));
}
.gcard-name { font-weight: 700; font-size: .95rem; line-height: 1.25; }
.gcard-tag {
  font-size: .66rem; font-weight: 800; color: var(--muted); text-transform: uppercase; letter-spacing: .03em;
  background: var(--bg); border: 1px solid var(--border); padding: .12rem .5rem; border-radius: 999px;
}
.gcard.locked { opacity: .55; filter: grayscale(.6); cursor: not-allowed; }
.gcard.locked .gcard-tag { color: #e0872e; border-color: color-mix(in srgb, #e0872e 45%, var(--border)); }
/* Jogo em recarga (1x/dia): visível mas não-clicável, com o tempo restante. */
.gcard.cooling { opacity: .72; cursor: not-allowed; }
.gcard.cooling .gcard-ico { filter: grayscale(.5); }
.gcard-tag.cooldown { color: #2f79d8; border-color: color-mix(in srgb, #2f79d8 45%, var(--border)); background: color-mix(in srgb, #2f79d8 10%, transparent); font-weight: 800; }
.gcard.live { background: linear-gradient(180deg, color-mix(in srgb, var(--accent) 14%, var(--panel)), var(--panel-2)); }
.gcard.live .gcard-ico { background: radial-gradient(circle at 50% 30%, color-mix(in srgb, var(--accent) 28%, var(--panel-2)), var(--panel-2)); }

.tool-row { display: flex; flex-wrap: wrap; gap: .5rem; }
.tool-chip {
  display: inline-flex; align-items: center; gap: .4rem; padding: .5rem .85rem; border-radius: 99px;
  border: 1px solid var(--border); background: var(--panel); color: var(--text); font: inherit;
  font-weight: 600; font-size: .85rem; cursor: pointer; transition: border-color .15s, background .15s, transform .06s;
}
.tool-chip:hover { border-color: var(--accent); background: var(--panel-2); transform: translateY(-1px); }
.tool-ico { font-size: 1rem; }

#community-polls:not(:empty), #avisos-polls:not(:empty) { margin-bottom: 1.2rem; }
.week-training:not(:empty) { margin: 1.1rem 0; }
.section-head.compact { margin-bottom: .6rem; }
/* Perf: itens de lista fora da tela não são renderizados (mantêm o espaço). */
.activity-card, .ann-card, .review-card { content-visibility: auto; contain-intrinsic-size: auto 180px; }
.archive-item { content-visibility: auto; contain-intrinsic-size: auto 64px; }
.ex-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: .7rem; }
/* Card de treino compacto (menos altura na grade da semana). */
.ex-grid .exercise-card { flex-direction: row; align-items: center; gap: .7rem; padding: .7rem .8rem; }
.ex-grid .exercise-card .ex-icon { font-size: 1.4rem; flex: 0 0 auto; }
.ex-grid .exercise-card .ex-body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: .3rem; }
.ex-grid .exercise-card h3 { font-size: .98rem; }
.ex-grid .exercise-card .ex-body > p { display: none; } /* descrição some no card compacto */
.ex-grid .exercise-card .ex-foot { margin: 0; padding: 0; flex: 0 0 auto; }
.ex-grid .exercise-card .ex-foot .btn { width: auto; padding: .45rem .8rem; font-size: .82rem; }
.ex-grid .exercise-card .ex-foot .btn-sm { display: none; } /* "▶ Ao vivo" fica só na versão cheia */
@media (max-width: 520px) { .ex-grid { grid-template-columns: 1fr; } }

.lq { max-width:820px; margin:0 auto; }
.lq-center { display:flex; justify-content:center; padding:3rem 0; }
.lq-code { display:flex; flex-direction:column; align-items:center; line-height:1; }
.lq-code strong { font-size:1.6rem; letter-spacing:.3em; color:var(--accent); }
.lq-lobby { display:flex; flex-direction:column; gap:1rem; align-items:center; text-align:center; padding:1rem 0; }
.lq-players { width:100%; }
.lq-chips { display:flex; flex-wrap:wrap; gap:.5rem; justify-content:center; margin-top:.6rem; }
.lq-chip { padding:.35rem .7rem; border:1px solid var(--border); border-radius:999px; background:var(--bg); font-weight:600; font-size:.85rem; }
.lq-chip.win { background:#1c7c3a33; border-color:#2ecc71; color:#7CFC9B; }
.lq-big { font-size:1.05rem; padding:.7rem 1.6rem; }
.lq-wait { color:var(--muted); text-align:center; margin-top:.8rem; }
.lq-timer { height:8px; background:var(--bg); border-radius:999px; overflow:hidden; border:1px solid var(--border); margin-bottom:1rem; }
.lq-timer-fill { height:100%; width:100%; background:linear-gradient(90deg,var(--brand),var(--accent)); transition:width .1s linear; }
.lq-qhead { display:flex; justify-content:space-between; align-items:center; margin-bottom:.6rem; }
.lq-answered { font-weight:700; color:var(--accent); }
.lq-prompt { font-size:1.25rem; margin-bottom:1.2rem; }
.lq-options { display:grid; grid-template-columns:1fr 1fr; gap:.7rem; }
.lq-opt { display:flex; align-items:center; gap:.7rem; padding:1rem; border:2px solid var(--border); border-radius:14px; background:var(--surface,var(--bg)); color:var(--text,#fff); font-size:1rem; text-align:left; cursor:pointer; transition:transform .08s; }
.lq-opt:not([disabled]):hover { transform:translateY(-2px); }
.lq-opt[disabled] { cursor:default; opacity:.85; }
.lq-opt.chosen { outline:3px solid var(--accent); }
.lq-opt-key { display:flex; align-items:center; justify-content:center; width:34px; height:34px; border-radius:9px; font-weight:800; color:#fff; flex:0 0 auto; }
.opt-0 .lq-opt-key { background:#e74c3c; } .opt-1 .lq-opt-key { background:#3498db; }
.opt-2 .lq-opt-key { background:#f1c40f; color:#222; } .opt-3 .lq-opt-key { background:#2ecc71; }
.opt-4 .lq-opt-key { background:#9b59b6; }
.lq-qfoot { margin-top:1rem; text-align:center; }
.lq-reveal { display:flex; flex-direction:column; gap:.8rem; align-items:center; text-align:center; }
.lq-you { display:flex; flex-direction:column; gap:.2rem; padding:.8rem 1.4rem; border-radius:12px; border:1px solid var(--border); }
.lq-you.ok { background:#1c7c3a33; border-color:#2ecc71; } .lq-you.no { background:#7c2b1c33; border-color:#e74c3c; }
.lq-teams { display:flex; gap:.5rem; flex-wrap:wrap; justify-content:center; }
.lq-board { width:100%; max-width:460px; display:flex; flex-direction:column; gap:.35rem; }
.lq-rank { display:grid; grid-template-columns:44px 1fr auto; align-items:center; gap:.6rem; padding:.5rem .8rem; border:1px solid var(--border); border-radius:10px; background:var(--bg); }
.lq-rank.top { border-color:var(--accent); background:#7c6a1c22; }
.lq-pos { font-weight:800; color:var(--muted); } .lq-score { font-weight:800; color:var(--accent); }
.lq-ended { display:flex; flex-direction:column; gap:1rem; align-items:center; text-align:center; padding-top:.5rem; }
.lq-trophy { margin:0; }
.lq-podium { display:flex; gap:.8rem; align-items:flex-end; justify-content:center; margin:.4rem 0; }
.lq-pod { display:flex; flex-direction:column; align-items:center; gap:.3rem; padding:1rem .9rem; border:1px solid var(--border); border-radius:12px; background:var(--surface,var(--bg)); min-width:96px; }
.lq-pod.p1 { transform:scale(1.12); border-color:var(--accent); background:#7c6a1c22; }
.lq-medal { font-size:1.8rem; } .lq-pod .lq-name { font-weight:700; } .lq-pod .lq-score { font-size:1.1rem; }
@media (max-width:560px){ .lq-options{ grid-template-columns:1fr; } }

/* ── Cores de time (quiz em equipes) ───────────────────────── */
.lq-chip.team-a { background:#1c4a7c33; border-color:#3498db; color:#9ccdf0; }
.lq-chip.team-b { background:#7c1c2b33; border-color:#e74c3c; color:#f0a99c; }
.lq-chip.lead, .lq-chip.win { outline:2px solid var(--accent); }

/* ── Forca ao vivo ─────────────────────────────────────────── */
.forca-body { display:flex; flex-direction:column; gap:1rem; align-items:center; }
.forca-hint { color:var(--muted); text-align:center; margin:0; }
.forca-word { display:flex; gap:.4rem; flex-wrap:wrap; justify-content:center; }
.forca-ch { display:flex; align-items:center; justify-content:center; width:34px; height:44px; font-size:1.5rem; font-weight:800; border-bottom:3px solid var(--border); }
.forca-ch.filled { border-bottom-color:var(--accent); color:var(--text,#fff); }
.forca-ch.blank { color:transparent; }
.forca-word.revealed .forca-ch, .forca-word.host .forca-ch { border-bottom-color:var(--brand); }
.forca-lives { font-size:1.1rem; letter-spacing:2px; }
.forca-wrong { color:#e88; font-size:.9rem; margin:0; }
.forca-keys { display:grid; grid-template-columns:repeat(9, 1fr); gap:.4rem; max-width:520px; }
.forca-key { padding:.6rem 0; border:1px solid var(--border); border-radius:8px; background:var(--surface,var(--bg)); color:var(--text,#fff); font-weight:800; cursor:pointer; }
.forca-key:not([disabled]):hover { border-color:var(--brand); color:var(--brand-2); }
.forca-key[disabled] { opacity:.3; cursor:default; }
.forca-roster { display:flex; flex-direction:column; gap:.35rem; width:100%; max-width:460px; }
.forca-prow { display:grid; grid-template-columns:1fr auto auto auto; gap:.6rem; align-items:center; padding:.4rem .7rem; border:1px solid var(--border); border-radius:9px; background:var(--bg); }
.forca-prow.solved { border-color:#2ecc71; } .forca-prow.dead { border-color:#e74c3c; opacity:.7; }
/* Faixa de "vez" do coop (um jogador de cada vez) */
.forca-turn { text-align:center; font-weight:800; padding:.5rem .8rem; border-radius:999px; font-size:.9rem; }
.forca-turn.you { color:#0d3b23; background:linear-gradient(90deg,#7ff0b0,#39d98a); box-shadow:0 2px 10px rgba(57,217,138,.35); animation:forcaTurnPulse 1.6s ease-in-out infinite; }
.forca-turn.wait { color:var(--muted); background:var(--bg); border:1px dashed var(--border); }
@keyframes forcaTurnPulse { 0%,100%{ transform:scale(1); } 50%{ transform:scale(1.03); } }
@media (max-width:560px){ .forca-keys { grid-template-columns:repeat(7,1fr); } }

/* ── Memória ao vivo (multiplayer) ─────────────────────────── */
.mem-live { display:flex; flex-direction:column; gap:.8rem; align-items:center; }
.mem-turn { display:flex; gap:.8rem; align-items:center; }
.mem-yourturn { font-weight:800; color:var(--accent); }
.mem-scores { display:flex; gap:.5rem; flex-wrap:wrap; justify-content:center; }
.mem-grid-live { display:grid; grid-template-columns:repeat(auto-fill, minmax(120px, 1fr)); gap:.6rem; width:100%; max-width:720px; }
.mem-card-live { min-height:92px; border:1px solid var(--border); border-radius:12px; background:var(--panel-2); color:var(--text,#fff); cursor:pointer; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:.3rem; padding:.5rem; text-align:center; transition:transform .1s, border-color .2s; }
.mem-card-live:not([disabled]):hover { transform:translateY(-2px); border-color:var(--brand); }
.mem-card-live[disabled] { cursor:default; }
.mem-card-live .mem-back { font-size:1.8rem; }
.mem-card-live.up { background:var(--bg); border-color:var(--accent); }
.mem-card-live.up.pun { border-color:var(--brand); }
.mem-card-live.matched { opacity:.55; border-color:var(--call); }
.mem-card-live .mem-kind { font-size:.62rem; text-transform:uppercase; letter-spacing:.06em; color:var(--muted); font-weight:700; }
.mem-card-live .mem-text { font-size:.8rem; line-height:1.25; }

/* ── Sala de Suporte (co-op) ───────────────────────────────── */
.sup-body { display:flex; flex-direction:column; gap:.8rem; }
.sup-lives { font-size:1rem; letter-spacing:1px; }
.sup-timer { font-variant-numeric:tabular-nums; }
.sup-timer.urgent { background:#7c2b1c33; border-color:#e74c3c; color:#ff9a86; animation:led-blink 1s infinite; }
.sup-ticket { border:1px solid var(--border); border-left:4px solid var(--brand); border-radius:12px; background:var(--panel-2); padding:.9rem 1.1rem; }
.sup-prompt { font-size:1.05rem; line-height:1.4; margin:.35rem 0 0; }
.sup-options { display:grid; grid-template-columns:repeat(auto-fit, minmax(180px, 1fr)); gap:.6rem; }
.sup-opt { padding:.8rem 1rem; border:1px solid var(--border); border-radius:10px; background:var(--surface,var(--bg)); color:var(--text,#fff); font-weight:700; cursor:pointer; text-align:left; transition:transform .1s, border-color .2s; }
.sup-opt:not([disabled]):hover { transform:translateY(-2px); border-color:var(--brand); color:var(--brand-2); }
.sup-opt[disabled] { opacity:.45; cursor:default; }
.sup-reveal { display:flex; flex-direction:column; gap:.7rem; align-items:center; text-align:center; }
.sup-answer { padding:.7rem 1.2rem; border-radius:10px; border:1px solid #2ecc71; background:#1c7c3a33; font-weight:800; }

/* ══════════════════════════════════════════════════════════════
   ██ TEMA "POKÉDEX OS" — camada de acabamento visual ██
   Aplicada por último para vencer no cascata sem tocar na estrutura
   que o app.js gera. Motivos: pokébola, lente do Pokédex, LEDs,
   telas com scanline e a paleta dos 18 tipos.
══════════════════════════════════════════════════════════════ */

/* ── Cromo global: seleção, foco e barra de rolagem ──────────── */
::selection { background: rgba(255, 203, 5, .3); color: #fff; }
* { scrollbar-width: thin; scrollbar-color: var(--brand) transparent; }
*::-webkit-scrollbar { width: 11px; height: 11px; }
*::-webkit-scrollbar-thumb {
  background: linear-gradient(var(--brand-2), var(--brand));
  border: 2px solid transparent; background-clip: padding-box; border-radius: 999px;
}
*::-webkit-scrollbar-thumb:hover { background: linear-gradient(var(--brand), var(--brand-ink)); background-clip: padding-box; }

/* ── Animações extras do tema ────────────────────────────────── */
@keyframes led-blink { 0%,100% { opacity: 1; } 50% { opacity: .35; } }
@keyframes scanline  { from { transform: translateY(-100%); } to { transform: translateY(100%); } }
@keyframes sheen     { from { transform: translateX(-120%); } to { transform: translateX(220%); } }
@keyframes rise      { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }

/* Etiqueta "Pokédex": ponto-pokébola antes de cada eyebrow. */
.eyebrow {
  display: inline-flex; align-items: center; gap: .4rem;
  font-family: var(--font-display); color: var(--accent);
}
.eyebrow::before {
  content: ""; width: 11px; height: 11px; flex: 0 0 auto; border-radius: 50%;
  border: 1.5px solid #0c0f18;
  background:
    radial-gradient(circle at 50% 50%, #fff 0 20%, #0c0f18 20% 34%, transparent 34%),
    linear-gradient(#ff5a48 0 46%, #0c0f18 46% 54%, #f4f6fb 54% 100%);
  box-shadow: 0 1px 2px rgba(0,0,0,.4);
}

/* ═════════ BOTÕES — cápsulas com brilho de pokébola ═════════ */
.btn {
  font-family: var(--font-display); font-weight: 700; letter-spacing: .015em;
  border-radius: 999px; padding: .62rem 1.25rem; position: relative; overflow: hidden;
}
.btn-primary {
  background: linear-gradient(180deg, #e0473d, #c62822);
  color: #fff;
  box-shadow: 0 2px 8px rgba(0, 0, 0, .2);
}
.btn-primary:hover { filter: brightness(1.04); transform: translateY(-1px); box-shadow: 0 5px 14px rgba(0, 0, 0, .26); }
/* Reflexo removido (deixava o botão brilhante/"cara de IA"). */
.btn-primary::after { content: none; }
.btn-ghost {
  background: rgba(255,255,255,.02); border-color: var(--border);
  backdrop-filter: none;
}
.btn-ghost:hover { border-color: var(--brand); color: #fff; background: rgba(238,21,21,.1); }
.btn-approve, .btn-revise { font-family: var(--font-display); box-shadow: var(--shadow-sm); }

/* ═════════ LENTE + LEDs do Pokédex (reutilizável) ═════════ */
.dex-lens {
  width: 30px; height: 30px; flex: 0 0 auto; border-radius: 50%;
  background:
    radial-gradient(circle at 34% 30%, #eafaff 0 12%, var(--lens) 30%, #1f7fb8 78%, #0d4e78 100%);
  border: 3px solid #eef4fb;
  box-shadow: 0 0 0 2px #0c0f18, 0 0 14px rgba(127, 215, 255, .5), inset 0 -3px 6px rgba(0,0,0,.35);
  position: relative;
}
.dex-lens::after {
  content: ""; position: absolute; top: 16%; left: 20%;
  width: 34%; height: 26%; border-radius: 50%;
  background: rgba(255,255,255,.85); filter: blur(.5px);
}
.dex-lens.sm { width: 18px; height: 18px; border-width: 2px; box-shadow: 0 0 0 1.5px #0c0f18, 0 0 8px rgba(127,215,255,.5); }
.dex-leds { display: inline-flex; gap: .34rem; align-items: center; }
.dex-leds.sm { gap: .28rem; }
.led {
  width: 9px; height: 9px; border-radius: 50%; display: inline-block;
  border: 1.5px solid rgba(0,0,0,.55); box-shadow: inset 0 1px 1px rgba(255,255,255,.55);
}
.dex-leds.sm .led { width: 7px; height: 7px; }
.led.red    { background: #ff4d4d; box-shadow: inset 0 1px 1px rgba(255,255,255,.6), 0 0 6px rgba(255,77,77,.7); animation: led-blink 2.4s ease-in-out infinite; }
.led.yellow { background: #ffd23c; box-shadow: inset 0 1px 1px rgba(255,255,255,.6), 0 0 5px rgba(255,210,60,.6); }
.led.green  { background: #4ade80; box-shadow: inset 0 1px 1px rgba(255,255,255,.6), 0 0 5px rgba(74,222,128,.6); }

/* ═════════ TOPBAR — carcaça de Pokédex ═════════ */
.topbar {
  background:
    linear-gradient(180deg, rgba(238,21,21,.14), rgba(10,15,30,0) 60%),
    #0e1626;
  border-bottom: 2px solid transparent;
  border-image: linear-gradient(90deg, var(--brand), var(--accent), var(--royal)) 1;
  box-shadow: 0 6px 22px rgba(3,7,18,.5);
}
.topbar-left { gap: .55rem; }
.topbar-title { font-family: var(--font-display); font-weight: 800; letter-spacing: .01em; }
@media (max-width: 620px) { .dex-lens.sm, .dex-leds.sm { display: none; } }

/* Abas do topo: pílulas robustas com pokébola no ativo. */
.nav-btn {
  font-family: var(--font-display); font-weight: 700; border-radius: 999px;
  border: 1px solid transparent; padding: .28rem .8rem;
}
.nav-btn:hover { background: rgba(255,255,255,.06); color: var(--text); }
.nav-btn.active {
  color: #fff; border-color: rgba(255,255,255,.25);
  background: linear-gradient(180deg, #ff5a48, var(--brand));
  box-shadow: inset 0 1px 0 rgba(255,255,255,.35), 0 4px 12px rgba(238,21,21,.4);
}

/* Ponto de "novidade não vista" nas abas (ex.: Avisos com aviso/enquete novo). */
.nav-dot {
  width: 9px; height: 9px; border-radius: 50%;
  background: #ff4757; box-shadow: 0 0 0 2px #0e1626, 0 0 8px rgba(255,71,87,.8);
  margin-left: .1rem; align-self: flex-start; flex: 0 0 auto;
  animation: navDotPulse 1.6s ease-in-out infinite;
}
@keyframes navDotPulse { 0%,100% { transform: scale(1); opacity: 1; } 50% { transform: scale(1.35); opacity: .7; } }

/* ── Menu hambúrguer (topbar responsiva no celular) ── */
.nav-toggle {
  display: none; background: transparent; border: 1px solid var(--border);
  color: var(--text); font-size: 1.25rem; line-height: 1; cursor: pointer;
  padding: .35rem .6rem; border-radius: 10px; position: relative;
}
.nav-toggle:hover { background: rgba(255,255,255,.08); }
/* Ponto de novidade também no botão do hambúrguer (quando a nav está fechada). */
.nav-toggle .nav-dot { position: absolute; top: 4px; right: 4px; margin: 0; }
@media (max-width: 760px) {
  /* Cabeçalho em 2 linhas: [titulo ........ hamburguer] / [acoes da direita].
     A nav vira um menu suspenso (drawer) acionado pelo hamburguer. */
  /* Rola junto com a página: ao descer, a topbar some (não fica fixa). */
  .topbar { flex-wrap: wrap; gap: .5rem .6rem; row-gap: .5rem; position: relative; top: auto; }
  .topbar-left { order: 1; flex: 1 1 auto; min-width: 0; }
  .nav-toggle { display: inline-flex; align-items: center; order: 2; }
  .topbar-right { order: 3; flex: 1 1 100%; justify-content: flex-end; gap: .5rem; flex-wrap: wrap; }
  .topbar-nav {
    order: 4;
    position: absolute; top: 100%; left: 0; right: 0;
    flex-direction: column; align-items: stretch; flex-wrap: nowrap;
    background: #141a29; border-bottom: 1px solid var(--border);
    padding: .5rem; gap: .25rem; display: none; row-gap: .25rem;
    box-shadow: 0 14px 26px rgba(3,7,18,.55); z-index: 25;
  }
  .topbar.nav-open .topbar-nav { display: flex; }
  .topbar-nav .nav-btn { width: 100%; justify-content: flex-start; border-radius: 10px; padding: .7rem .9rem; }
  .topbar-nav .nav-label { display: inline !important; }  /* rótulos visíveis no drawer */
  .topbar-nav .nav-sprite { width: 22px; height: 22px; }
}

/* Botões redondos (música/discord) com aro de pokébola. */
.music-btn { border-radius: 50%; }
.music-btn:hover { border-color: var(--brand); color: #fff; }
.topbar-action-btn { position: relative; }
#topbar-chat-badge { position: absolute; top: -4px; right: -4px; }

.user-chip {
  border-radius: 999px; font-weight: 700;
  background: rgba(255,255,255,.04); border-color: var(--border);
}

/* ═════════ LOGIN — dispositivo Pokédex ═════════ */
.login-card.dex-shell {
  padding: 0; overflow: hidden;
  border: 1px solid var(--border);
  background: linear-gradient(180deg, var(--panel), var(--bg-2));
  box-shadow: var(--shadow), 0 0 0 1px rgba(255,255,255,.03) inset;
}
.login-card.dex-shell > .brand,
.login-card.dex-shell > .login-form,
.login-card.dex-shell > .login-foot { margin-left: 2rem; margin-right: 2rem; }
.login-card.dex-shell > .login-foot { margin-bottom: 1.7rem; }
.login-card.dex-shell::after { display: none; }

/* Faixa vermelha superior com lente e LEDs. */
.dex-top {
  display: flex; align-items: center; gap: .9rem;
  padding: .95rem 1.4rem;
  background: linear-gradient(180deg, #ff5a48, var(--brand) 70%, #c81109);
  border-bottom: 4px solid #0c0f18;
  box-shadow: inset 0 -6px 14px rgba(122,18,4,.45);
}
.dex-top .dex-lens { width: 44px; height: 44px; border-width: 4px; }
.dex-top .dex-leds { margin-left: auto; }
.dex-top .led { width: 12px; height: 12px; }

/* Tela CRT: fundo do sprite com scanlines e LED de "power". */
.login-hero.dex-screen {
  position: relative; margin: 1.5rem 2rem .3rem; padding: 1rem;
  border-radius: 14px; overflow: hidden;
  background:
    radial-gradient(120% 100% at 50% 0, rgba(127,215,255,.14), transparent 60%),
    linear-gradient(180deg, #0c1526, #0a1120);
  border: 1px solid var(--border);
  box-shadow: inset 0 0 40px rgba(0,0,0,.6), inset 0 0 0 2px rgba(127,215,255,.06);
}
.dex-screen-led {
  position: absolute; top: .6rem; left: .7rem; width: 9px; height: 9px; border-radius: 50%;
  background: #4ade80; box-shadow: 0 0 8px rgba(74,222,128,.9); animation: led-blink 1.8s ease-in-out infinite;
}
.dex-screen .login-sprite { position: relative; z-index: 1; }
.dex-scan {
  position: absolute; inset: 0; pointer-events: none; z-index: 2;
  background: repeating-linear-gradient(0deg, rgba(255,255,255,.045) 0 1px, transparent 1px 3px);
}
.dex-scan::after {
  content: ""; position: absolute; inset: 0;
  background: linear-gradient(180deg, transparent, rgba(127,215,255,.16), transparent);
  height: 40%; animation: scanline 3.2s linear infinite;
}
.login-card .brand { margin-top: 1.1rem; }

/* Pokébola do login com leve balanço. */
.brand-badge.pokeball { box-shadow: inset 0 0 0 6px rgba(0,0,0,.06), 0 4px 10px rgba(0,0,0,.4); }

/* ═════════ CARTÕES — vidro de "tela de Pokédex" ═════════ */
.progress-card, .xp-card, .day-card.highlight, .poll-card, .exercise-card,
.activity-card, .review-card, .ann-card, .cal-day, .live-bar {
  position: relative;
}
/* Marca d'água de pokébola no canto dos cartões-destaque. */
.progress-card::after, .xp-card::after, .day-card.highlight::after {
  content: ""; position: absolute; right: -26px; bottom: -26px; width: 118px; height: 118px;
  border-radius: 50%; pointer-events: none; opacity: .5;
  background:
    radial-gradient(circle at 50% 50%, transparent 0 20%, rgba(255,255,255,.05) 20% 23%, transparent 23%),
    radial-gradient(circle at 50% 50%, rgba(255,255,255,.05) 0 46%, transparent 46% 54%, rgba(255,255,255,.05) 54% 100%);
  -webkit-mask: radial-gradient(circle, #000 60%, transparent 72%);
          mask: radial-gradient(circle, #000 60%, transparent 72%);
}
.progress-card, .xp-card {
  background:
    linear-gradient(120deg, rgba(59,76,202,.10), transparent 55%),
    linear-gradient(135deg, var(--panel), var(--panel-2));
  box-shadow: var(--shadow-sm);
}
.day-card { transition: border-color .2s, transform .1s, box-shadow .2s; }
.day-card:hover { border-color: var(--brand-2); box-shadow: var(--shadow-sm); }

/* Anel de progresso com miolo escuro e brilho âmbar. */
.progress-ring { box-shadow: 0 0 0 1px var(--border), 0 0 18px rgba(255,203,5,.18); }
.progress-ring span { font-family: var(--font-display); }

/* Barras de progresso com listras animadas sutis. */
.progress-fill, .xp-fill {
  background-image:
    linear-gradient(90deg, var(--brand), var(--accent)),
    repeating-linear-gradient(45deg, rgba(255,255,255,.14) 0 8px, transparent 8px 16px);
  background-blend-mode: overlay;
}
.xp-fill { background-image: linear-gradient(90deg, var(--accent), var(--accent-2)), repeating-linear-gradient(45deg, rgba(255,255,255,.18) 0 8px, transparent 8px 16px); }
.xp-stars { font-family: var(--font-display); color: #1a1206; background: linear-gradient(180deg, var(--accent-2), var(--accent)); border-color: #a67f00; box-shadow: inset 0 1px 0 rgba(255,255,255,.5), 0 4px 10px rgba(255,203,5,.25); }
.xp-level, .scenario-points, .quiz-count, .rb-xp { font-family: var(--font-display); }

/* ═════════ PÍLULAS & BADGES no estilo "tipo Pokémon" ═════════ */
.pill, .role-badge, .sub-status, .poll-status, .rank-badge, .meta-chip, .memory-info, .mem-kind {
  font-family: var(--font-display); font-weight: 700;
}
.pill {
  border-radius: 999px; box-shadow: inset 0 1px 0 rgba(255,255,255,.06);
}
.pill.diff-easy, .pill.diff-medium, .pill.diff-hard {
  color: #10151f; text-transform: uppercase; letter-spacing: .03em;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.4), 0 2px 5px rgba(0,0,0,.3);
}
.pill.diff-easy   { background: var(--t-grass); }
.pill.diff-medium { background: var(--t-water); }
.pill.diff-hard   { background: var(--t-fire); }

/* Utilitário de badge de tipo (disponível para uso futuro). */
.type-badge {
  display: inline-block; font-family: var(--font-display); font-weight: 700;
  text-transform: uppercase; letter-spacing: .03em; font-size: .66rem;
  padding: .22rem .62rem; border-radius: 999px; color: #10151f;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.4), 0 2px 5px rgba(0,0,0,.3);
}
.type-normal{background:var(--t-normal)} .type-fire{background:var(--t-fire)}
.type-water{background:var(--t-water)} .type-grass{background:var(--t-grass)}
.type-electric{background:var(--t-electric)} .type-ice{background:var(--t-ice)}
.type-fighting{background:var(--t-fighting);color:#fff} .type-poison{background:var(--t-poison);color:#fff}
.type-ground{background:var(--t-ground)} .type-flying{background:var(--t-flying)}
.type-psychic{background:var(--t-psychic)} .type-bug{background:var(--t-bug)}
.type-rock{background:var(--t-rock)} .type-ghost{background:var(--t-ghost);color:#fff}
.type-dragon{background:var(--t-dragon);color:#fff} .type-dark{background:var(--t-dark);color:#fff}
.type-steel{background:var(--t-steel)} .type-fairy{background:var(--t-fairy)}

/* Estilo do console de admin fica na seção "Console de Admin" (sidebar). */

/* Seção-cabeçalho com filete tipográfico. */
.section-head h2 { position: relative; }

/* Contador de pendências (badge) como "nível" 8-bit. */
.nav-badge { font-family: var(--font-pixel); font-size: .58rem; padding: 0 6px; }

/* Códigos e contadores retrô 8-bit. */
.lq-code strong, .cred-box { font-family: var(--font-pixel); }
.cred-box { font-size: .95rem; }

/* Toast como "mensagem de sistema" do Pokédex. */
.toast { border-radius: 999px; font-family: var(--font-display); font-weight: 700; box-shadow: var(--shadow); }

/* Modal com faixa superior de pokébola. */
.modal { border-top: 4px solid transparent; border-image: linear-gradient(90deg, var(--brand), var(--accent)) 1; }
.modal h3 { font-family: var(--font-display); }

/* Cartões de exercício: faixa de tipo mais viva + elevação no hover. */
.exercise-card { transition: transform .12s ease, border-color .2s, box-shadow .2s; }
.exercise-card:not(.locked):hover { transform: translateY(-4px); border-color: var(--brand-2); box-shadow: var(--shadow); }
.exercise-card::before { width: 5px; }
.ex-icon { filter: drop-shadow(0 2px 3px rgba(0,0,0,.4)); }

/* Opções de quiz/cenário com realce de captura. */
.quiz-opt:hover, .scenario-choice:hover { box-shadow: inset 3px 0 0 var(--brand); }

/* Entrada em cascata dos cartões ao abrir uma aba. */
.tab-panel .exercise-card, .tab-panel .ann-card, .tab-panel .poll-card { animation: rise .4s ease both; }
.tab-panel .exercise-card:nth-child(2){animation-delay:.05s}
.tab-panel .exercise-card:nth-child(3){animation-delay:.1s}
.tab-panel .exercise-card:nth-child(4){animation-delay:.15s}
.tab-panel .exercise-card:nth-child(5){animation-delay:.2s}

/* ═════════ ÍCONES DE SPRITE NAS ABAS ═════════ */
.nav-btn { display: inline-flex; align-items: center; gap: .4rem; }
.nav-sprite {
  width: 28px; height: 28px; flex: 0 0 auto; object-fit: contain;
  image-rendering: pixelated; image-rendering: crisp-edges;
  filter: drop-shadow(0 1px 1px rgba(0, 0, 0, .45));
  transition: transform .16s ease;
}
.nav-btn:hover .nav-sprite { transform: scale(1.2) translateY(-1px); }
.nav-btn.active .nav-sprite { animation: wiggle .5s ease; filter: drop-shadow(0 1px 2px rgba(0, 0, 0, .55)); }
.nav-label { line-height: 1; }
@media (max-width: 960px) { .nav-label { display: none; } .nav-btn { padding: .5rem .55rem; } }

/* Badge de tipo dentro dos cartões de treino: leve brilho no hover do card. */
.exercise-card:hover .type-badge { filter: brightness(1.06) saturate(1.05); }

/* ═════════ CURSOR DE POKÉBOLA ═════════ */
body {
  cursor: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='28'%20height='28'%20viewBox='0%200%2028%2028'%3E%3Ccircle%20cx='14'%20cy='14'%20r='12'%20fill='%23f6f7fb'%20stroke='%23111'%20stroke-width='2'/%3E%3Cpath%20d='M2%2014%20A12%2012%200%200%201%2026%2014%20Z'%20fill='%23ee1515'/%3E%3Cline%20x1='2'%20y1='14'%20x2='26'%20y2='14'%20stroke='%23111'%20stroke-width='2'/%3E%3Ccircle%20cx='14'%20cy='14'%20r='4.5'%20fill='%23fff'%20stroke='%23111'%20stroke-width='2'/%3E%3C/svg%3E") 14 14, auto;
}
/* Campos de texto mantêm o cursor de escrita (não atrapalhar a digitação). */
input:not([type=checkbox]):not([type=radio]):not([type=button]):not([type=submit]),
textarea, [contenteditable="true"] { cursor: text; }
button, a, select, label, summary, [role="button"],
.nav-btn, .archive-item, .cal-day.clickable, .quiz-opt, .scenario-choice, .poll-opt, .mem-card {
  cursor: pointer;
}
button:disabled, .btn[disabled] { cursor: not-allowed; }

/* ═════════ MASCOTE DO DIA — pula sobre a plataforma ═════════ */
.day-mon {
  float: right; position: relative; z-index: 1;
  width: 78px; height: 88px; margin: -.2rem -.2rem .5rem .9rem;
}
.day-mon .day-sprite {
  float: none; margin: 0; position: relative; z-index: 1;
  width: 78px; height: 78px;
  animation: day-bob 3.2s ease-in-out infinite;
}
.day-mon-shadow {
  position: absolute; left: 50%; bottom: 3px; width: 54px; height: 12px;
  transform: translateX(-50%); border-radius: 50%;
  background: radial-gradient(closest-side, rgba(0, 0, 0, .55), transparent);
  animation: day-shadow 3.2s ease-in-out infinite;
}
@keyframes day-bob    { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-9px); } }
@keyframes day-shadow { 0%,100% { transform: translateX(-50%) scale(1); opacity: .5; } 50% { transform: translateX(-50%) scale(.78); opacity: .3; } }

/* ═════════ RUBRICA COM "TIPOS" DO TREINADOR ═════════ */
.cat-row.typed { grid-template-columns: 150px 1fr auto; }
.cat-row.typed .cat-name { display: flex; flex-direction: column; align-items: flex-start; gap: .25rem; }
.cat-name-txt { font-size: .78rem; color: var(--muted); }
.cat-row.typed .type-badge { font-size: .62rem; }
.cat-bar.type-steel    .cat-fill { background: linear-gradient(90deg, var(--t-steel),  #bcd3dd); }
.cat-bar.type-electric .cat-fill { background: linear-gradient(90deg, #caa400, var(--t-electric)); }
.cat-bar.type-fighting .cat-fill { background: linear-gradient(90deg, var(--t-fighting), #ff8fa8); }
.cat-bar.type-fairy    .cat-fill { background: linear-gradient(90deg, var(--t-fairy), #ffd0fb); }

/* ═════════ CENA DE CAPTURA (gabaritou = 3 estrelas) ═════════ */
.capture-overlay {
  position: fixed; inset: 0; z-index: 90; display: grid; place-items: center;
  background: radial-gradient(circle at 50% 42%, rgba(20, 30, 55, .72), rgba(4, 7, 14, .9));
  animation: cap-fade .25s ease both; cursor: pointer;
}
.capture-stage {
  display: grid; grid-template-rows: 300px auto; justify-items: center; align-items: center;
  width: min(82vw, 340px);
}
.capture-rays, .capture-mon, .capture-ball, .capture-flash { grid-row: 1; grid-column: 1; }
.capture-caption { grid-row: 2; grid-column: 1; }

.capture-mon {
  width: 168px; height: 168px; object-fit: contain;
  filter: drop-shadow(0 10px 14px rgba(0, 0, 0, .5));
  animation: cap-mon .82s ease both;
}
/* Pokébola montada em CSS. */
.capture-ball {
  width: 68px; height: 68px; border-radius: 50%; position: relative; overflow: hidden;
  background: #f6f7fb; border: 4px solid #111;
  box-shadow: 0 12px 26px rgba(0, 0, 0, .5);
  animation: cap-drop .5s cubic-bezier(.3, .7, .4, 1.3) both, cap-wobble 1.25s ease-in-out .9s both;
}
.capture-ball .cb-top { position: absolute; inset: 0 0 50% 0; background: linear-gradient(#ff5a48, #ee1515); }
.capture-ball .cb-belt { position: absolute; top: calc(50% - 4px); left: -4px; right: -4px; height: 8px; background: #111; }
.capture-ball .cb-btn {
  position: absolute; top: 50%; left: 50%; width: 20px; height: 20px;
  transform: translate(-50%, -50%); border-radius: 50%;
  background: #fff; border: 4px solid #111; box-shadow: 0 0 0 3px #f6f7fb;
}
.capture-flash {
  width: 150px; height: 150px; border-radius: 50%;
  background: radial-gradient(circle, #fff 0 40%, rgba(255, 255, 255, .5) 55%, transparent 70%);
  opacity: 0; animation: cap-flash 2.4s ease both;
}
.capture-rays {
  width: 320px; height: 320px; border-radius: 50%; opacity: 0;
  background: repeating-conic-gradient(from 0deg, rgba(255, 203, 5, .55) 0 6deg, transparent 6deg 18deg);
  -webkit-mask: radial-gradient(circle, transparent 30%, #000 32%, #000 60%, transparent 66%);
          mask: radial-gradient(circle, transparent 30%, #000 32%, #000 60%, transparent 66%);
  animation: cap-rays .8s ease 1.98s both;
}
.capture-caption {
  display: flex; flex-direction: column; align-items: center; gap: .4rem;
  animation: cap-pop .5s cubic-bezier(.2, .9, .3, 1.6) 2.12s both;
}
.cap-word {
  font-family: var(--font-display); font-weight: 800; font-size: 1.9rem; color: var(--accent);
  text-shadow: 0 2px 0 #a67f00, 0 0 18px rgba(255, 203, 5, .5); letter-spacing: .01em;
}
.capture-caption .stars.big { font-size: 2rem; }

@keyframes cap-fade   { from { opacity: 0; } to { opacity: 1; } }
@keyframes cap-drop {
  0%   { transform: translateY(-62vh) rotate(0); opacity: 0; }
  12%  { opacity: 1; }
  100% { transform: translateY(0) rotate(720deg); opacity: 1; }
}
@keyframes cap-wobble {
  0%,100% { transform: rotate(0); }
  15% { transform: rotate(-16deg); } 30% { transform: rotate(13deg); }
  45% { transform: rotate(-10deg); } 60% { transform: rotate(7deg); } 75% { transform: rotate(-3deg); }
}
@keyframes cap-mon {
  0%,52% { transform: scale(1) translateY(0); opacity: 1; }
  60% { transform: scale(1.14) translateY(-4px); filter: brightness(2.4) drop-shadow(0 10px 14px rgba(0,0,0,.5)); }
  76%,100% { transform: scale(0); opacity: 0; }
}
@keyframes cap-flash {
  0%,17%,27%,79%,100% { opacity: 0; transform: scale(.2); }
  22% { opacity: .95; transform: scale(1.05); }
  84% { opacity: 1; transform: scale(1.6); }
}
@keyframes cap-rays { 0% { opacity: 0; transform: scale(.2) rotate(0); } 45% { opacity: .85; } 100% { opacity: 0; transform: scale(1.5) rotate(38deg); } }
@keyframes cap-pop  { 0% { opacity: 0; transform: translateY(12px) scale(.6); } 100% { opacity: 1; transform: none; } }

/* Versão sem animação (prefers-reduced-motion): mostra só o resultado. */
.capture-overlay.instant .capture-mon,
.capture-overlay.instant .capture-rays,
.capture-overlay.instant .capture-flash { display: none; }
.capture-overlay.instant .capture-ball { animation: none; }
.capture-overlay.instant .capture-caption { animation: none; opacity: 1; transform: none; }

/* ═════════ TOAST ESTILO "POKÉDEX" ═════════ */
.toast {
  display: flex; align-items: center; gap: .6rem;
  border-radius: 13px; border: 1px solid var(--border); border-left: 4px solid var(--accent);
  background: linear-gradient(180deg, var(--panel-2), var(--panel));
  padding: .6rem .95rem .6rem .8rem; animation: rise .3s ease both;
}
.toast-ico { font-size: 1.15rem; line-height: 1; filter: drop-shadow(0 1px 1px rgba(0, 0, 0, .45)); }
.toast-msg { font-family: var(--font-display); font-weight: 700; }
.toast.error   { border-left-color: #ff5a5a; }
.toast.success { border-left-color: var(--call); }

/* ═════════ PARCEIRO QUE EVOLUI (card de XP) ═════════ */
.xp-mascot { display: flex; flex-direction: column; align-items: center; gap: .32rem; flex: 0 0 auto; width: 98px; }
/* Treinador (personagem) ao lado do parceiro Pokémon no dashboard de Treinos. */
.xp-mascot.has-trainer { width: 150px; }
.xp-duo { display: flex; align-items: flex-end; justify-content: center; gap: .35rem; }
.xp-trainer {
  width: 50px; height: 72px; object-fit: contain; object-position: bottom; image-rendering: pixelated;
  filter: drop-shadow(0 2px 3px rgba(0, 0, 0, .5)); align-self: flex-end;
}
.evo-ring {
  width: 84px; height: 84px; border-radius: 50%; display: grid; place-items: center; position: relative;
  background: conic-gradient(var(--accent) var(--evo, 0%), var(--border) 0);
  box-shadow: 0 0 0 1px var(--border), 0 0 16px rgba(255, 203, 5, .18);
}
.evo-core {
  width: 68px; height: 68px; border-radius: 50%; display: grid; place-items: center; overflow: hidden;
  background: radial-gradient(circle at 50% 28%, var(--panel-2), var(--bg));
}
.evo-mon {
  width: 60px; height: 60px; object-fit: contain; image-rendering: pixelated;
  filter: drop-shadow(0 2px 3px rgba(0, 0, 0, .5)); animation: floaty 4s ease-in-out infinite;
}
.evo-name { font-family: var(--font-display); font-weight: 700; font-size: .78rem; }
.evo-dots { display: flex; gap: .26rem; }
.evo-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--border); }
.evo-dot.on { background: var(--accent); box-shadow: 0 0 6px rgba(255, 203, 5, .6); }
.evo-ring.evolved { animation: evo-burst .9s ease; }
@keyframes evo-burst {
  0%   { box-shadow: 0 0 0 0 rgba(255, 203, 5, .6), 0 0 0 1px var(--border); }
  50%  { transform: scale(1.14); box-shadow: 0 0 0 16px rgba(255, 203, 5, 0), 0 0 0 1px var(--border); }
  100% { transform: scale(1); }
}
@media (max-width: 560px) { .xp-mascot { display: none; } }

/* ═════════ TRANSIÇÃO DE BATALHA (encontro selvagem) ═════════ */
.battle-wipe { position: fixed; inset: 0; z-index: 95; pointer-events: none; overflow: hidden; }
.bw-flash { position: absolute; inset: 0; background: #fff; opacity: 0; animation: bw-flash .5s ease both; }
.bw-bars {
  position: absolute; inset: -20% -20%;
  background: repeating-linear-gradient(48deg, #0a0f1e 0 46px, var(--brand) 46px 52px, #16203a 52px 96px);
  transform: translateX(-130%); animation: bw-bars .95s cubic-bezier(.65, 0, .35, 1) both;
}
@keyframes bw-flash { 0% { opacity: 0; } 8% { opacity: .95; } 18% { opacity: 0; } 32% { opacity: .7; } 44% { opacity: 0; } 100% { opacity: 0; } }
@keyframes bw-bars  { 0% { transform: translateX(-130%); } 46% { transform: translateX(0); } 56% { transform: translateX(0); } 100% { transform: translateX(130%); } }

/* ═════════ INSÍGNIAS DE GINÁSIO (aba Treinos) ═════════ */
.live-bar, .gym-wrap { grid-column: 1 / -1; }
.gym-wrap {
  background: linear-gradient(135deg, var(--panel), var(--bg-2));
  border: 1px solid var(--border); border-radius: var(--radius); padding: .9rem 1.1rem; box-shadow: var(--shadow-sm);
}
.gym-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: .7rem; }
.gym-count { font-family: var(--font-pixel); font-size: .62rem; color: var(--accent); }
.gym-badges { display: grid; grid-template-columns: repeat(8, 1fr); gap: .55rem; }
@media (max-width: 720px) { .gym-badges { grid-template-columns: repeat(4, 1fr); } }
.gym-badge {
  display: flex; flex-direction: column; align-items: center; gap: .35rem;
  padding: .5rem .2rem; border-radius: 12px; border: 1px solid var(--border);
  background: var(--bg); text-align: center; transition: transform .12s ease, box-shadow .2s;
}
.gym-badge.earned { border-color: var(--gcolor); box-shadow: inset 0 0 0 1px var(--gcolor); }
.gym-badge.earned:hover { transform: translateY(-3px); box-shadow: inset 0 0 0 1px var(--gcolor), 0 6px 14px rgba(0, 0, 0, .3); }
.gb-ico {
  width: 40px; height: 40px; display: grid; place-items: center; font-size: 1.15rem;
  clip-path: polygon(30% 2%, 70% 2%, 98% 30%, 98% 70%, 70% 98%, 30% 98%, 2% 70%, 2% 30%);
  background: var(--panel-2);
}
.gym-badge.earned .gb-ico {
  background: radial-gradient(circle at 50% 28%, rgba(255, 255, 255, .55), transparent 60%), var(--gcolor);
  filter: drop-shadow(0 0 6px color-mix(in srgb, var(--gcolor) 70%, transparent));
}
.gym-badge.locked { opacity: .55; filter: grayscale(.9); }
.gb-name { font-family: var(--font-display); font-weight: 700; font-size: .68rem; line-height: 1.1; }

/* ═════════ AVATAR DO TREINADOR (topbar) ═════════ */
.user-avatar {
  width: 34px; height: 34px; border-radius: 50%; object-fit: contain; image-rendering: pixelated;
  padding: 2px; background: radial-gradient(circle at 50% 28%, var(--panel-2), var(--bg));
  border: 2px solid var(--accent); box-shadow: 0 0 8px rgba(255, 203, 5, .25);
}
/* Avatar de TREINADOR: sprite de corpo inteiro — enquadra o topo (rosto) no
   círculo em vez de encolher o boneco inteiro. */
#user-avatar.is-trainer { object-fit: cover; object-position: 50% 10%; padding: 0; }

/* ═════════ PORTÃO DE VÍNCULO DO DISCORD (obrigatório) ═════════ */
#discord-gate { z-index: 120; } /* acima de tudo, inclusive onboarding */
.discord-gate-box { max-width: 560px; }
.discord-gate-box .starter-h { margin: .2rem 0 .4rem; }
.dg-steps { text-align: left; margin: .8rem auto 1rem; max-width: 420px; display: flex; flex-direction: column; gap: .35rem; padding-left: 1.2rem; color: var(--muted); font-size: .9rem; }
.dg-steps li { line-height: 1.35; }
.dg-code { margin: .8rem 0; display: flex; flex-direction: column; gap: .5rem; align-items: center; }
.dg-actions { margin-top: 1rem; display: flex; justify-content: center; gap: .5rem; }
.dg-status { min-height: 1.1em; margin-top: .5rem; }
/* Botões-âncora (abrir Discord etc.) precisam se comportar como botões:
   um <a> é inline por padrão e o padding do .btn "vaza" — no mobile isso
   deixava as opções desalinhadas/quebradas. */
a.btn { display: inline-flex; align-items: center; justify-content: center; gap: .35rem; text-decoration: none; text-align: center; }
/* Links de vínculo (convite + abrir #vincular) e a linha de ações do código:
   ocupam a largura e EMPILHAM no celular (alvos de toque grandes). */
.dg-links, .dg-code-actions { display: flex; flex-wrap: wrap; justify-content: center; gap: .5rem; width: 100%; margin: .2rem 0; }
.dg-links .btn, .dg-code-actions .btn { flex: 1 1 auto; min-height: 44px; }
.dg-code .cred-box { max-width: 100%; }
@media (max-width: 560px) {
  .dg-links, .dg-code-actions { flex-direction: column; align-items: stretch; }
  .dg-links .btn, .dg-code-actions .btn { width: 100%; }
  .discord-gate-box { padding: 1.4rem 1rem 1.6rem; }
}
.dg-foot { margin-top: 1rem; display: flex; flex-direction: column; gap: .4rem; align-items: center; }
.dg-later { background: none; border: 1px dashed var(--border); border-radius: 999px; padding: .3rem .8rem; color: var(--text); cursor: pointer; font-size: .82rem; font-weight: 600; }
.dg-later:hover { border-color: var(--accent); }
.dg-logout { background: none; border: none; color: var(--muted); text-decoration: underline; cursor: pointer; font-size: .82rem; }
.dg-logout:hover { color: var(--text); }

/* ═════════ ESCOLHA SEU PARCEIRO (1º acesso) ═════════ */
.starter-overlay {
  position: fixed; inset: 0; z-index: 92; display: grid; place-items: center; padding: 1.2rem;
  background: radial-gradient(circle at 50% 40%, rgba(20, 30, 55, .92), rgba(4, 7, 14, .96));
  animation: cap-fade .3s ease both;
}
.starter-overlay.closing { animation: cap-fade .4s ease reverse both; }
.starter-box {
  width: 100%; max-width: 660px; text-align: center; position: relative; overflow: hidden;
  background: linear-gradient(180deg, var(--panel), var(--bg-2)); border: 1px solid var(--border);
  border-radius: 20px; padding: 1.7rem 1.4rem 1.9rem; box-shadow: var(--shadow);
}
.starter-box::before {
  content: ''; position: absolute; top: 0; left: 0; right: 0; height: 6px;
  background: linear-gradient(90deg, var(--t-grass), var(--t-fire), var(--t-water), var(--t-electric), var(--t-normal));
}
.starter-h { margin: .15rem 0 .25rem; font-size: 1.75rem; }
.starter-grid { display: grid; grid-template-columns: repeat(5, 1fr); gap: .7rem; margin-top: 1.2rem; }
@media (max-width: 560px) { .starter-grid { grid-template-columns: repeat(2, 1fr); } }
.starter-card {
  display: flex; flex-direction: column; align-items: center; gap: .4rem; cursor: pointer; font: inherit;
  color: var(--text); background: var(--panel); border: 1px solid var(--border); border-radius: 14px;
  padding: .85rem .5rem; transition: transform .12s ease, border-color .2s, box-shadow .2s;
}
.starter-card:hover { transform: translateY(-6px); border-color: var(--scolor); box-shadow: 0 0 0 2px var(--scolor), 0 12px 24px rgba(0, 0, 0, .45); }
.starter-mon { width: 88px; height: 88px; object-fit: contain; filter: drop-shadow(0 5px 7px rgba(0, 0, 0, .5)); transition: transform .2s; }
.starter-card:hover .starter-mon { transform: scale(1.14); animation: wiggle .5s ease; }
.starter-name { font-family: var(--font-display); font-weight: 800; }

/* Seletor de parceiro de treino (modal) + estado ativo */
.partner-chooser h3 { margin: .3rem 0 .2rem; }
.partner-grid { grid-template-columns: repeat(auto-fit, minmax(96px, 1fr)); margin-top: 1rem; }
.partner-grid .starter-mon { width: 66px; height: 66px; image-rendering: pixelated; }
.partner-grid .starter-name { font-size: .82rem; }
.starter-card.active { border-color: var(--scolor); box-shadow: 0 0 0 2px var(--scolor), inset 0 0 22px color-mix(in srgb, var(--scolor) 22%, transparent); }
.starter-card.active::after { content: '✓ parceiro'; font-size: .6rem; font-weight: 800; text-transform: uppercase; letter-spacing: .04em; color: var(--scolor); }

/* "🔄 trocar" no mascote do hero de Treinos */
.evo-swap {
  font-size: .6rem; font-weight: 800; text-transform: uppercase; letter-spacing: .03em;
  color: #fff; background: rgba(255,255,255,.14); border: 1px solid rgba(255,255,255,.28);
  padding: .06rem .4rem; border-radius: 999px; opacity: .85; transition: opacity .15s, background .15s;
}
.xp-mascot:hover .evo-swap { opacity: 1; background: rgba(255,255,255,.26); }

/* Shiny-dex (modal com as variantes brilhantes encontradas) */
.shinydex h3 { margin: .3rem 0 .2rem; }
.shinydex-grid {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(84px, 1fr)); gap: .55rem; margin: 1rem 0;
  max-height: 56vh; overflow: auto;
}
.shinydex-cell {
  position: relative; display: flex; flex-direction: column; align-items: center; gap: .2rem; padding: .5rem .3rem;
  border: 1px solid color-mix(in srgb, #ffd23f 35%, var(--border)); border-radius: 12px;
  background: radial-gradient(circle at 50% 30%, color-mix(in srgb, #ffd23f 14%, var(--panel-2)), var(--panel));
}
.shinydex-spark { position: absolute; top: 3px; right: 5px; font-size: .8rem; filter: drop-shadow(0 0 4px rgba(255,210,63,.8)); }
.shinydex-mon { width: 60px; height: 60px; object-fit: contain; image-rendering: pixelated; filter: drop-shadow(0 2px 3px rgba(0,0,0,.4)); }
.shinydex-name { font-size: .72rem; font-weight: 700; text-align: center; line-height: 1.15; }
.shinydex-rank { margin-top: .2rem; }

/* ═════════ TROCA DE DIA (Mentoria) — scan + slide ═════════ */
.day-reveal { animation: day-in .45s ease both; position: relative; }
.day-reveal.from-left  { animation: day-in-left .4s ease both; }
.day-reveal.from-right { animation: day-in-right .4s ease both; }
@keyframes day-in       { 0% { opacity: 0; transform: translateY(10px); } 100% { opacity: 1; transform: none; } }
@keyframes day-in-left  { 0% { opacity: 0; transform: translateX(-46px); } 100% { opacity: 1; transform: none; } }
@keyframes day-in-right { 0% { opacity: 0; transform: translateX(46px); } 100% { opacity: 1; transform: none; } }
.day-reveal::before {
  content: ''; position: absolute; left: 0; right: 0; top: -45%; height: 45%; z-index: 3; pointer-events: none;
  background: linear-gradient(180deg, transparent, rgba(127, 215, 255, .28), transparent);
  animation: day-scan .62s ease both;
}
@keyframes day-scan { 0% { top: -45%; opacity: 0; } 25% { opacity: 1; } 100% { top: 100%; opacity: 0; } }
.day-nav { display: flex; align-items: center; justify-content: space-between; gap: .6rem; margin-top: 1rem; }
.day-nav-pos { font-family: var(--font-display); font-weight: 700; color: var(--muted); font-size: .85rem; }
.day-nav .btn[disabled] { opacity: .4; cursor: default; pointer-events: none; }

/* ═════════ PÓDIO PIXEL-ART (Progresso) ═════════ */
.podium-wrap {
  background: linear-gradient(180deg, var(--panel), var(--bg-2)); border: 1px solid var(--border);
  border-radius: var(--radius); padding: 1rem 1.2rem 1.3rem; margin-bottom: 1.4rem; box-shadow: var(--shadow-sm);
}
.podium { display: grid; grid-template-columns: repeat(3, 1fr); align-items: end; gap: .8rem; margin-top: .8rem; max-width: 520px; }
.pod-col { display: flex; flex-direction: column; align-items: center; gap: .4rem; animation: rise .5s ease both; }
.pod-mon {
  width: 62px; height: 62px; object-fit: contain; image-rendering: pixelated;
  filter: drop-shadow(0 4px 5px rgba(0, 0, 0, .5)); animation: floaty 4s ease-in-out infinite;
}
.p1 .pod-mon { width: 74px; height: 74px; }
.pod-name {
  font-family: var(--font-display); font-weight: 700; font-size: .82rem; text-align: center;
  max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.pod-step {
  width: 100%; display: flex; flex-direction: column; align-items: center; gap: .12rem;
  padding-top: .5rem; border-radius: 6px 6px 0 0;
  box-shadow: inset 0 0 0 3px rgba(0, 0, 0, .35), inset 0 0 0 6px rgba(255, 255, 255, .07);
}
.pod-medal { font-size: 1.5rem; line-height: 1; }
.pod-score { font-family: var(--font-pixel); font-size: .58rem; color: #10151f; }
.p1 .pod-step { height: 96px; background: linear-gradient(180deg, #ffe27a, var(--accent)); }
.p2 .pod-step { height: 70px; background: linear-gradient(180deg, #e8edf6, #aab6cc); }
.p3 .pod-step { height: 54px; background: linear-gradient(180deg, #ffb877, #cf8a4a); }

/* ═════════ SUBIU DE NÍVEL! (fanfarra) ═════════ */
.levelup-overlay {
  position: fixed; inset: 0; z-index: 93; display: grid; place-items: center; cursor: pointer;
  background: radial-gradient(circle at 50% 42%, rgba(59, 76, 202, .5), rgba(4, 7, 14, .9));
  animation: cap-fade .25s ease both;
}
.lu-stage { display: flex; flex-direction: column; align-items: center; gap: .5rem; position: relative; }
.lu-rays {
  position: absolute; top: -34px; width: 320px; height: 320px; border-radius: 50%; z-index: 0;
  background: repeating-conic-gradient(from 0deg, rgba(255, 203, 5, .5) 0 6deg, transparent 6deg 18deg);
  -webkit-mask: radial-gradient(circle, transparent 22%, #000 24%, #000 60%, transparent 66%);
          mask: radial-gradient(circle, transparent 22%, #000 24%, #000 60%, transparent 66%);
  animation: lu-spin 9s linear infinite, cap-pop .5s ease both;
}
@keyframes lu-spin { to { transform: rotate(360deg); } }
.lu-badge {
  width: 134px; height: 134px; border-radius: 50%; display: grid; place-items: center; z-index: 1;
  background: radial-gradient(circle at 50% 30%, var(--panel-2), var(--bg));
  box-shadow: 0 0 0 4px var(--accent), 0 0 32px rgba(255, 203, 5, .5);
  animation: lu-pop .6s cubic-bezier(.2, .9, .3, 1.5) both;
}
.lu-mon { width: 106px; height: 106px; object-fit: contain; filter: drop-shadow(0 6px 8px rgba(0, 0, 0, .5)); animation: lu-bounce 1s ease .3s infinite alternate; }
.lu-word {
  font-family: var(--font-display); font-weight: 800; font-size: 2rem; color: var(--accent); z-index: 1;
  text-shadow: 0 2px 0 #a67f00, 0 0 18px rgba(255, 203, 5, .5); animation: cap-pop .5s ease .3s both;
}
.lu-level { font-family: var(--font-pixel); font-size: 1rem; color: #fff; z-index: 1; animation: cap-pop .5s ease .45s both; }
@keyframes lu-pop    { 0% { transform: scale(0) rotate(-18deg); opacity: 0; } 100% { transform: scale(1); opacity: 1; } }
@keyframes lu-bounce { to { transform: translateY(-10px); } }
.levelup-overlay.instant .lu-rays, .levelup-overlay.instant .lu-mon { animation: none; }
.levelup-overlay.instant .lu-badge, .levelup-overlay.instant .lu-word, .levelup-overlay.instant .lu-level { animation: none; opacity: 1; transform: none; }

/* ═════════ FUNDO DIA / NOITE (horário real) ═════════ */
body {
  --glow-a: rgba(59, 76, 202, .28);
  --glow-b: rgba(238, 21, 21, .13);
  background:
    radial-gradient(1100px 560px at 82% -12%, var(--glow-a) 0, transparent 60%),
    radial-gradient(900px 520px at -10% 8%, var(--glow-b) 0, transparent 55%),
    var(--bg);
  background-attachment: fixed;
}
body[data-tod="dawn"]  { --glow-a: rgba(255, 150, 90, .30); --glow-b: rgba(255, 120, 170, .18); }
body[data-tod="day"]   { --glow-a: rgba(90, 150, 255, .28); --glow-b: rgba(255, 203, 5, .14); }
body[data-tod="dusk"]  { --glow-a: rgba(255, 110, 60, .32); --glow-b: rgba(120, 60, 200, .22); }
body[data-tod="night"] { --glow-a: rgba(40, 60, 160, .34); --glow-b: rgba(15, 25, 70, .30); }

/* ═════════ CAIXA DE DIÁLOGO COM DIGITAÇÃO (cenários) ═════════ */
.scenario-text.dialogue {
  position: relative; cursor: pointer; min-height: 3.4rem;
  border: 1px solid var(--border); border-left: 4px solid var(--accent); border-radius: 12px;
  background: linear-gradient(180deg, var(--panel), var(--bg-2)); padding: .95rem 1.1rem; box-shadow: var(--shadow-sm);
}
.scenario-text.dialogue::before { content: '▶'; position: absolute; right: .7rem; bottom: .45rem; color: var(--accent); font-size: .7rem; opacity: .55; }
.dialogue.typing::after { content: '▋'; margin-left: 1px; color: var(--accent); animation: tw-blink .7s steps(1) infinite; }
@keyframes tw-blink { 50% { opacity: 0; } }
.scenario-choices.reveal-after { opacity: 0; transform: translateY(6px); pointer-events: none; transition: opacity .35s ease, transform .35s ease; }
.scenario-choices.reveal-after.ready { opacity: 1; transform: none; pointer-events: auto; }

/* ═════════ BARRA DE HP / BATALHA (quiz) ═════════ */
.battle-hud {
  display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: .8rem;
  background: linear-gradient(180deg, var(--panel), var(--bg-2)); border: 1px solid var(--border);
  border-radius: var(--radius); padding: 1rem 1.1rem; margin-bottom: 1.1rem; box-shadow: var(--shadow-sm);
}
.bh-side { display: flex; align-items: center; gap: .7rem; }
.bh-side:last-child { justify-content: flex-end; }
.bh-info { display: flex; flex-direction: column; gap: .3rem; min-width: 112px; }
.bh-name { font-family: var(--font-display); font-weight: 700; font-size: .85rem; }
.bh-mon { width: 66px; height: 66px; object-fit: contain; image-rendering: pixelated; filter: drop-shadow(0 4px 5px rgba(0, 0, 0, .5)); }
.bh-mon.flip { transform: scaleX(-1); }
.bh-mon.hurt { animation: bh-hurt .22s ease; }
.bh-mon.flip.hurt { animation: bh-hurt-f .22s ease; }
@keyframes bh-hurt   { 0%,100% { transform: translateX(0); } 25% { transform: translateX(-5px); filter: brightness(2.6) drop-shadow(0 4px 5px rgba(0,0,0,.5)); } 75% { transform: translateX(5px); } }
@keyframes bh-hurt-f { 0%,100% { transform: scaleX(-1); } 25% { transform: scaleX(-1) translateX(5px); filter: brightness(2.6) drop-shadow(0 4px 5px rgba(0,0,0,.5)); } 75% { transform: scaleX(-1) translateX(-5px); } }
.bh-vs { font-family: var(--font-pixel); font-size: .68rem; color: var(--brand-2); }
.hp-bar { height: 11px; border-radius: 999px; background: #0a0f1e; border: 1px solid var(--border); overflow: hidden; }
.hp-fill { height: 100%; border-radius: 999px; transition: width .35s ease; }
.hp-fill.enemy { background: linear-gradient(90deg, #ff6a5a, var(--brand)); }
.hp-fill.hero { background: linear-gradient(90deg, #2ecc71, #7CFC9B); }
.hp-fill.hero.low { background: linear-gradient(90deg, #ff8a3d, var(--accent)); }
.bh-mon.fainted { filter: grayscale(1) brightness(.7); transform: rotate(90deg) translateY(6px); opacity: .6; transition: transform .4s ease, filter .4s ease, opacity .4s ease; }
.bh-mon.flip.fainted { transform: scaleX(-1) rotate(-90deg) translateY(6px); }
.crit-flash { text-align: center; font-family: var(--font-display); font-weight: 900; color: var(--accent); font-size: 1.2rem; margin-top: .5rem; animation: crit-pop .4s ease; }
@keyframes crit-pop { 0% { transform: scale(.5); opacity: 0; } 50% { transform: scale(1.25); } 100% { transform: scale(1); opacity: 1; } }
.hp-pv { font-family: var(--font-pixel); font-size: .55rem; color: var(--muted); }

/* ── Missões diárias/semanais ── */
.missions-card { background: var(--panel); border: 1px solid var(--border); border-radius: var(--radius); padding: 1rem 1.1rem; margin: 1rem 0; }
.missions-card .ms-group { margin-top: .7rem; }
.missions-card .ms-h { font-family: var(--font-display); font-weight: 700; font-size: .85rem; color: var(--muted); margin-bottom: .4rem; }
.mission-row { display: flex; align-items: center; gap: .7rem; padding: .5rem 0; border-top: 1px dashed var(--border); }
.mission-row:first-of-type { border-top: none; }
.mission-row .ms-ico { font-size: 1.25rem; flex: 0 0 auto; }
.mission-row .ms-main { flex: 1 1 auto; min-width: 0; }
.mission-row .ms-text { font-size: .88rem; margin-bottom: .3rem; }
.mission-row .ms-bar { height: 8px; background: var(--panel-2); border-radius: 99px; overflow: hidden; }
.mission-row .ms-fill { display: block; height: 100%; background: linear-gradient(90deg, var(--brand), var(--accent)); transition: width .3s ease; }
.mission-row .ms-count { font-family: var(--font-pixel); font-size: .6rem; color: var(--muted); flex: 0 0 auto; }
.mission-row .ms-claimed { font-size: 1rem; color: var(--call); font-weight: 700; flex: 0 0 auto; }
.mission-row.claimed { opacity: .7; }
.mission-row .ms-main { cursor: pointer; }
.ms-claim { flex: 0 0 auto; background: none; border: 1px solid var(--accent); border-radius: 8px; cursor: pointer; font-size: 1.15rem; line-height: 1; padding: .1rem .4rem; }
.ms-claim:hover { background: rgba(255,203,5,.15); transform: scale(1.08); }

/* ── #3 Glossário ── */
.glossary-search { width: 100%; margin: .2rem 0 .8rem; }
.glossary-list { display: grid; gap: .5rem; max-height: 52vh; overflow-y: auto; overscroll-behavior: contain; }
.glossary-item { border: 1px solid var(--border); border-radius: 10px; padding: .55rem .7rem; }
.glossary-item strong { color: var(--accent); }
.proto-list { display: grid; gap: .5rem; margin-top: .5rem; }

/* ── #22 Boss Raid (co-op) ── */
.boss-stage { display: flex; flex-direction: column; align-items: center; gap: .5rem; margin: .6rem 0; }
.boss-mon { width: 120px; height: 120px; object-fit: contain; image-rendering: pixelated; filter: drop-shadow(0 6px 10px rgba(0,0,0,.5)); }
.boss-mon.idle { animation: boss-bob 1.6s ease-in-out infinite; }
.boss-mon.hurt { animation: bh-hurt .25s ease; }
.boss-mon.attack { animation: boss-attack .35s ease; }
.boss-mon.fainted { filter: grayscale(1) brightness(.6); transform: rotate(90deg); opacity: .6; }
@keyframes boss-bob { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-6px); } }
@keyframes boss-attack { 0%,100% { transform: translateX(0); } 30% { transform: translateX(-10px) scale(1.05); } 60% { transform: translateX(8px); } }
.boss-hpwrap { width: min(320px, 90%); display: flex; flex-direction: column; align-items: center; gap: .25rem; }
.boss-hpbar { width: 100%; height: 14px; border-radius: 999px; background: #0a0f1e; border: 1px solid var(--border); overflow: hidden; }
.boss-hpfill { height: 100%; border-radius: 999px; background: linear-gradient(90deg, #b23bd6, #ff5a8a); transition: width .4s ease; }
.boss-prog { display: block; text-align: center; margin-top: .3rem; }
/* #28 Mata-mata: chip de eliminado */
.lq-chip.out { opacity: .5; text-decoration: line-through; }
/* #26 Chat da turma */
.chat-list { display: flex; flex-direction: column; gap: .4rem; max-height: 52vh; overflow-y: auto; overscroll-behavior: contain; padding: .3rem; margin: .5rem 0; border: 1px solid var(--border); border-radius: 10px; }
.chat-msg { max-width: 85%; align-self: flex-start; background: var(--panel-2); border-radius: 10px; padding: .4rem .6rem; }
.chat-msg.mine { align-self: flex-end; background: rgba(255,203,5,.12); }
.chat-who { font-size: .66rem; color: var(--muted); display: block; }
.chat-text { font-size: .9rem; line-height: 1.35; white-space: pre-wrap; word-break: break-word; }
.chat-bar { display: flex; gap: .5rem; margin-top: .3rem; }
.chat-input { flex: 1 1 auto; }
/* Chat virtual: ícone flutuante + painel encaixado + balões efêmeros no canto */
.chat-launcher {
  position: fixed; right: 20px; bottom: 20px; z-index: 45;
  width: 56px; height: 56px; border-radius: 50%; border: none; cursor: pointer;
  background: linear-gradient(145deg, var(--brand), var(--accent));
  box-shadow: 0 8px 22px rgba(0,0,0,.5); display: grid; place-items: center;
  transition: transform .15s ease, box-shadow .15s ease;
}
.chat-launcher:hover { transform: translateY(-2px) scale(1.05); }
.chat-launcher.open { transform: scale(.92); opacity: .9; }
.chat-launcher-ico { font-size: 1.5rem; line-height: 1; }
.chat-badge {
  position: absolute; top: -3px; right: -3px; min-width: 20px; height: 20px; padding: 0 5px;
  border-radius: 99px; background: #e0564a; color: #fff; font-size: .68rem; font-weight: 800;
  display: grid; place-items: center; box-shadow: 0 2px 6px rgba(0,0,0,.4);
}
.chat-pop-host {
  position: fixed; right: 20px; bottom: 88px; z-index: 44;
  display: flex; flex-direction: column; gap: .5rem; align-items: flex-end;
  max-width: min(320px, 80vw); pointer-events: none;
}
.chat-pop {
  pointer-events: auto; cursor: pointer; background: var(--panel);
  border: 1px solid var(--border); border-left: 3px solid var(--brand);
  border-radius: 12px; padding: .5rem .7rem; box-shadow: 0 6px 18px rgba(0,0,0,.45);
  max-width: 100%; animation: chat-pop-in .28s ease; transition: opacity .4s ease, transform .4s ease;
}
.chat-pop.leaving { opacity: 0; transform: translateX(20px); }
@keyframes chat-pop-in { from { opacity: 0; transform: translateX(24px); } to { opacity: 1; transform: translateX(0); } }
.chat-dock {
  position: fixed; right: 20px; bottom: 88px; z-index: 46;
  width: min(380px, 92vw); max-height: min(560px, 70vh);
  display: flex; flex-direction: column;
  background: var(--panel); border: 1px solid var(--border); border-radius: 14px;
  box-shadow: 0 14px 40px rgba(0,0,0,.55); overflow: hidden;
  animation: chat-pop-in .2s ease;
}
.chat-dock-head { display: flex; align-items: center; justify-content: space-between; gap: .5rem; padding: .7rem .9rem; border-bottom: 1px solid var(--border); background: var(--panel-2); }
.chat-dock-head strong { font-family: var(--font-display); }
.chat-dock-close { background: none; border: none; color: var(--muted); font-size: 1rem; cursor: pointer; padding: .2rem .4rem; border-radius: 8px; }
.chat-dock-close:hover { color: var(--fg); background: var(--panel); }
.chat-dock .chat-list { flex: 1 1 auto; max-height: none; border: none; border-radius: 0; margin: 0; }
.chat-dock .chat-bar { padding: .6rem .7rem; border-top: 1px solid var(--border); margin: 0; }
@media (max-width: 620px) {
  .chat-dock { right: 3vw; left: 3vw; width: auto; bottom: 84px; }
  .chat-pop-host { left: 3vw; }
}
/* #46 Drag-and-drop de treinos */
.day-admin-row[draggable="true"] { align-items: center; }
.drag-handle { cursor: grab; color: var(--muted); font-size: 1.1rem; flex: 0 0 auto; padding: 0 .2rem; user-select: none; }
.day-admin-row.dragging { opacity: .5; border-color: var(--brand); }
/* #24 Júri: barras de votação */
.jury-bars { display: grid; gap: .5rem; margin: .5rem 0; }
.jury-bar-head { display: flex; justify-content: space-between; gap: .5rem; font-size: .82rem; }
.jury-bar.right .jury-bar-lbl { color: var(--call); font-weight: 700; }
.jury-bar-n { color: var(--muted); flex: 0 0 auto; }
.jury-bar-track { height: 12px; background: var(--panel-2); border-radius: 999px; overflow: hidden; margin-top: .2rem; }
.jury-bar-fill { height: 100%; border-radius: 999px; background: linear-gradient(90deg, var(--brand), var(--brand-2)); transition: width .5s ease; }
.jury-bar.right .jury-bar-fill { background: linear-gradient(90deg, #21c07a, #7CFC9B); }
/* #21 Torneio: placar de duelo */
.trn-vs { display: flex; align-items: center; justify-content: center; gap: .8rem; margin: .6rem 0; flex-wrap: wrap; }
.trn-fighter { font-family: var(--font-display); font-weight: 800; padding: .4rem .8rem; border: 1px solid var(--border); border-radius: 10px; background: var(--panel-2); }
.trn-fighter.me { border-color: var(--accent); box-shadow: inset 0 0 0 1px rgba(255,203,5,.3); }
.trn-fighter.win { border-color: var(--call); color: var(--call); }
.trn-fighter.lose { opacity: .55; text-decoration: line-through; }
.trn-vs-x { color: var(--muted); font-weight: 700; }

/* Reports */
.report-form { display: grid; gap: .3rem; margin-bottom: .8rem; padding: .9rem; border: 1px solid var(--border); border-radius: 12px; background: var(--panel-2); }
.report-selects { display: grid; grid-template-columns: 1fr 1.4fr; gap: .6rem; }
.report-selects select { width: 100%; }
.report-body { width: 100%; min-height: 120px; resize: vertical; }
.report-form .ac-actions { display: flex; justify-content: flex-end; margin-top: .3rem; }
@media (max-width: 520px) { .report-selects { grid-template-columns: 1fr; } }
.report-kind { font-size: .68rem; font-weight: 800; border-radius: 99px; padding: .08rem .5rem; background: var(--panel-2); flex: 0 0 auto; }
.report-kind.k-bug { color: #ffb454; }
.report-kind.k-player { color: #e0564a; }
.dc-item.resolved { opacity: .65; }

/* Planejador de Eventos (legado: view + steps-view mantidos) */
.event-view .field { margin-bottom: .7rem; }
.steps-view { display: grid; gap: .6rem; margin: .4rem 0; }
.step-view { border-left: 3px solid var(--brand); padding-left: .6rem; }
.step-view strong { color: var(--accent); }
.report-nick { font-size: .7rem; color: var(--muted); background: var(--panel-2); border-radius: 99px; padding: .05rem .45rem; flex: 0 0 auto; }
.modal:has(.report-wrap), .modal:has(.event-view) { max-width: 820px; }
.event-view { font-size: 1.02rem; }
.event-view .md-content { font-size: 1.02rem; line-height: 1.6; }
.event-view .steps-view { gap: .8rem; }
.event-view .step-view strong { font-size: 1.05rem; }
.event-view h3 { font-size: 1.5rem; }

/* ── Editor de Eventos — estilo Google Docs (usa variáveis do tema) ── */

/* Modal container: altura DEFINIDA (não só max) para o rodapé nunca ser cortado */
.modal:has(.gdoc-shell) {
  max-width: 900px; padding: 0; overflow: hidden;
  border-radius: 12px; height: min(88dvh, 820px); max-height: 88dvh;
  background: var(--bg); /* garante que não vaze branco atrás */
}

/* O wrapper #modal-content fica ENTRE .modal e .gdoc-shell. Sem altura própria,
   ele quebrava a cadeia de height:100% — o shell crescia com o conteúdo e o
   rodapé (Voltar/Próximo) saía da tela sem barra de rolagem. Ao dar altura e
   virar coluna flex aqui, o shell passa a preencher exatamente o modal. */
.modal:has(.gdoc-shell) > #modal-content {
  height: 100%; min-height: 0; display: flex; flex-direction: column;
}

/* Shell: preenche o #modal-content (que preenche o modal) */
.gdoc-shell { display: flex; flex-direction: column; flex: 1 1 auto; min-height: 0; }

/* ── Toolbar (fixa no topo, não rola) ── */
.gdoc-toolbar {
  display: flex; align-items: center; justify-content: space-between;
  padding: .55rem .9rem; background: var(--panel-2);
  border-bottom: 1px solid var(--border); flex-shrink: 0; gap: .5rem;
}
.gdoc-breadcrumb { display: flex; align-items: center; gap: .35rem; font-size: .82rem; min-width: 0; overflow: hidden; }
.gdoc-back {
  background: none; border: none; cursor: pointer; font-size: .82rem;
  color: var(--brand-2); font-weight: 600; padding: .2rem .45rem; border-radius: 4px;
  font-family: inherit; white-space: nowrap; flex-shrink: 0;
}
.gdoc-back:hover { background: rgba(255,255,255,.07); }
.gdoc-sep { color: var(--muted); flex-shrink: 0; }
.gdoc-crumb-label { color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; font-size: .8rem; }
.gdoc-tbr { display: flex; align-items: center; gap: .6rem; flex-shrink: 0; }
.gdoc-save-status { font-size: .74rem; color: var(--muted); white-space: nowrap; }
.gdoc-save-status.saving { color: var(--brand-2); }
.gdoc-save-status.saved  { color: var(--call); font-weight: 600; }
.gdoc-save-status.err    { color: var(--brand); }

/* ── Área do documento (scroll aqui, fundo escuro ao redor da folha) ── */
.gdoc-doc {
  flex: 1 1 auto; min-height: 0; /* min-height:0 é essencial p/ rolar dentro do flex column */
  overflow-y: auto; overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch; /* rolagem por toque com inércia no iOS */
  background: var(--bg-2); /* "desktop" ao redor da folha */
  padding: 1.6rem 1rem; display: flex; flex-direction: column;
  align-items: center; gap: .8rem;
}
/* Filhos diretos NÃO podem encolher: senão a "folha" comprimia para caber na
   área visível, cortava o conteúdo e o scroll ficava sem o que rolar. */
.gdoc-doc > * { flex-shrink: 0; }

/* ── Avaliação do mentor (acima da folha) ── */
.gdoc-mentor-fb {
  width: 100%; max-width: 700px;
  background: color-mix(in srgb, var(--brand-2) 12%, var(--panel));
  border-left: 4px solid var(--brand-2); border-radius: 8px; padding: .9rem 1.2rem;
}
.gdoc-fb-head {
  display: flex; align-items: center; gap: .5rem;
  font-size: .8rem; font-weight: 700; color: var(--brand-2); margin-bottom: .35rem;
}
.gdoc-grade { margin-left: auto; background: var(--brand-2); color: #fff; border-radius: 99px; padding: .1rem .55rem; font-size: .77rem; }
.gdoc-fb-text { margin: 0; font-size: .88rem; color: var(--text); line-height: 1.5; }

/* ── A "folha" — superfície elevada acima do bg-2 ── */
.gdoc-page {
  width: 100%; max-width: 700px;
  background: var(--panel); border: 1px solid var(--border);
  border-radius: 8px; box-shadow: 0 4px 20px rgba(0,0,0,.4); overflow: hidden;
}

/* Título */
.gdoc-title-wrap { padding: 2rem 2.2rem 1.4rem; border-bottom: 1px solid var(--border); }
.gdoc-type-label { margin: 0 0 .5rem; font-size: .68rem; font-weight: 800; color: var(--muted); text-transform: uppercase; letter-spacing: .07em; }
.gdoc-title-input {
  width: 100%; border: none; outline: none; background: transparent;
  font-size: 1.9rem; font-weight: 700; color: var(--text); font-family: inherit;
  line-height: 1.2; padding: 0;
}
.gdoc-title-input::placeholder { color: var(--muted); opacity: .45; font-weight: 400; }

/* Propriedades */
.gdoc-props {
  display: grid; grid-template-columns: 1fr 1fr;
  padding: 1rem 2.2rem; gap: .75rem 2rem;
  border-bottom: 1px solid var(--border); background: var(--panel-2);
}
.gdoc-prop { display: flex; flex-direction: column; gap: .18rem; }
.gdoc-prop label { font-size: .65rem; font-weight: 800; color: var(--muted); text-transform: uppercase; letter-spacing: .06em; }
.gdoc-prop input {
  border: none; border-bottom: 1.5px solid var(--border); border-radius: 0;
  padding: .22rem 0; background: transparent; font-size: .87rem; color: var(--text);
  outline: none; font-family: inherit; transition: border-color .15s; width: 100%;
}
.gdoc-prop input:focus { border-bottom-color: var(--brand-2); }

/* Seções */
.gdoc-section { padding: 1.3rem 2.2rem; border-top: 1px solid var(--border); }
.gdoc-section-head {
  display: flex; align-items: center; gap: .4rem; margin-bottom: .9rem;
  font-size: .67rem; font-weight: 800; color: var(--muted);
  text-transform: uppercase; letter-spacing: .07em;
}
.gdoc-section-icon { font-size: .95rem; }

/* Textarea de documento: sempre visível, borda clara, fácil de tocar no celular */
.gdoc-textarea {
  width: 100%; display: block; box-sizing: border-box;
  min-height: 150px; resize: vertical;
  background: var(--bg); border: 1px solid var(--border); border-radius: 10px;
  color: var(--text); font-family: inherit; font-size: .95rem; line-height: 1.6;
  padding: .8rem .9rem; transition: border-color .15s, box-shadow .15s;
}
.gdoc-textarea:focus { outline: none; border-color: var(--brand-2); box-shadow: 0 0 0 3px rgba(255,92,58,.16); }
.gdoc-textarea::placeholder { color: var(--muted); opacity: .7; }
.gdoc-textarea-sm { min-height: 90px; }

/* Texto de ajuda dentro de uma seção */
.gdoc-hint { margin: 0 0 .7rem; font-size: .82rem; color: var(--muted); line-height: 1.5; }

/* Caixa informativa antes do formulário */
.gdoc-infobox {
  border-top: 1px solid var(--border); padding: 1rem 2.2rem;
  background: color-mix(in srgb, var(--brand-2) 8%, var(--panel));
  border-left: 3px solid var(--brand-2);
}
.gdoc-infobox-title { font-size: .72rem; font-weight: 800; color: var(--brand-2); text-transform: uppercase; letter-spacing: .06em; margin-bottom: .5rem; }
.gdoc-infobox-list { margin: 0; padding-left: 1.1rem; display: flex; flex-direction: column; gap: .4rem; }
.gdoc-infobox-list li { font-size: .84rem; color: var(--text); line-height: 1.5; }

/* Props com apenas 2 colunas */
.gdoc-props-2 { grid-template-columns: 1fr 1fr; }
@media (max-width: 600px) {
  .gdoc-infobox { padding: .85rem 1rem; }
  .gdoc-props-2 { grid-template-columns: 1fr; }
}

/* Etapas (numeração automática via CSS counter) */
.gdoc-steps { display: flex; flex-direction: column; gap: .6rem; margin-bottom: .7rem; counter-reset: gdoc-step; }
.gdoc-step {
  display: flex; gap: .75rem; align-items: flex-start; counter-increment: gdoc-step;
  border: 1px solid var(--border); border-radius: 10px;
  padding: .75rem .9rem; background: var(--panel-2); transition: box-shadow .15s;
}
.gdoc-step:hover { box-shadow: 0 3px 12px rgba(0,0,0,.35); }
/* Etapa com NPCs: empilha a linha (número+título+desc) e a área de NPCs abaixo. */
.gdoc-step.step-with-npc { display: block; }
.gdoc-step-top { display: flex; gap: .75rem; align-items: flex-start; }

/* Área de NPCs dentro de uma etapa */
.step-npc-area { margin-top: .8rem; padding-top: .8rem; border-top: 1px dashed var(--border); display: flex; flex-direction: column; gap: .6rem; }
.step-npc-head { display: flex; align-items: center; gap: .5rem; flex-wrap: wrap; }
.step-npc-ico { font-size: 1.05rem; }
.step-npc-lbl { font-size: .82rem; font-weight: 700; color: var(--text); }
.step-npc-head .npc-toggle { margin-left: auto; }
.step-npc-head .npc-seg { flex: 0 0 auto; padding: .35rem .7rem; font-size: .8rem; }
.npc-add-in { margin-top: .1rem; }
.gdoc-step-num {
  flex-shrink: 0; width: 1.65rem; height: 1.65rem; border-radius: 50%;
  background: var(--brand-2); color: #fff; font-size: .7rem; font-weight: 800;
  display: flex; align-items: center; justify-content: center; margin-top: .1rem;
}
.gdoc-step-num::before { content: counter(gdoc-step); }
.gdoc-step-body { flex: 1; display: flex; flex-direction: column; gap: .45rem; min-width: 0; }
.gdoc-step-title {
  width: 100%; box-sizing: border-box; font-weight: 700; font-size: .95rem;
  color: var(--text); font-family: inherit; outline: none;
  background: var(--bg); border: 1px solid var(--border); border-radius: 8px;
  padding: .5rem .7rem; transition: border-color .15s;
}
.gdoc-step-title:focus { border-color: var(--brand-2); }
.gdoc-step-title::placeholder { font-weight: 400; color: var(--muted); opacity: .65; }
.gdoc-step-desc {
  width: 100%; box-sizing: border-box; font-size: .88rem;
  color: var(--text); resize: vertical; min-height: 60px;
  font-family: inherit; line-height: 1.55; outline: none;
  background: var(--bg); border: 1px solid var(--border); border-radius: 8px;
  padding: .5rem .7rem; transition: border-color .15s;
}
.gdoc-step-desc:focus { border-color: var(--brand-2); }
.gdoc-step-desc::placeholder { color: var(--muted); opacity: .65; }
.gdoc-step-del {
  flex-shrink: 0; background: none; border: none; cursor: pointer;
  color: var(--muted); font-size: .88rem; padding: .2rem .3rem;
  border-radius: 4px; line-height: 1; transition: all .12s;
}
.gdoc-step-del:hover { background: color-mix(in srgb, var(--brand) 18%, transparent); color: var(--brand); }
.gdoc-add-step {
  width: 100%; border: 1.5px dashed var(--border); border-radius: 8px; background: none;
  padding: .48rem 1rem; cursor: pointer; color: var(--muted);
  font-size: .84rem; font-family: inherit; transition: all .15s;
}
.gdoc-add-step:hover { border-color: var(--brand-2); color: var(--brand-2); background: color-mix(in srgb, var(--brand-2) 8%, transparent); }

/* ── Mobile: bottom-sheet (sobe da base) ── */
@media (max-width: 600px) {
  .modal-backdrop:has(.gdoc-shell) { padding: 0; align-items: flex-end; }
  .modal:has(.gdoc-shell) {
    border-radius: 18px 18px 0 0; max-width: 100%;
    height: 92dvh; max-height: 92dvh; border-bottom-left-radius: 0; border-bottom-right-radius: 0;
  }
  .gdoc-shell { height: 100%; }
  .gdoc-toolbar { padding: .5rem .75rem; }
  .gdoc-doc { padding: .9rem .5rem; }
  .gdoc-title-wrap { padding: 1.4rem 1rem .9rem; }
  .gdoc-props { grid-template-columns: 1fr; padding: .8rem 1rem; gap: .55rem; }
  .gdoc-section { padding: 1rem 1rem; }
  .gdoc-title-input { font-size: 1.45rem; }
}

/* ═══ Wizard de criação de eventos (passo a passo) ═══ */

/* Barra de progresso das etapas */
.wz-progress {
  display: flex; align-items: center; gap: .4rem; flex-shrink: 0;
  padding: .7rem 1rem; background: var(--panel-2);
  border-bottom: 1px solid var(--border); overflow-x: auto;
}
.wz-pstep { display: flex; align-items: center; gap: .4rem; flex: 0 0 auto; opacity: .5; transition: opacity .2s; }
.wz-pstep.active, .wz-pstep.done { opacity: 1; }
.wz-pnum {
  width: 1.5rem; height: 1.5rem; border-radius: 50%; flex-shrink: 0;
  display: grid; place-items: center; font-size: .72rem; font-weight: 800;
  background: var(--border); color: var(--text);
}
.wz-pstep.active .wz-pnum { background: var(--brand-2); color: #fff; box-shadow: 0 0 0 3px color-mix(in srgb, var(--brand-2) 30%, transparent); }
.wz-pstep.done .wz-pnum { background: var(--call); color: #fff; }
.wz-plabel { font-size: .76rem; font-weight: 700; color: var(--text); white-space: nowrap; }
.wz-pstep:not(:last-child)::after { content: ''; width: 1.1rem; height: 2px; background: var(--border); border-radius: 2px; margin-left: .2rem; }

/* Área rolável + folha do documento */
.wz-doc { padding: 1.4rem 1rem; }
.wz-page { max-width: 640px; padding: 1.6rem 1.8rem; }

.wz-title { margin: 0 0 .4rem; font-size: 1.3rem; color: var(--text); }
.wz-lead { margin: 0 0 1.2rem; font-size: .9rem; color: var(--muted); line-height: 1.55; }

/* Regras (passo 1) */
.wz-rules { display: flex; flex-direction: column; gap: .8rem; }
.wz-rule {
  display: flex; gap: .8rem; align-items: flex-start;
  background: var(--panel-2); border: 1px solid var(--border);
  border-left: 3px solid var(--brand-2); border-radius: 10px; padding: .9rem 1rem;
}
.wz-rule-ico { font-size: 1.4rem; flex-shrink: 0; line-height: 1.2; }
.wz-rule-main { min-width: 0; }
.wz-rule-title { display: block; font-size: .92rem; color: var(--text); margin-bottom: .2rem; }
.wz-rule-text { margin: 0; font-size: .85rem; color: var(--muted); line-height: 1.5; }

/* Campos (passos 2 e 3) */
.wz-body { display: flex; flex-direction: column; gap: 1.3rem; }
.wz-field { display: flex; flex-direction: column; gap: .35rem; }
.wz-flabel { font-size: .82rem; font-weight: 800; color: var(--text); }
.wz-fhint { margin: 0; font-size: .78rem; color: var(--muted); line-height: 1.45; }
.wz-input { width: 100%; box-sizing: border-box; }
.wz-row2 { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }
@media (max-width: 480px) { .wz-row2 { grid-template-columns: 1fr; } }

/* Rodapé fixo com Voltar / Próximo */
.wz-nav {
  flex-shrink: 0; display: flex; justify-content: space-between; gap: .6rem;
  padding: .8rem 1rem; background: var(--panel-2); border-top: 1px solid var(--border);
}
.wz-nav .btn { min-width: 46%; padding: .7rem 1rem; font-size: .95rem; }
/* Passo final: grupo com dois botões (Salvar / Enviar) à direita */
.wz-nav-actions { display: flex; gap: .5rem; flex: 1; justify-content: flex-end; }
.wz-nav-actions .btn { min-width: 0; flex: 1 1 auto; max-width: 50%; }
.wz-nav:has(.wz-nav-actions) .btn:first-child { flex: 0 0 auto; min-width: 0; }
.wz-endnote { margin-top: .4rem; padding-top: .8rem; border-top: 1px dashed var(--border); display: flex; flex-direction: column; gap: .3rem; }

@media (max-width: 600px) {
  .wz-progress { padding: .55rem .7rem; }
  .wz-plabel { font-size: .68rem; }
  .wz-pstep:not(:last-child)::after { width: .6rem; }
  .wz-doc { padding: .9rem .6rem; }
  .wz-page { padding: 1.2rem 1rem; }
  .wz-title { font-size: 1.15rem; }
}

/* Sub-seção dentro de um passo (ex.: NPCs dentro de "Escrever") */
.wz-subsection { margin-top: .4rem; padding-top: 1.1rem; border-top: 1px dashed var(--border); display: flex; flex-direction: column; gap: .5rem; }
.wz-subhead { display: flex; align-items: center; gap: .45rem; font-size: .95rem; font-weight: 800; color: var(--text); }
.wz-subhead-ico { font-size: 1.15rem; }

/* Caixa de contagem de staffs (NPCs + organização) */
.wz-staffbox { display: flex; flex-direction: column; gap: .4rem; border: 1px solid var(--border); border-radius: 10px; padding: .7rem .8rem; background: var(--panel-2); }
.wz-staff-line { margin: 0; font-size: .84rem; color: var(--text); }
.wz-staffbox .wz-input { max-width: 120px; }
.wz-staff-total-line { margin: .2rem 0 0; font-size: .9rem; color: var(--text); font-weight: 700; }
.wz-staff-total { color: var(--brand-2); }

/* ═══ NPCs — builder (passo do wizard) ═══ */
.npc-toggle { display: flex; gap: .5rem; }
.npc-seg {
  flex: 1; padding: .6rem .8rem; border-radius: 10px; cursor: pointer;
  border: 1.5px solid var(--border); background: var(--panel-2); color: var(--muted);
  font-family: inherit; font-size: .9rem; font-weight: 700; transition: all .15s;
}
.npc-seg:hover { border-color: var(--brand-2); }
.npc-seg.active { border-color: var(--brand-2); background: color-mix(in srgb, var(--brand-2) 16%, var(--panel)); color: var(--text); }

.npc-listwrap { display: flex; flex-direction: column; gap: .7rem; margin-top: 1rem; }
.npc-list { display: flex; flex-direction: column; gap: .7rem; }
.npc-card { border: 1px solid var(--border); border-radius: 12px; background: var(--panel-2); overflow: hidden; }
.npc-summary {
  display: flex; align-items: center; gap: .5rem; padding: .7rem .9rem; cursor: pointer;
  list-style: none; font-weight: 700; user-select: none;
  border-left: 3px solid var(--brand-2);
}
.npc-summary::-webkit-details-marker { display: none; }
.npc-summary::after { content: '▸'; margin-left: auto; color: var(--muted); transition: transform .15s; }
.npc-card[open] .npc-summary::after { transform: rotate(90deg); }
.npc-ico { font-size: 1.1rem; }
.npc-sum-name { color: var(--text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.npc-del {
  margin-left: .3rem; flex-shrink: 0; background: none; border: none; cursor: pointer;
  color: var(--muted); font-size: .9rem; padding: .15rem .35rem; border-radius: 4px; line-height: 1;
}
.npc-del:hover { background: color-mix(in srgb, var(--brand) 18%, transparent); color: var(--brand); }
.npc-body { padding: .3rem .9rem 1rem; display: flex; flex-direction: column; gap: .8rem; border-top: 1px solid var(--border); }
.npc-field { display: flex; flex-direction: column; gap: .3rem; }
.npc-flabel { font-size: .78rem; font-weight: 800; color: var(--text); }
.npc-fhint { margin: 0; font-size: .74rem; color: var(--muted); line-height: 1.4; }
.npc-ta-sm { min-height: 64px; }

/* ═══ NPCs — visualização (leitura) ═══ */
.npcv-list { display: flex; flex-direction: column; gap: .7rem; margin: .4rem 0; }
.step-npcv { margin: .5rem 0 .2rem; padding-left: .6rem; border-left: 2px dashed var(--border); }
.npcv-img { margin: .3rem 0; }
.npcv-img img { max-width: 100%; border-radius: 8px; border: 1px solid var(--border); display: block; }
.npcv-card { border: 1px solid var(--border); border-left: 3px solid var(--brand-2); border-radius: 10px; background: var(--panel-2); padding: .7rem .9rem; }
.npcv-head { display: flex; align-items: center; gap: .45rem; margin-bottom: .5rem; flex-wrap: wrap; }
.npcv-ico { font-size: 1.15rem; }
.npcv-name { font-size: 1.02rem; color: var(--text); }
.npcv-role { font-size: .74rem; font-weight: 700; color: var(--brand-2); background: color-mix(in srgb, var(--brand-2) 14%, transparent); border-radius: 99px; padding: .1rem .55rem; }
.npcv-body { display: flex; flex-direction: column; gap: .35rem; }
.npcv-line { display: flex; gap: .5rem; font-size: .88rem; line-height: 1.5; }
.npcv-line-lbl { flex: 0 0 auto; font-weight: 700; color: var(--muted); white-space: nowrap; }
.npcv-line-val { color: var(--text); white-space: pre-wrap; }
@media (max-width: 480px) { .npcv-line { flex-direction: column; gap: .1rem; } }

.glossary-item p { margin: .2rem 0 0; }

/* ── #7 Revisão de erros (reusa .quiz-opts/.quiz-opt) ── */
.err-review .quiz-opts { display: grid; gap: .5rem; margin-top: .7rem; }
.err-review .quiz-opt.correct { border-color: var(--call); background: rgba(33,192,122,.14); }
.err-review .quiz-opt.wrong { border-color: #e0564a; background: rgba(224,86,74,.14); }

/* ── #50 Feedback rápido do mentor ── */
.quick-fb { display: flex; flex-wrap: wrap; gap: .35rem; margin: .4rem 0 .5rem; }
.quick-fb-chip {
  font: inherit; font-size: .74rem; cursor: pointer; border: 1px dashed var(--border);
  background: var(--panel-2); color: var(--muted); border-radius: 99px; padding: .22rem .6rem;
}
.quick-fb-chip:hover { color: var(--text); border-color: var(--brand-2); }

/* ── #4 Regra/Foco da semana ── */
.principle.week-focus { border-color: var(--accent); box-shadow: inset 0 0 0 1px rgba(255,203,5,.25); }
.week-focus-tag { display: inline-block; font-size: .62rem; font-weight: 800; color: #06231a; background: var(--accent); border-radius: 99px; padding: .08rem .5rem; margin-bottom: .25rem; }

/* ── #13 Moedas + Loja ── */
.coin-chip { display: inline-flex; align-items: center; gap: .2rem; font-weight: 800; font-size: .82rem; cursor: pointer; background: var(--panel-2); border: 1px solid var(--border); border-radius: 99px; padding: .12rem .55rem; }
.coin-chip .coin-num { color: var(--accent); }
.shop-list { display: grid; gap: .5rem; margin: .4rem 0 .8rem; }
.shop-cat { display: block; margin: .9rem 0 .1rem; }
.shop-cat:first-of-type { margin-top: .3rem; }
.shop-item { display: flex; align-items: center; gap: .8rem; border: 1px solid var(--border); border-radius: 10px; padding: .6rem .8rem; background: var(--panel); }
.shop-ico { width: 40px; height: 40px; flex: 0 0 auto; object-fit: contain; image-rendering: pixelated; display: grid; place-items: center; }
.shop-ico.shop-emoji { font-size: 1.7rem; }
.shop-owned { display: inline-block; margin-top: .2rem; font-size: .7rem; font-weight: 800; color: var(--accent); }
.shop-item .shop-main { flex: 1 1 auto; min-width: 0; }
.shop-item .shop-main strong { display: block; }
.shop-item .shop-main p { margin: .15rem 0 0; }

/* ══ 🛒 Loja estilo MMO (base: exemplo.png) ══════════════════ */
/* Quando o modal hospeda a loja, ela VIRA a janela (sem moldura dupla). */
.modal:has(.shopx) { max-width: 660px; padding: 0; background: transparent; border: none; box-shadow: none; overflow: visible; }
.shopx {
  --sx-line: #2f5aa8; --sx-cyan: #5fc6ff; --sx-gold: #ffd45e;
  display: flex; flex-direction: column; gap: .7rem; color: #eaf2ff;
  background: linear-gradient(180deg, #12244a 0%, #0d1830 100%);
  border: 2px solid var(--sx-line); border-radius: 14px; padding: .9rem;
  box-shadow: inset 0 0 0 1px rgba(95,198,255,.25), 0 14px 44px rgba(0,0,0,.55);
  max-height: 86vh;
}
.shopx-bar { display: flex; align-items: center; justify-content: space-between; gap: .6rem; }
.shopx-title {
  display: flex; align-items: center; gap: .4rem; font-family: var(--font-display); font-weight: 800; font-size: 1.02rem;
  background: #0b1730; border: 1px solid var(--sx-line); border-radius: 999px; padding: .32rem .85rem;
}
.shopx-gold {
  font-weight: 800; color: var(--sx-gold); white-space: nowrap;
  background: rgba(0,0,0,.25); border: 1px solid var(--sx-line); border-radius: 999px; padding: .32rem .75rem;
}
.shopx-tabs { display: flex; flex-wrap: wrap; gap: .35rem; border-bottom: 1px solid var(--sx-line); }
.shopx-tab {
  border: 1px solid var(--sx-line); border-bottom: none; background: rgba(20,40,80,.55); color: #cfe0ff; cursor: pointer;
  border-radius: 9px 9px 0 0; padding: .45rem .75rem; font-weight: 700; font-size: .84rem;
  transition: background var(--dur-fast), color var(--dur-fast);
}
.shopx-tab:hover { background: rgba(50,90,168,.5); color: #fff; }
.shopx-tab.on { background: linear-gradient(180deg, #3a6ac0, #24467f); color: #fff; box-shadow: inset 0 -3px 0 var(--sx-cyan); }
.shopx-grid {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: .5rem; overflow-y: auto; padding: .15rem;
  min-height: 180px; max-height: 46vh; overscroll-behavior: contain;
}
@media (max-width: 560px) { .shopx-grid { grid-template-columns: repeat(2, 1fr); } }
.shopx-card {
  position: relative; display: flex; flex-direction: column; align-items: center; gap: .25rem; cursor: pointer;
  background: linear-gradient(180deg, rgba(30,55,105,.55), rgba(14,28,58,.7)); border: 1px solid var(--sx-line);
  border-radius: 10px; padding: .7rem .5rem; color: #eaf2ff; min-height: 108px;
  transition: border-color var(--dur-fast), transform var(--dur-fast), box-shadow var(--dur-fast);
}
.shopx-card:hover { transform: translateY(-2px); border-color: var(--sx-cyan); }
.shopx-card.sel { border-color: var(--sx-cyan); box-shadow: 0 0 0 2px var(--sx-cyan), 0 0 16px rgba(95,198,255,.4); background: linear-gradient(180deg, rgba(48,90,168,.7), rgba(20,40,80,.85)); }
.shopx-card.equipped { border-color: var(--sx-gold); }
.shopx-ico { width: 44px; height: 44px; object-fit: contain; image-rendering: pixelated; display: grid; place-items: center; }
.shopx-ico.shopx-emoji { font-size: 2rem; }
.shopx-name { font-size: .8rem; font-weight: 700; text-align: center; line-height: 1.15; }
.shopx-price { font-size: .82rem; font-weight: 800; color: var(--sx-gold); }
.shopx-price.owned { color: var(--sx-cyan); }
.shopx-owns { position: absolute; top: .3rem; right: .4rem; font-size: .68rem; font-weight: 800; color: #cfe6ff; background: rgba(0,0,0,.42); border-radius: 6px; padding: 0 .3rem; }
.shopx-boost { position: absolute; top: .3rem; left: .4rem; font-size: .62rem; font-weight: 800; color: #8affc0; }
.shopx-foot {
  border-top: 1px solid var(--sx-line); padding-top: .6rem; margin-top: auto;
  display: flex; align-items: flex-end; justify-content: space-between; gap: .8rem; flex-wrap: wrap;
}
.shopx-info { flex: 1 1 58%; min-width: 200px; }
.shopx-fname { font-family: var(--font-display); font-weight: 800; font-size: 1rem; color: #fff; }
.shopx-fdesc { margin: .2rem 0; font-size: .82rem; color: #bcd0f0; }
.shopx-frow { display: flex; gap: 1rem; flex-wrap: wrap; font-size: .82rem; font-weight: 700; color: #dfe9ff; }
.shopx-hint { color: #aac2ee; font-size: .85rem; margin: .2rem 0; }
.shopx-active { color: #8affc0; font-size: .8rem; margin: .2rem 0 0; }
.shopx-actions { display: flex; gap: .5rem; flex: 0 0 auto; }

/* Redesign responsivo da vitrine: mais espaço para a grade, hierarquia clara
   no rodapé e controles de quantidade sem quebrar o modal em telas pequenas. */
.modal:has(.shopx) {
  width: min(920px, 96vw); max-width: min(920px, 96vw); padding: 0;
}
.shopx {
  width: 100%; max-height: min(88vh, 820px); gap: .8rem; padding: 1rem;
  background:
    radial-gradient(120% 80% at 0% 0%, rgba(95,198,255,.16), transparent 52%),
    linear-gradient(145deg, #132d5b 0%, #0d1d3c 55%, #09152c 100%);
  border-color: #3f72c7; box-shadow: inset 0 0 0 1px rgba(255,255,255,.06), 0 18px 55px rgba(0,0,0,.62);
}
.shopx-bar { align-items: flex-start; padding: .1rem .1rem 0; }
.shopx-heading { display: flex; min-width: 0; flex-direction: column; gap: .18rem; }
.shopx-title { width: fit-content; max-width: 100%; }
.shopx-subtitle { padding-left: .35rem; color: #a8c4ee; font-size: .76rem; }
.shopx-gold { box-shadow: 0 0 0 1px rgba(255,212,94,.08), 0 4px 14px rgba(0,0,0,.18); }
.shopx-tabs { overflow-x: auto; flex-wrap: nowrap; padding: .1rem .1rem 0; scrollbar-width: thin; }
.shopx-tab { flex: 0 0 auto; white-space: nowrap; }
.shopx-grid {
  grid-template-columns: repeat(4, minmax(0, 1fr)); gap: .65rem; min-height: 210px; max-height: 48vh;
  padding: .25rem; scrollbar-color: #4678c9 #0b1831;
}
.shopx-card { min-width: 0; min-height: 132px; padding: .8rem .55rem .65rem; }
.shopx-card:focus-visible, .shopx-tab:focus-visible, .shopx-qty-btn:focus-visible, .shopx-qty-input:focus-visible {
  outline: 2px solid var(--sx-cyan); outline-offset: 2px;
}
.shopx-name { max-width: 100%; overflow-wrap: anywhere; }
.shopx-foot {
  align-items: stretch; padding: .85rem .25rem .1rem; gap: 1rem;
  background: linear-gradient(180deg, rgba(6,16,35,.18), rgba(6,16,35,.42));
}
.shopx-info { min-width: min(320px, 100%); }
.shopx-fname { font-size: 1.08rem; }
.shopx-fdesc { max-width: 62ch; line-height: 1.42; }
.shopx-actions { align-items: stretch; justify-content: flex-end; flex-wrap: wrap; }
.shopx-actions .btn { min-height: 2.55rem; white-space: nowrap; }
.shopx-qty {
  display: flex; align-items: center; flex-wrap: wrap; gap: .42rem; margin-top: .7rem; padding-top: .65rem;
  border-top: 1px solid rgba(95,198,255,.2);
}
.shopx-qty-label { color: #c9dcff; font-size: .76rem; font-weight: 800; text-transform: uppercase; letter-spacing: .04em; }
.shopx-qty-btn {
  width: 2rem; height: 2rem; border: 1px solid #4a78c1; border-radius: 8px; cursor: pointer;
  color: #eff7ff; background: #1b3b73; font: 800 1.05rem/1 inherit; transition: background var(--dur-fast), transform var(--dur-fast);
}
.shopx-qty-btn:hover { background: #2b5bab; transform: translateY(-1px); }
.shopx-qty-input {
  width: 3.4rem; height: 2rem; padding: 0 .25rem; border: 1px solid #4a78c1; border-radius: 8px;
  color: #fff; background: #0a1934; font: 800 .9rem/1 inherit; text-align: center;
}
.shopx-total { margin-left: auto; color: var(--sx-gold); font-size: .86rem; white-space: nowrap; }
@media (max-width: 720px) {
  .shopx-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .shopx-foot { flex-direction: column; }
  .shopx-actions { width: 100%; }
  .shopx-actions .btn { flex: 1 1 9rem; }
}
@media (max-width: 560px) {
  .modal:has(.shopx) { width: 100vw; max-width: 100vw; }
  .shopx { max-height: 92vh; border-radius: 12px; padding: .75rem; }
  .shopx-bar { gap: .45rem; flex-wrap: wrap; }
  .shopx-gold { margin-left: auto; }
  .shopx-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); min-height: 170px; max-height: 43vh; gap: .45rem; }
  .shopx-card { min-height: 120px; padding: .65rem .4rem .55rem; }
  .shopx-ico { width: 40px; height: 40px; }
  .shopx-foot { gap: .65rem; }
  .shopx-info { min-width: 0; }
  .shopx-frow { gap: .5rem; font-size: .76rem; }
  .shopx-qty { gap: .3rem; }
  .shopx-total { width: 100%; margin-left: 0; }
}

/* ══ 🛍️ Loja — redesign visual final ═══════════════════════════
   A vitrine usa uma linguagem própria: clara, compacta e com ações menores
   que os botões gerais do portal. Mantemos os nomes shopx para não quebrar
   estado, quantidade e seleção já existentes. */
.modal:has(.shopx) {
  width: min(980px, calc(100vw - 2rem)); max-width: min(980px, calc(100vw - 2rem));
  max-height: none; padding: 0; background: transparent; border: 0; box-shadow: none; overflow: visible;
}
.shopx {
  --sx-ink: #edf5ff; --sx-muted: #a9bddb; --sx-line: #315487;
  --sx-brand: #f05245; --sx-brand-dark: #ff8b72; --sx-gold: #ffd45e;
  --sx-blue: #152c55; --sx-blue-strong: #23477d;
  display: flex; flex-direction: column; gap: .8rem; width: 100%; max-height: min(88vh, 820px);
  padding: 1rem; overflow: hidden; color: var(--sx-ink);
  background:
    radial-gradient(600px 220px at 8% -10%, rgba(255, 212, 94, .13), transparent 70%),
    linear-gradient(145deg, #152d58 0%, #102344 55%, #0c1a34 100%);
  border: 1px solid #3a66a2; border-radius: 22px;
  box-shadow: 0 24px 70px rgba(0, 0, 0, .62), inset 0 1px 0 rgba(255,255,255,.08);
}
.shopx-bar { display: flex; align-items: center; justify-content: space-between; gap: .8rem; padding: .15rem .25rem 0; }
.shopx-heading { display: flex; min-width: 0; flex-direction: column; gap: .16rem; }
.shopx-title {
  display: flex; align-items: center; gap: .45rem; width: fit-content; max-width: 100%; padding: 0;
  color: var(--sx-ink); background: transparent; border: 0; border-radius: 0;
  font-family: var(--font-display); font-size: 1.28rem; font-weight: 800; line-height: 1.1;
}
.shopx-tab-ico {
  display: grid; place-items: center; width: 2rem; height: 2rem; border-radius: 10px;
  color: #fff; background: linear-gradient(145deg, var(--sx-brand), #f15b45);
  box-shadow: 0 5px 12px rgba(217,54,43,.22); font-size: 1rem;
}
.shopx-subtitle { padding: 0; color: var(--sx-muted); font-size: .78rem; }
.shopx-gold {
  flex: 0 0 auto; padding: .45rem .72rem; border: 1px solid #806d35; border-radius: 12px;
  color: var(--sx-gold); background: rgba(9, 22, 45, .72); box-shadow: none; font-size: .82rem; font-weight: 800;
}
.shopx-tabs {
  display: flex; flex-wrap: nowrap; gap: .25rem; overflow-x: auto; padding: .3rem;
  border: 1px solid var(--sx-line); border-radius: 14px; background: rgba(7, 20, 42, .56); scrollbar-width: thin;
}
.shopx-tab {
  flex: 0 0 auto; border: 0; border-radius: 10px; padding: .42rem .62rem; cursor: pointer;
  color: #b5c9e7; background: transparent; font: 700 .76rem/1 inherit; white-space: nowrap;
  transition: background .16s ease, color .16s ease, box-shadow .16s ease, transform .16s ease;
}
.shopx-tab:hover { color: #fff; background: rgba(74, 125, 200, .35); }
.shopx-tab.on {
  color: #fff; background: linear-gradient(180deg, #3b6db1, #294f88); box-shadow: 0 2px 9px rgba(0,0,0,.22), inset 0 -2px 0 var(--sx-brand);
}
.shopx-grid {
  display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: .55rem; min-height: 180px;
  max-height: 42vh; padding: .15rem; overflow-y: auto; overscroll-behavior: contain; scrollbar-color: #bbcbe0 transparent;
}
.shopx-card {
  position: relative; display: flex; min-width: 0; min-height: 118px; align-items: center; justify-content: center;
  flex-direction: column; gap: .3rem; padding: .62rem .45rem .55rem; border: 1px solid var(--sx-line);
  border-radius: 14px; cursor: pointer; color: var(--sx-ink); background: linear-gradient(180deg, rgba(35, 70, 125, .78), rgba(18, 40, 78, .9));
  box-shadow: 0 2px 9px rgba(0,0,0,.2), inset 0 1px 0 rgba(255,255,255,.05); font: inherit;
  transition: border-color .16s ease, transform .16s ease, box-shadow .16s ease, background .16s ease;
}
.shopx-card:hover { transform: translateY(-2px); border-color: #76b4f3; box-shadow: 0 8px 18px rgba(0,0,0,.32); }
.shopx-card.sel { border-color: var(--sx-brand); background: linear-gradient(180deg, #315f9e, #1e4075); box-shadow: 0 0 0 2px rgba(240,82,69,.28), 0 8px 18px rgba(0,0,0,.3); }
.shopx-card.equipped { border-color: #e3bb4e; }
.shopx-ico {
  width: 42px; height: 42px; padding: .22rem; object-fit: contain; image-rendering: pixelated;
  border-radius: 12px; background: rgba(7, 20, 42, .5); display: grid; place-items: center;
}
.shopx-ico.shopx-emoji { padding: 0; color: #ffd45e; background: transparent; font-size: 1.8rem; }
.shopx-name { max-width: 100%; overflow-wrap: anywhere; color: #f1f6ff; font-size: .75rem; font-weight: 800; line-height: 1.15; text-align: center; }
.shopx-price { padding: .12rem .38rem; border-radius: 99px; color: var(--sx-gold); background: rgba(64, 53, 16, .75); font-size: .7rem; font-weight: 800; }
.shopx-price.owned { color: #8affc0; background: rgba(20, 82, 59, .65); }
.shopx-owns { position: absolute; top: .35rem; right: .4rem; padding: .12rem .3rem; border-radius: 6px; color: #d8e9ff; background: rgba(5, 17, 36, .7); font-size: .62rem; font-weight: 800; }
.shopx-boost { position: absolute; top: .38rem; left: .4rem; color: #8affc0; font-size: .61rem; font-weight: 800; }
.shopx-foot {
  display: flex; align-items: center; justify-content: space-between; gap: .8rem; flex-wrap: wrap;
  margin-top: .05rem; padding: .75rem; border: 1px solid #315b94; border-radius: 16px;
  background: linear-gradient(110deg, rgba(21, 51, 95, .95), rgba(15, 34, 68, .98));
}
.shopx-info { flex: 1 1 58%; min-width: 230px; }
.shopx-fname { color: #fff; font-family: var(--font-display); font-size: 1rem; font-weight: 800; }
.shopx-fdesc { max-width: 62ch; margin: .18rem 0 .35rem; color: #b8cae4; font-size: .78rem; line-height: 1.38; }
.shopx-frow { display: flex; flex-wrap: wrap; gap: .7rem; color: #d6e3f6; font-size: .74rem; font-weight: 800; }
.shopx-hint { margin: .2rem 0; color: #b5c9e7; font-size: .74rem; line-height: 1.35; }
.shopx-active { margin: .2rem 0 0; color: #8affc0; font-size: .74rem; font-weight: 700; }
.shopx-actions { display: flex; flex: 0 0 auto; align-items: center; justify-content: flex-end; gap: .4rem; flex-wrap: wrap; }
.shopx-actions .btn {
  min-height: 34px; padding: .42rem .68rem; border-radius: 10px; font: 800 .75rem/1 inherit; white-space: nowrap;
  box-shadow: none;
}
.shopx-actions .btn-primary { color: #fff; background: linear-gradient(180deg, #e34b3e, #c82f27); }
.shopx-actions .btn-ghost { color: #d2e1f5; border-color: #5275a8; background: rgba(7, 20, 42, .3); }
.shopx-actions .btn:hover { transform: translateY(-1px); box-shadow: 0 4px 10px rgba(0,0,0,.24); }
.shopx-qty {
  display: flex; align-items: center; flex-wrap: wrap; gap: .3rem; margin-top: .52rem; padding-top: .5rem;
  border-top: 1px solid #315b94;
}
.shopx-qty-label { margin-right: .15rem; color: #b5c9e7; font-size: .67rem; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; }
.shopx-qty-btn {
  display: grid; place-items: center; width: 1.75rem; height: 1.75rem; padding: 0; border: 1px solid #c1d2e8;
  border-radius: 8px; cursor: pointer; color: #eaf3ff; background: #1b3b73; font: 800 .95rem/1 inherit; transition: background .16s, border-color .16s;
}
.shopx-qty-btn:hover { border-color: #76b4f3; background: #2b5bab; transform: none; }
.shopx-qty-input {
  width: 2.8rem; height: 1.75rem; padding: 0 .2rem; border: 1px solid #c1d2e8; border-radius: 8px;
  color: #edf5ff; background: #0a1934; font: 800 .78rem/1 inherit; text-align: center;
}
.shopx-total { margin-left: auto; color: var(--sx-gold); font-size: .76rem; white-space: nowrap; }
.shopx-foot > .shopx-info:only-child { min-height: 38px; display: flex; align-items: center; }
.shopx-foot > .shopx-info:only-child .shopx-hint { margin: 0; }
@media (max-width: 820px) {
  .shopx-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}
@media (max-width: 650px) {
  .modal:has(.shopx) { width: calc(100vw - 1rem); max-width: calc(100vw - 1rem); }
  .shopx { max-height: calc(100dvh - 1rem); padding: .7rem; border-radius: 17px; }
  .shopx-bar { align-items: flex-start; }
  .shopx-title { font-size: 1.08rem; }
  .shopx-tab-ico { width: 1.75rem; height: 1.75rem; }
  .shopx-gold { padding: .38rem .55rem; font-size: .74rem; }
  .shopx-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); max-height: 40vh; gap: .42rem; }
  .shopx-card { min-height: 108px; padding: .5rem .3rem; }
  .shopx-ico { width: 36px; height: 36px; }
  .shopx-foot { align-items: stretch; flex-direction: column; padding: .65rem; }
  .shopx-info { min-width: 0; }
  .shopx-actions { width: 100%; justify-content: stretch; }
  .shopx-actions .btn { flex: 1 1 auto; }
}
@media (max-width: 420px) {
  .shopx-bar { flex-wrap: wrap; }
  .shopx-gold { margin-left: auto; }
  .shopx-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); max-height: 38vh; }
}

/* ══ 🎒 Fase pré-mentoria (tela divertida antes de começar) ══════ */
/* ── Sala de espera (pré-mentoria do aluno + central de prep. da equipe) ── */
@keyframes pmBob { 0%,100% { transform: translateY(0) rotate(-3deg); } 50% { transform: translateY(-6px) rotate(3deg); } }
@keyframes wrShake {
  0%, 58%, 92%, 100% { transform: rotate(0); }
  62% { transform: rotate(-15deg); } 68% { transform: rotate(15deg); }
  74% { transform: rotate(-11deg); } 80% { transform: rotate(11deg); } 86% { transform: rotate(-5deg); }
}
@keyframes wrFloat { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-16px); } }

.waitroom {
  position: relative; overflow: hidden; text-align: center;
  display: flex; flex-direction: column; gap: 1.6rem;
  padding: 1.9rem 1.2rem 1rem; border-radius: var(--radius);
  background: radial-gradient(120% 90% at 50% -10%, color-mix(in srgb, var(--accent) 14%, var(--panel)), var(--panel) 70%);
  border: 1px solid var(--border);
}
.waitroom > *:not(.wr-bg) { position: relative; z-index: 1; }
/* Pokémon flutuando ao fundo (decorativos, bem suaves) */
.wr-bg { position: absolute; inset: 0; z-index: 0; pointer-events: none; overflow: hidden; }
.wr-poke {
  position: absolute; height: auto; opacity: .17; pointer-events: none;
  filter: drop-shadow(0 4px 7px rgba(0,0,0,.25));
  animation: wrFloat 12s ease-in-out infinite;
}
.waitroom-staff { background: radial-gradient(120% 90% at 50% -10%, color-mix(in srgb, var(--brand, #6c5ce7) 16%, var(--panel)), var(--panel) 70%); }

.wr-hero { display: flex; flex-direction: column; align-items: center; gap: .6rem; }
.wr-title { margin: 0; font-family: var(--font-display); font-size: clamp(1.3rem, 4.5vw, 1.6rem); }
.wr-sub { margin: 0 auto; max-width: 48ch; color: var(--muted); font-size: .93rem; line-height: 1.5; }

/* Poké Ball em CSS */
.wr-ball {
  width: 88px; height: 88px; border-radius: 50%; margin: .3rem auto .1rem; position: relative;
  background: linear-gradient(#ef5350 0 47%, #141414 47% 53%, #fafafa 53% 100%);
  border: 4px solid #141414;
  box-shadow: 0 9px 20px rgba(0,0,0,.28), inset -8px -8px 0 rgba(0,0,0,.10), inset 8px 8px 0 rgba(255,255,255,.12);
  animation: wrShake 3s ease-in-out infinite; transform-origin: 50% 50%;
}
.wr-ball::after {
  content: ''; position: absolute; top: 50%; left: 50%; transform: translate(-50%,-50%);
  width: 25px; height: 25px; border-radius: 50%; background: #fafafa; border: 4px solid #141414;
  box-shadow: 0 0 0 3px #fafafa;
}
.wr-ball.master { background: linear-gradient(#7b41c9 0 47%, #141414 47% 53%, #fafafa 53% 100%); }
.wr-ball.master::before {
  content: 'M'; position: absolute; top: 8px; left: 50%; transform: translateX(-50%);
  color: #f3c6ff; font: 800 14px/1 var(--font-display, sans-serif); z-index: 2;
}

/* Contagem regressiva (aluno) */
.wr-count {
  align-self: center; min-width: 240px; max-width: 350px;
  display: flex; flex-direction: column; gap: .25rem; padding: 1.15rem 1.7rem; border-radius: 18px;
  background: linear-gradient(160deg, color-mix(in srgb, var(--accent) 20%, var(--panel)), var(--panel));
  border: 2px solid color-mix(in srgb, var(--accent) 45%, var(--border));
  box-shadow: 0 6px 20px rgba(0,0,0,.14);
}
.wr-count-label { font-size: .68rem; letter-spacing: .16em; text-transform: uppercase; color: var(--muted); font-weight: 800; }
.wr-count-big { font-family: var(--font-display); font-weight: 800; font-size: clamp(1.7rem, 7vw, 2.4rem); color: var(--accent); line-height: 1.08; }
.wr-count-sub { color: var(--text); font-size: .9rem; }
.wr-count-date { color: var(--muted); margin-top: .1rem; }
.wr-refresh { margin-top: .7rem; align-self: center; }

/* Balão de fala do Professor (sala de espera) */
.wr-prof { display: flex; align-items: flex-start; gap: .9rem; text-align: left; max-width: 580px; margin: 0 auto; width: 100%; }
.wr-prof-face { flex: 0 0 auto; animation: pmBob 3s ease-in-out infinite; }
.wr-bubble { position: relative; background: var(--panel); border: 1px solid var(--border); border-radius: 16px; padding: .75rem 1rem; flex: 1; min-width: 0; }
.wr-bubble::before { content: ''; position: absolute; left: -9px; top: 16px; border: 8px solid transparent; border-right-color: var(--border); }
.wr-bubble::after { content: ''; position: absolute; left: -7px; top: 17px; border: 7px solid transparent; border-right-color: var(--panel); }
.wr-bubble strong { display: block; font-size: .74rem; letter-spacing: .04em; text-transform: uppercase; color: var(--accent); margin-bottom: .2rem; }
.wr-bubble p { margin: 0; font-style: italic; line-height: 1.5; }

/* Sprite oficial do Professor (Oak) — compartilhado espera + conteúdo.
   Espelhado (scaleX -1) para o Prof. ficar VIRADO para o balão de fala. */
.prof-sprite { width: 118px; height: 118px; object-fit: contain; image-rendering: auto; transform: scaleX(-1); }
.prof-sprite.wr { width: 82px; height: 82px; }
.prof-fallback { display: inline-flex; align-items: center; justify-content: center; font-size: 3rem; transform: none; }
.prof-fallback.wr { font-size: 2.2rem; }

/* Missões / quests */
.wr-quests { text-align: left; max-width: 640px; margin: 0 auto; width: 100%; }
.wr-quests-title { display: block; font-weight: 800; margin-bottom: .8rem; font-size: 1.02rem; }
.wr-quest-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: .75rem; }
.wr-quest {
  display: flex; align-items: center; gap: .85rem; width: 100%; text-align: left;
  padding: .9rem 1rem; border-radius: 16px; border: 1px solid var(--border); background: var(--panel);
  cursor: pointer; color: var(--text); font: inherit;
  transition: transform .12s ease, box-shadow .12s ease, border-color .12s ease;
}
.wr-quest:hover { transform: translateY(-2px); box-shadow: 0 8px 18px rgba(0,0,0,.16); border-color: color-mix(in srgb, var(--accent) 50%, var(--border)); }
.wr-quest.req { border-color: color-mix(in srgb, var(--accent) 55%, var(--border)); background: color-mix(in srgb, var(--accent) 8%, var(--panel)); }
.wr-quest-ico { font-size: 1.6rem; flex: 0 0 auto; }
.wr-quest-body { display: flex; flex-direction: column; gap: .12rem; min-width: 0; }
.wr-quest-body b { font-size: .96rem; }
.wr-quest-body span { font-size: .79rem; color: var(--muted); line-height: 1.4; }
.wr-quest-badge { font-size: .58rem; font-weight: 800; color: #fff; border-radius: 999px; padding: .1rem .5rem; margin-left: .45rem; vertical-align: middle; letter-spacing: .03em; text-transform: uppercase; }
.wr-quest-badge.req { background: var(--brand); }   /* vermelho Pokébola = importante */
.wr-quest-badge.rec { background: #2e9e5b; }         /* verde = recomendado */
.wr-quest-arrow { margin-left: auto; color: var(--muted); font-size: 1.4rem; flex: 0 0 auto; }
.wr-foot { margin: .3rem 0 0; font-size: .84rem; color: var(--muted); }

/* ── Prof. Carvalho "narrando" o conteúdo do dia (mentorado) ── */
.prof-say { display: flex; gap: 1rem; align-items: flex-start; text-align: left; margin: .5rem 0 .2rem; }
.prof-avatar { flex: 0 0 auto; position: sticky; top: .5rem; }
.prof-bubble {
  position: relative; flex: 1; min-width: 0;
  background: color-mix(in srgb, var(--accent) 5%, var(--panel));
  border: 1px solid var(--border); border-radius: 18px; padding: 1rem 1.15rem;
}
.prof-bubble::before { content: ''; position: absolute; left: -10px; top: 24px; border: 9px solid transparent; border-right-color: var(--border); }
.prof-bubble::after { content: ''; position: absolute; left: -8px; top: 25px; border: 8px solid transparent; border-right-color: color-mix(in srgb, var(--accent) 5%, var(--panel)); }
.prof-name { display: block; font-size: .72rem; font-weight: 800; letter-spacing: .05em; text-transform: uppercase; color: var(--accent); margin-bottom: .4rem; }
.prof-lead { margin: 0 0 .5rem; font-style: italic; color: var(--muted); }
.prof-bubble > .md-content { margin: 0; }

@media (max-width: 560px) {
  .prof-say { flex-direction: column; align-items: center; gap: .3rem; }
  .prof-avatar { position: static; }
  .prof-bubble { width: 100%; }
  .prof-bubble::before { left: 50%; top: -10px; transform: translateX(-50%); border-right-color: transparent; border-bottom-color: var(--border); }
  .prof-bubble::after { left: 50%; top: -8px; transform: translateX(-50%); border-right-color: transparent; border-bottom-color: color-mix(in srgb, var(--accent) 5%, var(--panel)); }
}

@media (prefers-reduced-motion: reduce) {
  .wr-ball, .wr-prof-face, .wr-poke { animation: none; }
}
/* Molduras de avatar (cosméticos da loja) */
#user-avatar.frame-gold { border: 2px solid var(--accent); box-shadow: 0 0 0 2px rgba(255,203,5,.35); border-radius: 50%; }
#user-avatar.frame-shiny { border: 2px solid #ffe27a; border-radius: 50%; animation: shiny-glow 2.2s ease-in-out infinite; }

/* ── #29/#30 Discussões (comentários + mural) ── */
.day-comments { margin-top: 1rem; border-top: 1px solid var(--border); padding-top: .8rem; }
.day-comments textarea, .mural-new textarea, .mural-thread textarea { width: 100%; min-height: 64px; resize: vertical; margin-top: .5rem; }
.dc-list { display: grid; gap: .5rem; margin: .5rem 0; }
.dc-item { border: 1px solid var(--border); border-radius: 10px; padding: .5rem .7rem; }
.dc-head { display: flex; align-items: center; gap: .5rem; flex-wrap: wrap; }
.dc-head strong { font-size: .9rem; }
.dc-tag { font-size: .6rem; font-weight: 800; color: #06231a; background: var(--accent); border-radius: 99px; padding: .05rem .4rem; }
.dc-time { font-size: .68rem; color: var(--muted); }
.dc-del { margin-left: auto; background: none; border: none; color: var(--muted); cursor: pointer; font-size: .85rem; }
.dc-del:hover { color: #e0564a; }
.dc-body { margin: .3rem 0 0; font-size: .9rem; line-height: 1.5; white-space: pre-wrap; }
.dc-body.q-body { background: var(--panel-2); border-radius: 10px; padding: .6rem .7rem; }
.mural-list { display: grid; gap: .5rem; margin: .6rem 0; max-height: 44vh; overflow-y: auto; overscroll-behavior: contain; }
.mural-item { display: flex; align-items: center; gap: .7rem; width: 100%; text-align: left; font: inherit; color: inherit; cursor: pointer;
  background: var(--panel); border: 1px solid var(--border); border-radius: 10px; padding: .55rem .75rem; }
.mural-item:hover { border-color: var(--brand-2); }
.mural-item.resolved { opacity: .7; }
.mural-item .mural-main { display: flex; flex-direction: column; gap: .1rem; flex: 1 1 auto; min-width: 0; }
.mural-item .mural-meta { flex: 0 0 auto; font-size: .78rem; color: var(--muted); }
.mural-new { border: 1px dashed var(--border); border-radius: 10px; padding: .6rem .7rem; margin-bottom: .6rem; }
.mural-new input { width: 100%; }
.mural-q-head { display: flex; align-items: center; gap: .6rem; }
.mural-badge { font-size: .68rem; font-weight: 800; color: #06231a; background: var(--call); border-radius: 99px; padding: .1rem .5rem; }

/* ── #34 Feed da turma ── */
.feed-list { display: grid; gap: .45rem; margin: .6rem 0; max-height: 56vh; overflow-y: auto; overscroll-behavior: contain; }
.feed-item { display: flex; align-items: flex-start; gap: .6rem; border: 1px solid var(--border); border-radius: 10px; padding: .5rem .7rem; }
.feed-ico { font-size: 1.1rem; flex: 0 0 auto; }
.feed-main { flex: 1 1 auto; min-width: 0; }
.feed-text { margin: 0; font-size: .9rem; line-height: 1.4; }
.feed-time { font-size: .68rem; color: var(--muted); }

/* ── #44 Mapa de calor de dificuldade ── */
.heat-list { display: grid; gap: .5rem; margin: .6rem 0; max-height: 56vh; overflow-y: auto; overscroll-behavior: contain; }
.heat-item { display: grid; grid-template-columns: 1fr 120px 44px; align-items: center; gap: .6rem; border: 1px solid var(--border); border-radius: 10px; padding: .5rem .7rem; }
.heat-main { min-width: 0; display: flex; flex-direction: column; gap: .1rem; }
.heat-main strong { font-size: .9rem; }
.heat-bar { height: 10px; background: var(--panel-2); border-radius: 99px; overflow: hidden; }
.heat-fill { display: block; height: 100%; border-radius: 99px; }
.heat-pct { font-family: var(--font-pixel); font-size: .6rem; text-align: right; color: var(--muted); }
@media (max-width: 560px) { .heat-item { grid-template-columns: 1fr 70px 40px; } }

/* ── #36 Kudos ── */
.kudos-wrap { display: inline-flex; align-items: center; gap: .3rem; }
.kudos-count { font-size: .78rem; color: var(--muted); }
.kudos-btn { background: none; border: 1px solid var(--border); border-radius: 99px; cursor: pointer; font-size: .8rem; line-height: 1; padding: .12rem .35rem; }
.kudos-btn:hover { border-color: var(--brand-2); transform: scale(1.1); }
.kudos-btn:disabled { opacity: .5; cursor: default; }

/* ── Aba Comunidade (#14) ── */
.community-list { display: block; }
.community-grid { display: grid; gap: .6rem; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); margin-bottom: .4rem; content-visibility: auto; contain-intrinsic-size: auto 220px; }
.community-card { display: flex; align-items: center; gap: .8rem; width: 100%; text-align: left; font: inherit; color: inherit; cursor: pointer;
  background: var(--panel); border: 1px solid var(--border); border-radius: var(--radius); padding: .9rem 1rem; transition: border-color .15s, transform .08s; }
.community-card:hover { border-color: var(--brand-2); transform: translateY(-2px); }
.community-card .cc-ico { font-size: 1.6rem; flex: 0 0 auto; }
.community-card .cc-main { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: .1rem; }
.community-card .cc-go { color: var(--muted); font-size: 1.3rem; flex: 0 0 auto; }

/* ── Pokédex da Comunidade (redesign) ─────────────────────────────
   A aba inteira é emoldurada como um Pokédex vermelho: lente + luzes no
   topo, uma "tela" (LCD) com sub-abas por seção e a lista de features como
   entradas numeradas (Nº001…). Cores próprias (não seguem o tema do app). */
.dex-device {
  --dex-red: #e3350d; --dex-red-dark: #b21f00; --dex-red-hi: #ff6a3d;
  --dex-lcd: #9fb87f; --dex-lcd-2: #7f9d63; --dex-ink: #1c2a14;
  position: relative;
  background: linear-gradient(160deg, var(--dex-red-hi), var(--dex-red) 40%, var(--dex-red-dark));
  border: 2px solid var(--dex-red-dark);
  border-radius: 22px;
  padding: 1rem 1rem 1.15rem;
  box-shadow: var(--shadow), inset 0 2px 0 rgba(255,255,255,.28), inset 0 -6px 14px rgba(0,0,0,.25);
}
.dex-topbar { display: flex; align-items: center; gap: .8rem; padding: .1rem .2rem .9rem; }
.dex-lens {
  width: 46px; height: 46px; border-radius: 50%; flex: 0 0 auto;
  background: radial-gradient(circle at 34% 32%, #cdebff, #37a6e6 55%, #1c6fb0);
  border: 4px solid #f4f7fb;
  box-shadow: 0 0 0 2px var(--dex-red-dark), 0 2px 6px rgba(0,0,0,.4), inset 0 0 8px rgba(255,255,255,.6);
  position: relative;
}
.dex-lens::after { /* reflexo */
  content: ''; position: absolute; top: 8px; left: 9px; width: 12px; height: 8px;
  background: rgba(255,255,255,.85); border-radius: 50%; transform: rotate(-25deg);
}
.dex-lights { display: flex; gap: .4rem; flex: 0 0 auto; }
.dex-light { width: 11px; height: 11px; border-radius: 50%; box-shadow: inset 0 1px 2px rgba(255,255,255,.6), 0 1px 2px rgba(0,0,0,.35); }
.dex-light.red    { background: #ff5b5b; }
.dex-light.yellow { background: #ffd23f; }
.dex-light.green  { background: #4fdd7a; }
.dex-title {
  margin-left: auto; color: #fff; font-weight: 800; font-size: .82rem;
  letter-spacing: .06em; text-transform: uppercase; text-shadow: 0 1px 2px rgba(0,0,0,.45);
}
/* Tela / LCD */
.dex-screen {
  background: linear-gradient(180deg, var(--dex-lcd), var(--dex-lcd-2));
  border: 3px solid #16351f; border-radius: 12px;
  padding: .7rem .7rem .8rem;
  box-shadow: inset 0 2px 8px rgba(0,0,0,.35), inset 0 0 0 2px rgba(255,255,255,.25);
}
/* Sub-abas por seção */
.dex-tabs { display: flex; flex-wrap: wrap; gap: .35rem; margin-bottom: .7rem; }
.dex-tab {
  display: inline-flex; align-items: center; gap: .35rem; cursor: pointer;
  font: inherit; font-size: .82rem; font-weight: 700; color: var(--dex-ink);
  background: rgba(28,42,20,.14); border: 2px solid #2b4a2e; border-radius: 999px;
  padding: .28rem .7rem .28rem .4rem; transition: background .15s, transform .08s, color .15s;
}
.dex-tab:hover { transform: translateY(-1px); background: rgba(28,42,20,.24); }
.dex-tab.active { background: var(--dex-red); color: #fff; border-color: var(--dex-red-dark); }
.dex-tab-mon { width: 30px; height: 30px; image-rendering: pixelated; flex: 0 0 auto; }
/* Lista de entradas (features): Número › Ícone › Título */
.dex-list { display: flex; flex-direction: column; gap: .45rem; }
.dex-entry {
  display: flex; align-items: center; gap: .8rem; width: 100%; text-align: left;
  font: inherit; color: var(--dex-ink); cursor: pointer;
  background: rgba(28,42,20,.12); border: 2px solid rgba(22,53,31,.4);
  border-left: 5px solid var(--dex-red); border-radius: 10px;
  padding: .45rem .8rem; transition: background .15s, transform .08s, border-color .15s;
}
.dex-entry:hover { background: rgba(255,255,255,.35); transform: translateX(2px); border-left-color: var(--dex-red-hi); }
/* Número num "chip" escuro pra não sumir no verde */
.dex-num {
  font-family: ui-monospace, "Courier New", monospace; font-size: .8rem; font-weight: 700;
  flex: 0 0 auto; letter-spacing: .02em; color: #dfe7cf;
  background: #1c2a14; border-radius: 6px; padding: .18rem .4rem; white-space: nowrap;
}
.dex-mon-wrap { flex: 0 0 auto; width: 88px; height: 88px; display: grid; place-items: center; }
.dex-mon { width: 88px; height: 88px; image-rendering: pixelated; }
.dex-entry-title { flex: 1 1 auto; min-width: 0; font-size: 1.08rem; line-height: 1.2;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
/* Rodapé decorativo (d-pad + botões) */
.dex-foot { display: flex; align-items: center; justify-content: space-between; padding: .7rem .3rem 0; }
.dex-dpad {
  width: 34px; height: 34px; position: relative; opacity: .9;
  background:
    linear-gradient(#1f1f1f, #1f1f1f) center/12px 100% no-repeat,
    linear-gradient(#1f1f1f, #1f1f1f) center/100% 12px no-repeat;
}
.dex-btns { display: flex; gap: .5rem; }
.dex-btn { width: 16px; height: 16px; border-radius: 50%; box-shadow: inset 0 1px 2px rgba(255,255,255,.45), 0 1px 2px rgba(0,0,0,.35); }
.dex-btn.a { background: #ffd23f; }
.dex-btn.b { background: #2e7d32; }
@media (max-width: 560px) {
  .dex-device { padding: .8rem .7rem 1rem; border-radius: 18px; }
  .dex-title { font-size: .72rem; }
}

/* Resultado do quiz (batalha ao vivo) + CTA do Acervo */
.quiz-result { text-align: center; margin-top: 1rem; display: grid; gap: .5rem; justify-items: center; }
.quiz-result h2 { margin: 0; }
.archive-cta { display: flex; align-items: center; gap: .7rem; flex-wrap: wrap; margin-top: 1rem; padding-top: .8rem; border-top: 1px solid var(--border); }
.quiz-after { opacity: 0; transform: translateY(8px); transition: opacity .45s ease, transform .45s ease; }
.quiz-after.show { opacity: 1; transform: none; }
@media (max-width: 560px) {
  .bh-mon { width: 50px; height: 50px; }
  .bh-info { min-width: 80px; }
  .bh-name { font-size: .74rem; }
}

/* ═════════ POKÉDEX DE CONQUISTAS (aba Treinos) ═════════ */
.dex-wrap {
  grid-column: 1 / -1; background: linear-gradient(180deg, var(--panel), var(--bg-2));
  border: 1px solid var(--border); border-radius: var(--radius); padding: .9rem 1.1rem; box-shadow: var(--shadow-sm);
}
.dex-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(92px, 1fr)); gap: .55rem; max-height: 460px; overflow-y: auto; overscroll-behavior: contain; padding-right: .3rem; }
/* Perf: com 151 slots, só renderiza os que estão visíveis na rolagem interna
   (o resto reserva o espaço via contain-intrinsic-size e é pulado). */
.dex-slot { content-visibility: auto; contain-intrinsic-size: auto 118px; }
.dex-slot {
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: .15rem;
  min-height: 112px; padding: .55rem .3rem; border-radius: 12px; border: 1px solid var(--border);
  background: var(--bg); position: relative; transition: transform .12s ease;
}
.dex-slot.captured { border-color: var(--accent); box-shadow: inset 0 0 0 1px rgba(255, 203, 5, .3); }
.dex-slot.captured:hover { transform: translateY(-3px); }
.dex-slot.seen { border-style: dashed; }
.dex-slot.locked { opacity: .7; }
.dex-sprite { width: 56px; height: 56px; object-fit: contain; image-rendering: pixelated; filter: drop-shadow(0 3px 4px rgba(0, 0, 0, .5)); }
.dex-sprite.sil { filter: brightness(0) opacity(.5); }
.dex-num { font-family: var(--font-pixel); font-size: .5rem; color: var(--muted); }
.dex-nm { font-family: var(--font-display); font-weight: 700; font-size: .72rem; text-align: center; line-height: 1.1; }
.dex-slot.captured .dex-nm { color: var(--accent); }
.dex-q { font-family: var(--font-display); font-weight: 800; font-size: 1.8rem; color: var(--border); }

/* ═════════ OFENSIVA (STREAK) — chama tipo Duolingo ═════════ */
.streak-chip {
  display: inline-flex; align-items: center; gap: .28rem; font-family: var(--font-display); font-weight: 800;
  color: #ffb877; font-size: .88rem; padding: .26rem .62rem; border-radius: 999px;
  background: linear-gradient(180deg, rgba(255, 138, 61, .22), rgba(238, 21, 21, .12));
  border: 1px solid rgba(255, 138, 61, .5);
}
.streak-flame { filter: drop-shadow(0 0 5px rgba(255, 138, 61, .7)); animation: flame-flick 1.1s ease-in-out infinite; }
@keyframes flame-flick { 0%,100% { transform: scale(1) rotate(-2deg); } 50% { transform: scale(1.16) rotate(3deg); } }
.streak-num { color: #ffcf87; }
.streak-chip.bump { animation: streak-bump .8s cubic-bezier(.2, .9, .3, 1.5); }
@keyframes streak-bump { 0% { transform: scale(1); } 30% { transform: scale(1.4); } 100% { transform: scale(1); } }
@media (max-width: 620px) { .streak-num { display: none; } }

/* ═════════ SHINY (raro) — Pokédex ═════════ */
.dex-slot.shiny { border-color: #ffe27a; box-shadow: inset 0 0 0 1px rgba(255, 226, 122, .5), 0 0 14px rgba(255, 226, 122, .35); }
.dex-slot.shiny .dex-nm { color: #ffe27a; }
.dex-slot.shiny .dex-sprite { animation: shiny-glow 2.2s ease-in-out infinite; }
@keyframes shiny-glow {
  0%,100% { filter: drop-shadow(0 0 5px rgba(255, 226, 122, .6)) drop-shadow(0 3px 4px rgba(0, 0, 0, .5)); }
  50%     { filter: drop-shadow(0 0 12px rgba(180, 230, 255, .9)) drop-shadow(0 3px 4px rgba(0, 0, 0, .5)); }
}
.shiny-spark { position: absolute; top: .32rem; right: .4rem; font-size: .85rem; animation: spark-twinkle 1.6s ease-in-out infinite; }
@keyframes spark-twinkle { 0%,100% { opacity: .5; transform: scale(.85) rotate(0); } 50% { opacity: 1; transform: scale(1.2) rotate(20deg); } }

/* ═════════ CENTRO POKÉMON — animação de cura ═════════ */
.heal-overlay {
  position: fixed; inset: 0; z-index: 94; display: grid; place-items: center; cursor: pointer;
  background: radial-gradient(circle at 50% 42%, rgba(120, 200, 255, .35), rgba(4, 7, 14, .9));
  animation: cap-fade .25s ease both;
}
.heal-box {
  display: flex; flex-direction: column; align-items: center; gap: .9rem; padding: 1.6rem 2rem;
  background: linear-gradient(180deg, #f6fbff, #dcefff); border: 3px solid #7fd7ff; border-radius: 20px;
  box-shadow: 0 14px 32px rgba(0, 0, 0, .5); animation: lu-pop .5s cubic-bezier(.2, .9, .3, 1.4) both;
}
.heal-cross {
  width: 46px; height: 46px; display: grid; place-items: center; border-radius: 50%;
  background: #ee1515; color: #fff; font-size: 1.5rem; font-weight: 800; box-shadow: 0 3px 8px rgba(238, 21, 21, .4);
}
.heal-pad { display: flex; gap: 1rem; padding: .7rem 1.1rem; border-radius: 999px; background: #0e1626; box-shadow: inset 0 3px 8px rgba(0, 0, 0, .5); }
.heal-ball {
  width: 22px; height: 22px; border-radius: 50%; position: relative; overflow: hidden;
  background: #f6f7fb; border: 2px solid #111; animation: heal-pulse 1.4s ease-in-out infinite; animation-delay: var(--d, 0s);
}
.heal-ball::before { content: ''; position: absolute; inset: 0 0 50% 0; background: #ee1515; }
.heal-ball::after { content: ''; position: absolute; top: calc(50% - 1px); left: 0; right: 0; height: 2px; background: #111; }
@keyframes heal-pulse { 0%,100% { box-shadow: 0 0 0 0 rgba(127, 215, 255, 0); } 50% { box-shadow: 0 0 10px 3px rgba(127, 215, 255, .9); transform: translateY(-3px); } }
.heal-word { font-family: var(--font-display); font-weight: 800; color: #0e2740; font-size: 1.18rem; }
.heal-overlay.instant .heal-ball, .heal-overlay.instant .heal-box { animation: none; }
/* Enfermeira + Chansey na animação de cura */
.heal-nurses { display: flex; align-items: flex-end; justify-content: center; gap: .6rem; }
.heal-nurse { height: 132px; image-rendering: pixelated; }
.heal-nurse-emoji { font-size: 4.4rem; }
.heal-chansey { width: 92px; height: 92px; image-rendering: pixelated; object-fit: contain; animation: nurseBob 1.4s ease-in-out infinite; }

/* ═════════ CAPTURA — abrir a Pokébola (release) + shiny ═════════ */
.capture-beam, .capture-out { grid-row: 1; grid-column: 1; justify-self: center; align-self: center; }
.capture-beam {
  width: 120px; height: 260px; opacity: 0; transform: scaleY(0); transform-origin: center;
  background: linear-gradient(180deg, transparent, rgba(255, 255, 255, .55) 42%, rgba(127, 215, 255, .45) 60%, transparent);
  -webkit-mask: linear-gradient(180deg, transparent, #000 28%, #000 72%, transparent);
          mask: linear-gradient(180deg, transparent, #000 28%, #000 72%, transparent);
  animation: cap-beam .8s ease 2s both;
}
@keyframes cap-beam { 0% { opacity: 0; transform: scaleY(0); } 30% { opacity: .95; transform: scaleY(1); } 100% { opacity: 0; transform: scaleY(1); } }
.capture-out {
  width: 152px; height: 152px; object-fit: contain; opacity: 0;
  filter: drop-shadow(0 8px 12px rgba(0, 0, 0, .5)); animation: cap-out .7s cubic-bezier(.2, .9, .3, 1.5) 2.14s both;
}
@keyframes cap-out { 0% { opacity: 0; transform: scale(0) translateY(30px); } 60% { opacity: 1; } 100% { opacity: 1; transform: scale(1) translateY(-6px); } }
.capture-overlay.shiny .capture-rays { background: repeating-conic-gradient(from 0deg, rgba(255, 226, 122, .6) 0 6deg, transparent 6deg 18deg); }
.capture-overlay.shiny .capture-out { filter: drop-shadow(0 0 14px rgba(255, 226, 122, .9)) drop-shadow(0 8px 12px rgba(0, 0, 0, .5)); }
.capture-overlay.shiny .cap-word { color: #ffe27a; }
.cap-name { font-family: var(--font-display); font-weight: 700; color: var(--text); opacity: .9; }
.capture-overlay.instant .capture-beam { display: none; }
.capture-overlay.instant .capture-out { animation: none; opacity: 1; }

/* ═════════ MINIGAME: QUEM É ESSE POKÉMON? ═════════ */
.whos-body { max-width: 640px; margin: 0 auto; display: flex; flex-direction: column; gap: 1rem; }
.wt-hud { display: flex; justify-content: space-between; gap: .5rem; font-family: var(--font-display); font-weight: 700; }
.wt-round { color: var(--muted); } .wt-score { color: var(--accent); } .wt-streak { color: var(--deadline); }
.wt-time { color: var(--muted); font-variant-numeric: tabular-nums; }
.fq-next-hint { text-align: center; margin-top: .5rem; opacity: .8; }
/* Painel "já jogou hoje" (jogos 1×/dia) */
.daily-lock { display: grid; place-items: center; gap: .35rem; text-align: center; padding: 2.2rem 1rem; }
.daily-lock .dl-moon { font-size: 2.6rem; filter: drop-shadow(0 3px 8px rgba(0,0,0,.25)); }
.daily-lock h3 { margin: .2rem 0 0; font-family: var(--font-display); }
.wt-screen {
  position: relative; display: grid; place-items: center; min-height: 244px; padding: 1.4rem; border-radius: 16px; overflow: hidden;
  background: radial-gradient(120% 100% at 50% 0, rgba(127, 215, 255, .14), transparent 60%), linear-gradient(180deg, #0c1526, #0a1120);
  border: 1px solid var(--border); box-shadow: inset 0 0 40px rgba(0, 0, 0, .6);
}
.wt-q { position: absolute; top: .8rem; font-family: var(--font-display); font-weight: 800; color: #eaf0fb; opacity: .85; }
.wt-mon { width: 196px; height: 196px; object-fit: contain; image-rendering: pixelated; transition: filter .45s ease; filter: drop-shadow(0 6px 10px rgba(0, 0, 0, .5)); }
.wt-mon.silhouette { filter: brightness(0) drop-shadow(0 6px 10px rgba(0, 0, 0, .5)); }
.wt-mon.shine { animation: shiny-glow 1.8s ease-in-out infinite; }
.wt-mon.sprite-fallback { display: grid; place-items: center; font-size: 4rem; line-height: 1; filter: none !important; image-rendering: auto; }
.wt-options { display: grid; grid-template-columns: 1fr 1fr; gap: .6rem; }
.wt-opt {
  font-family: var(--font-display); font-weight: 700; font-size: .95rem; padding: .85rem 1rem; border-radius: 12px;
  border: 1px solid var(--border); background: var(--panel); color: var(--text); cursor: pointer;
  transition: border-color .15s, background .15s, transform .06s;
}
.wt-opt:not([disabled]):hover { border-color: var(--brand-2); background: var(--panel-2); transform: translateY(-2px); }
.wt-opt[disabled] { cursor: default; }
.wt-opt.right { border-color: var(--call); background: rgba(33, 192, 122, .16); color: #7CFC9B; }
.wt-opt.wrong { border-color: var(--brand); background: rgba(238, 21, 21, .16); }
.wt-reveal { display: flex; flex-direction: column; align-items: center; gap: .6rem; }
.wt-name { font-family: var(--font-display); font-weight: 800; font-size: 1.4rem; }
.wt-name.ok { color: var(--call); } .wt-name.no { color: var(--deadline); }
.wt-shiny { font-family: var(--font-display); font-weight: 800; color: #ffe27a; text-shadow: 0 0 12px rgba(255, 226, 122, .6); animation: spark-twinkle 1.4s ease-in-out infinite; }
@media (max-width: 560px) { .wt-options { grid-template-columns: 1fr; } .wt-mon { width: 150px; height: 150px; } }

/* ═════════ CARTÃO DE TREINADOR + EQUIPES ═════════ */
body { --team: var(--accent); }
body[data-team="instinct"] { --team: #ffcf3c; }
body[data-team="mystic"]   { --team: #4aa3ff; }
body[data-team="valor"]    { --team: #ff5a48; }
.user-avatar { border-color: var(--team); box-shadow: 0 0 8px color-mix(in srgb, var(--team) 45%, transparent); cursor: pointer; }
.topbar { box-shadow: 0 6px 22px rgba(3, 7, 18, .5), inset 0 3px 0 var(--team); }

.trainer-card { display: flex; flex-direction: column; gap: .9rem; --tc-accent: var(--accent); }
.trainer-card.team-instinct { --tc-accent: #ffcf3c; }
.trainer-card.team-mystic   { --tc-accent: #4aa3ff; }
.trainer-card.team-valor    { --tc-accent: #ff5a48; }
.tc-head {
  display: flex; align-items: center; gap: .9rem; padding: .9rem 1rem; border-radius: 14px; position: relative;
  background: linear-gradient(120deg, color-mix(in srgb, var(--tc-accent) 26%, var(--panel)), var(--panel-2));
  border: 1px solid var(--border); box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--tc-accent) 40%, transparent);
}
.tc-avatar {
  width: 64px; height: 64px; object-fit: contain; image-rendering: pixelated; border-radius: 50%; padding: 3px; flex: 0 0 auto;
  background: radial-gradient(circle at 50% 30%, var(--panel-2), var(--bg)); border: 2px solid var(--tc-accent);
}
.tc-who { flex: 1; } .tc-name { margin: 0; font-size: 1.2rem; } .tc-sub { color: var(--muted); font-size: .82rem; }
.tc-id { font-family: var(--font-pixel); font-size: .6rem; color: var(--tc-accent); }
.tc-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: .6rem; }
/* IMPORTANTE: escopado sob .tc-grid para NÃO vazar no cartão inline (que usa
   .tc-stats). Antes, esta regra sobrescrevia o chip translúcido bonito do
   cartão da Mentoria por uma caixa opaca var(--bg) — a "cor feia" do card. */
.tc-grid .tc-stat { display: flex; flex-direction: column; align-items: center; gap: .15rem; padding: .6rem .3rem; border-radius: 12px; background: var(--bg); border: 1px solid var(--border); }
.tc-val { font-family: var(--font-display); font-weight: 800; font-size: 1.15rem; color: var(--tc-accent); }
.tc-lbl { font-size: .66rem; color: var(--muted); text-transform: uppercase; letter-spacing: .04em; }
.tc-teams { display: flex; gap: .5rem; flex-wrap: wrap; }
.tc-team {
  font-family: var(--font-display); font-weight: 700; padding: .5rem .8rem; border-radius: 999px; cursor: pointer;
  border: 1px solid var(--border); background: var(--panel); color: var(--text);
}
.tc-team:hover { border-color: var(--tc); }
.tc-team.on { border-color: var(--tc); background: color-mix(in srgb, var(--tc) 22%, transparent); box-shadow: 0 0 0 1px var(--tc); color: #fff; }

.dex-counts { display: inline-flex; align-items: center; gap: .6rem; }
.shiny-count { font-family: var(--font-display); font-weight: 800; font-size: .8rem; color: #ffe27a; text-shadow: 0 0 8px rgba(255, 226, 122, .5); }

/* ═════════ EVOLUÇÃO CLÁSSICA (flash branco + morph) ═════════ */
.evo-overlay {
  position: fixed; inset: 0; z-index: 95; display: grid; place-items: center; cursor: pointer; overflow: hidden;
  background: radial-gradient(circle at 50% 45%, rgba(20, 30, 55, .85), rgba(2, 4, 10, .96)); animation: cap-fade .25s ease both;
}
.evo-stage { display: grid; place-items: center; width: min(82vw, 320px); height: 340px; position: relative; }
.evo-stage > * { grid-area: 1 / 1; }
.evo-shape {
  width: 180px; height: 180px; object-fit: contain; image-rendering: pixelated;
  filter: brightness(0) invert(1) drop-shadow(0 0 22px rgba(255, 255, 255, .9)); animation: evo-breathe 1s ease-in-out infinite;
}
@keyframes evo-breathe { 0%,100% { transform: scale(.92); } 50% { transform: scale(1.06); } }
.evo-final { width: 186px; height: 186px; object-fit: contain; opacity: 0; }
.evo-rays {
  width: 340px; height: 340px; border-radius: 50%; opacity: 0;
  background: repeating-conic-gradient(from 0deg, rgba(255, 255, 255, .5) 0 6deg, transparent 6deg 18deg);
  -webkit-mask: radial-gradient(circle, transparent 26%, #000 28%, #000 60%, transparent 66%);
          mask: radial-gradient(circle, transparent 26%, #000 28%, #000 60%, transparent 66%);
}
.evo-flash { width: 130vmax; height: 130vmax; border-radius: 50%; opacity: 0; background: radial-gradient(circle, #fff 0 40%, rgba(255, 255, 255, .6) 55%, transparent 70%); }
.evo-cap { display: flex; flex-direction: column; align-items: center; gap: .2rem; align-self: end; opacity: 0; }
.evo-word { font-family: var(--font-display); font-weight: 800; font-size: 1.8rem; color: var(--accent); text-shadow: 0 2px 0 #a67f00, 0 0 18px rgba(255, 203, 5, .5); }
.evo-sub { color: #cfe3ff; font-weight: 700; }
.evo-overlay.done .evo-shape { display: none; }
.evo-overlay.done .evo-rays { animation: lu-spin 10s linear infinite, cap-pop .5s ease both; }
.evo-overlay.done .evo-final { animation: evo-reveal .7s cubic-bezier(.2, .9, .3, 1.5) .25s both; }
.evo-overlay.done .evo-flash { animation: evo-flash .6s ease both; }
.evo-overlay.done .evo-cap { animation: cap-pop .5s ease .5s both; }
@keyframes evo-reveal { 0% { transform: scale(.4); opacity: 0; filter: brightness(3); } 60% { opacity: 1; } 100% { transform: scale(1); opacity: 1; filter: none; } }
@keyframes evo-flash { 0% { opacity: 0; transform: scale(.2); } 30% { opacity: 1; transform: scale(1); } 100% { opacity: 0; transform: scale(1.4); } }

/* ═════════ POP-UP DE TROFÉU (conquistas) ═════════ */
.trophy-pop {
  position: fixed; right: 1.2rem; bottom: 1.2rem; z-index: 96; display: flex; align-items: center; gap: .8rem;
  max-width: 340px; padding: .8rem 1rem; border-radius: 14px;
  background: linear-gradient(180deg, var(--panel-2), var(--panel)); border: 1px solid var(--accent);
  box-shadow: 0 12px 30px rgba(0, 0, 0, .5), 0 0 0 1px rgba(255, 203, 5, .2);
  transform: translateX(120%); opacity: 0; transition: transform .4s cubic-bezier(.2, .9, .3, 1.4), opacity .4s;
}
.trophy-pop.in { transform: none; opacity: 1; }
.tp-badge {
  width: 46px; height: 46px; flex: 0 0 auto; display: grid; place-items: center; border-radius: 12px;
  background: radial-gradient(circle at 50% 30%, #ffe27a, var(--accent)); box-shadow: inset 0 1px 0 rgba(255, 255, 255, .5);
}
.tp-ico { font-size: 1.4rem; }
.tp-kicker { font-family: var(--font-display); font-weight: 700; font-size: .62rem; text-transform: uppercase; letter-spacing: .06em; color: var(--accent); }
.tp-title { font-family: var(--font-display); font-weight: 800; font-size: .98rem; }
.tp-sub { color: var(--muted); font-size: .8rem; }
@media (max-width: 560px) { .trophy-pop { left: 1rem; right: 1rem; max-width: none; } }

/* ═════════ TORNEIO — tela de "passe o aparelho" ═════════ */
.tourn-hand {
  text-align: center; display: flex; flex-direction: column; align-items: center; gap: .6rem; padding: 2.2rem 1rem;
  background: linear-gradient(180deg, var(--panel), var(--bg-2)); border: 1px solid var(--border); border-radius: 16px; box-shadow: var(--shadow-sm);
}
.th-emoji { font-size: 3rem; animation: floaty 3s ease-in-out infinite; }
.tourn-names { display: grid; gap: .5rem; margin: .4rem 0; }

/* ═════════ FICHA DA POKÉDEX (evolução de→para) ═════════ */
.dex-slot.captured { cursor: pointer; }
.dex-entry { display: flex; flex-direction: column; gap: .9rem; }
.de-top { display: flex; align-items: center; gap: 1rem; }
.de-mon {
  width: 96px; height: 96px; object-fit: contain; image-rendering: pixelated; padding: .4rem; border-radius: 14px;
  background: radial-gradient(circle at 50% 30%, var(--panel-2), var(--bg)); filter: drop-shadow(0 5px 7px rgba(0, 0, 0, .5));
}
.de-mon.shiny { border: 1px solid #ffe27a; animation: shiny-glow 2s ease-in-out infinite; }
.de-num { font-family: var(--font-pixel); font-size: .6rem; color: var(--muted); }
.de-name { margin: .12rem 0; }

/* ═════════ QR DO PERFIL (trainer card) ═════════ */
/* Prévia do time no cartão (mesmos Pokémon que saem na imagem). */
.tc-mons { display: flex; flex-wrap: wrap; gap: .4rem; margin: .1rem 0 .2rem; }
.tc-mon { display: flex; flex-direction: column; align-items: center; gap: .1rem; width: 58px; padding: .3rem .1rem; border: 1px solid var(--border); border-radius: 10px; background: rgba(255,255,255,.04); }
.tc-mon-img { width: 44px; height: 44px; object-fit: contain; image-rendering: pixelated; }
.tc-mon-lv { font-size: .64rem; font-weight: 800; color: var(--muted); }
/* Ações do Trainer Card (modal): 5 botões → quebram linha e centralizam. */
.modal .actions.tc-actions { display: flex; flex-wrap: wrap; justify-content: center; }
.tc-qr { display: flex; align-items: center; gap: .8rem; padding: .7rem; border: 1px dashed var(--border); border-radius: 12px; }
.tc-qr-img { width: 90px; height: 90px; flex: 0 0 auto; background: #fff; border-radius: 8px; padding: 4px; }

/* ═════════ MODO SAFARI — Pokémon selvagens pelo portal ═════════ */
.wild-mon {
  position: fixed; z-index: 30; width: 104px; height: 104px; cursor: pointer;
  display: grid; place-items: center; touch-action: manipulation;
}
.wild-sprite {
  width: 104px; height: 104px; object-fit: contain; image-rendering: pixelated;
  filter: drop-shadow(0 4px 6px rgba(0, 0, 0, .5)); animation: wild-bob 1.2s ease-in-out infinite;
}
.wild-sprite.shiny { filter: drop-shadow(0 0 8px rgba(255, 226, 122, .85)) drop-shadow(0 4px 6px rgba(0, 0, 0, .5)); }
.wild-bang {
  position: absolute; top: -16px; left: 50%; transform: translateX(-50%);
  font-family: var(--font-display); font-weight: 900; font-size: 1.2rem; color: var(--accent);
  text-shadow: 0 0 6px rgba(0, 0, 0, .7); animation: wild-bang 1s ease-in-out infinite;
}
@keyframes wild-bob  { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-8px); } }
@keyframes wild-bang { 0%,100% { transform: translateX(-50%) scale(1); } 50% { transform: translateX(-50%) scale(1.35); } }
.wild-mon.flee { animation: wild-flee .4s ease forwards; }
@keyframes wild-flee { to { opacity: 0; transform: translateY(-24px) scale(.5); } }
/* Fuga após falhar a captura: o Pokémon "corre" para o lado, dá um pulinho e some. */
.wild-mon.flee-run .wild-bang { display: none; }
.wild-mon.flee-run .wild-sprite { animation: wild-flee-run .6s ease-in forwards; }
@keyframes wild-flee-run {
  0%   { transform: translateX(0) translateY(0) scaleX(1); }
  25%  { transform: translateX(24px) translateY(-10px) scaleX(-1); }
  100% { transform: translateX(140px) translateY(6px) scaleX(-1); opacity: 0; }
}
.wild-mon.caught .wild-bang { display: none; }
.wild-mon.caught .wild-sprite { animation: wild-caught .7s ease forwards; }
@keyframes wild-caught { 0% { transform: scale(1); } 30% { transform: scale(1.2); } 100% { transform: scale(0); opacity: 0; filter: brightness(3); } }

/* ═════════ WHO'S THAT — digitar o nome + autocomplete ═════════ */
.wt-guess { display: flex; flex-direction: column; gap: .5rem; }
.wt-inputrow { display: flex; gap: .5rem; flex-wrap: wrap; }
.wt-input { flex: 1; min-width: 0; font-family: var(--font-display); font-weight: 700; font-size: 1.05rem; text-align: center; letter-spacing: .02em; padding: .75rem 1rem; }
@media (max-width: 420px) {
  .wt-inputrow { flex-direction: column; }
  .wt-inputrow .wt-submit { width: 100%; }
}
.wt-submit { flex: 0 0 auto; }
.wt-sugg { display: flex; flex-direction: column; gap: .35rem; }
.wt-sopt {
  display: flex; align-items: center; gap: .6rem; text-align: left; width: 100%; padding: .45rem .7rem; border-radius: 10px;
  border: 1px solid var(--border); background: var(--panel); color: var(--text); cursor: pointer;
  font-family: var(--font-display); font-weight: 700; transition: border-color .12s, background .12s, transform .06s;
  animation: rise .18s ease both;
}
.wt-sopt:hover, .wt-sopt.hl { border-color: var(--brand-2); background: var(--panel-2); transform: translateX(3px); }
.wt-sopt-mon { width: 34px; height: 34px; flex: 0 0 auto; image-rendering: pixelated; }

/* ═════════ SAFARI — Pokébola arrastável (mira & arremesso) ═════════ */
.safari-ball {
  position: fixed; z-index: 31; width: 48px; height: 48px; border-radius: 50%; cursor: grab; touch-action: none;
  border: 3px solid #111; overflow: hidden; box-shadow: 0 6px 16px rgba(0, 0, 0, .5);
  background: linear-gradient(#ff5a48 0 50%, #f6f7fb 50% 100%); animation: sb-idle 1.6s ease-in-out infinite;
}
/* Enquanto arrasta a Pokébola no celular, congela o scroll da página (senão o
   gesto de arraste "puxa" a tela junto). Reforça o touch-action da bola. */
body.ball-dragging { overflow: hidden !important; overscroll-behavior: contain; touch-action: none; }
.wild-mon { touch-action: none; }
/* Overlay de escolha (parceiro/treinador): trava a rolagem por trás. */
body:has(.starter-overlay) { overflow: hidden; touch-action: none; }
.starter-overlay { touch-action: none; overscroll-behavior: contain; }
.safari-ball::before { content: ''; position: absolute; left: 0; right: 0; top: calc(50% - 2px); height: 4px; background: #111; }
.safari-ball::after { content: ''; position: absolute; top: 50%; left: 50%; width: 16px; height: 16px; transform: translate(-50%, -50%); border-radius: 50%; background: #fff; border: 3px solid #111; }
@keyframes sb-idle { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-4px); } }
.safari-ball.dragging { cursor: grabbing; animation: none; transform: scale(1.06); box-shadow: 0 10px 24px rgba(0, 0, 0, .6); }
.safari-ball.thrown { animation: sb-thrown .16s ease forwards; }
@keyframes sb-thrown { to { transform: scale(.4) rotate(220deg); opacity: .3; } }
.safari-ball.miss { animation: sb-miss .26s ease; }
@keyframes sb-miss { 0%,100% { transform: translateX(0) rotate(0deg); } 25% { transform: translateX(-6px) rotate(-12deg); } 75% { transform: translateX(6px) rotate(12deg); } }
.safari-ball.flee { opacity: 0; transition: opacity .4s; }
/* Tipos de Pokébola: só a metade de cima muda de cor (upgrade do "catch"). */
.safari-ball.ball-great  { background: linear-gradient(#2f7be0 0 50%, #f6f7fb 50% 100%); }
.safari-ball.ball-ultra  { background: linear-gradient(#f5b301 0 50%, #f6f7fb 50% 100%); }
.safari-ball.ball-master { background: linear-gradient(#7a3cc4 0 50%, #f6f7fb 50% 100%); }
.safari-ball.ball-master::after { background: #ffd7f4; }
/* Pokédex-ball: azul com "lente" — arraste para escanear o selvagem. */
.safari-ball.pokedex-ball { background: linear-gradient(#e3350d 0 44%, #2f2f38 44% 100%); border-color: #111; }
.safari-ball.pokedex-ball::before { background: #111; }
.safari-ball.pokedex-ball::after { background: radial-gradient(circle at 38% 35%, #cdebff, #37a6e6 60%, #1c6fb0); border-color: #fff; width: 14px; height: 14px; }
/* Painel de scan — Pokédex "device" em RETRATO (estreita e centralizada) */
.modal:has(.dex-scan) { max-width: 330px; padding: 1rem; }
.ds-screen { background: linear-gradient(160deg, #e3350d, #b21f00); border: 2px solid #7a1204; border-radius: 14px; padding: .7rem; box-shadow: inset 0 2px 0 rgba(255,255,255,.25); }
.ds-lights { display: flex; align-items: center; gap: .4rem; margin-bottom: .6rem; }
.ds-lens { width: 30px; height: 30px; border-radius: 50%; background: radial-gradient(circle at 35% 32%, #cdebff, #37a6e6 55%, #1c6fb0); border: 3px solid #fff; box-shadow: 0 0 0 2px #7a1204; }
.ds-dot { width: 10px; height: 10px; border-radius: 50%; box-shadow: inset 0 1px 1px rgba(255,255,255,.5); }
.ds-dot.red { background: #ff5b5b; } .ds-dot.yellow { background: #ffd23f; } .ds-dot.green { background: #4fdd7a; }
/* Cabeçalho em COLUNA: sprite grande no topo, dados centralizados abaixo */
.ds-top { display: flex; flex-direction: column; align-items: center; text-align: center; gap: .3rem; background: #dfe7cf; border: 2px solid #16351f; border-radius: 10px; padding: .7rem; box-shadow: inset 0 2px 6px rgba(0,0,0,.25); }
.ds-stage { width: 128px; height: 128px; display: grid; place-items: center; background: radial-gradient(circle at 50% 82%, rgba(0,0,0,.16), transparent 62%); }
.ds-sprite { width: 116px; height: 116px; image-rendering: pixelated; }
.ds-sprite.shiny { filter: drop-shadow(0 0 6px gold); }
.ds-head { min-width: 0; display: grid; justify-items: center; gap: .1rem; }
.ds-num { font-family: ui-monospace, "Courier New", monospace; font-size: .8rem; font-weight: 800; color: #3c5223; }
.ds-name { margin: 0 0 .4rem; font-size: 1.4rem; color: #16351f; }
.ds-block { margin-top: .55rem; background: #eef3e6; border: 2px solid #16351f; border-radius: 10px; padding: .55rem .7rem; }
.ds-lbl { display: block; text-align: center; font-size: .72rem; font-weight: 800; text-transform: uppercase; letter-spacing: .04em; color: #3c5223; margin-bottom: .4rem; }
.ds-row { display: flex; flex-wrap: wrap; justify-content: center; gap: .4rem; }
.ds-tip { text-align: center; margin: .8rem 0 .2rem; }
.ds-chip { font-size: .8rem; font-weight: 800; padding: .22rem .7rem; border-radius: 999px; color: #fff; text-shadow: 0 1px 1px rgba(0,0,0,.35); border: 1px solid rgba(0,0,0,.2); }
.ds-chip.t-normal{background:#9099a1}.ds-chip.t-fire{background:#ff6b3d}.ds-chip.t-water{background:#4d90d5}
.ds-chip.t-grass{background:#63bb5b}.ds-chip.t-electric{background:#f2c945;color:#3a2f00;text-shadow:none}
.ds-chip.t-ice{background:#74cec0;color:#0d3a34;text-shadow:none}.ds-chip.t-fighting{background:#ce4069}
.ds-chip.t-poison{background:#ab6ac8}.ds-chip.t-ground{background:#d97845}.ds-chip.t-flying{background:#8fa9de}
.ds-chip.t-psychic{background:#f97176}.ds-chip.t-bug{background:#90c12c}.ds-chip.t-rock{background:#c7b78b;color:#2c2410;text-shadow:none}
.ds-chip.t-ghost{background:#5269ac}.ds-chip.t-dragon{background:#0a6dc4}
/* Pokémon "escapa" da bola: sacode e continua no lugar. */
.wild-mon.breakfree .wild-sprite { animation: wild-shake .48s ease; }
@keyframes wild-shake { 0%,100% { transform: translateX(0) rotate(0); } 20% { transform: translateX(-6px) rotate(-8deg); } 60% { transform: translateX(6px) rotate(8deg); } }

/* ═════════ LINHA EVOLUTIVA (ficha da Pokédex) ═════════ */
.evo-line { display: flex; align-items: center; gap: .3rem; flex-wrap: wrap; justify-content: center; }
.evo-node { display: flex; flex-direction: column; align-items: center; gap: .15rem; padding: .4rem; border-radius: 10px; border: 1px solid transparent; }
.evo-node.cur { border-color: var(--accent); background: rgba(255, 203, 5, .08); }
.evo-node-mon { width: 56px; height: 56px; image-rendering: pixelated; }
.evo-node-nm { font-family: var(--font-display); font-weight: 700; font-size: .72rem; }
.evo-arrow { flex: 0 0 auto; width: 30px; height: 30px; border-radius: 50%; border: 1px solid var(--border); background: var(--panel-2); color: var(--accent); font-weight: 800; cursor: pointer; }
.evo-arrow:hover { border-color: var(--brand-2); background: var(--panel); }

/* ═════════ BADGE DE EQUIPE (pódio / cartões / topo) ═════════ */
.team-badge {
  display: inline-grid; place-items: center; width: 20px; height: 20px; border-radius: 50%; font-size: .72rem;
  vertical-align: middle; margin-right: .35rem; border: 1.5px solid var(--tcol);
  background: color-mix(in srgb, var(--tcol) 30%, transparent);
}
.tc-name { display: flex; align-items: center; gap: .1rem; }
.sr-who { display: flex; align-items: center; gap: .1rem; }

/* ═════════ DICA DE STAFF (aprendizado da mentoria) ═════════ */
.staff-tip {
  display: flex; flex-direction: column; gap: .3rem; margin: 1rem auto 0; max-width: 560px; text-align: left;
  padding: .9rem 1.1rem; border-radius: 12px; background: rgba(79, 140, 255, .08);
  border: 1px solid var(--border); border-left: 4px solid var(--topic);
}
.st-badge { font-family: var(--font-display); font-weight: 800; font-size: .7rem; text-transform: uppercase; letter-spacing: .05em; color: var(--topic); }
.st-text { margin: 0; line-height: 1.5; }

/* ═════════ RANKING DE SHINIES — você / busca / paginação ═════════ */
.lq-rank.me { border-color: var(--accent); background: rgba(255, 203, 5, .08); box-shadow: inset 0 0 0 1px rgba(255, 203, 5, .4); }
.sr-filter { width: 100%; margin-bottom: .3rem; }
.sr-more { text-align: center; margin-top: .5rem; }

/* ═════════ MINIGAME EDUCATIVO: QUEM É ESSE CASO? ═════════ */
.case-situation {
  background: linear-gradient(180deg, var(--panel), var(--bg-2)); border: 1px solid var(--border);
  border-left: 4px solid var(--topic); border-radius: 12px; padding: .9rem 1.1rem;
}
.case-text { margin: .3rem 0 0; font-size: 1.12rem; line-height: 1.5; }
.case-options { display: grid; gap: .6rem; }
.case-opt {
  text-align: left; width: 100%; background: var(--panel); border: 1px solid var(--border); color: var(--text);
  border-radius: 12px; padding: .9rem 1rem; cursor: pointer; font-size: .98rem; font-family: inherit;
  transition: border-color .15s, background .15s, transform .06s;
}
.case-opt:not([disabled]):hover { border-color: var(--brand-2); background: var(--panel-2); transform: translateX(3px); }
.case-opt[disabled] { cursor: default; }
.case-opt.right { border-color: var(--call); background: rgba(33, 192, 122, .14); }
.case-opt.wrong { border-color: var(--brand); background: rgba(238, 21, 21, .14); }
.case-answer { display: flex; align-items: center; gap: .8rem; margin-top: .4rem; padding: .8rem 1rem; border: 1px solid var(--border); border-radius: 12px; background: var(--panel); }
.case-mon { width: 56px; height: 56px; flex: 0 0 auto; image-rendering: pixelated; }

/* ═════════ DICA DE STAFF DO DIA (topo da Mentoria) ═════════ */
.daily-tip {
  display: flex; flex-direction: column; gap: .3rem; margin: 0 0 1.4rem; padding: .9rem 1.1rem; border-radius: 12px;
  background: rgba(79, 140, 255, .08); border: 1px solid var(--border); border-left: 4px solid var(--topic); animation: rise .4s ease both;
}

/* ═════════ QUIZ-RELÂMPAGO DE REGRAS (certo/errado) ═════════ */
.flash-q { background: linear-gradient(180deg, var(--panel), var(--bg-2)); border: 1px solid var(--border); border-left: 4px solid var(--accent); border-radius: 12px; padding: .9rem 1.1rem; }
.flash-text { margin: .3rem 0 0; font-size: 1.15rem; line-height: 1.5; }
.flash-btns { display: grid; grid-template-columns: 1fr 1fr; gap: .7rem; margin-top: .4rem; }
.flash-yes, .flash-no { font-family: var(--font-display); font-weight: 800; font-size: 1.02rem; padding: .9rem 1rem; border-radius: 12px; }
.flash-yes { background: rgba(33, 192, 122, .16); color: #7CFC9B; border: 1px solid var(--call); }
.flash-yes:not([disabled]):hover { background: rgba(33, 192, 122, .26); }
.flash-no { background: rgba(238, 21, 21, .16); color: #ff9c8b; border: 1px solid var(--brand); }
.flash-no:not([disabled]):hover { background: rgba(238, 21, 21, .26); }
.flash-modal { display: flex; flex-direction: column; gap: .7rem; }
.flash-fb { min-height: 1.1rem; text-align: center; font-weight: 700; }
.flash-fb.ok { color: var(--call); } .flash-fb.no { color: var(--deadline); }

/* ═════════ GALERIA DE CONQUISTAS ═════════ */
.ach-grid { display: grid; grid-template-columns: 1fr 1fr; gap: .6rem; max-height: 60vh; overflow-y: auto; padding-right: .2rem; }
@media (max-width: 560px) { .ach-grid { grid-template-columns: 1fr; } }
.ach-card {
  display: flex; align-items: center; gap: .7rem; padding: .7rem .8rem; border-radius: 12px;
  border: 1px solid var(--border); background: var(--bg);
}
.ach-card.on { border-color: var(--accent); box-shadow: inset 0 0 0 1px rgba(255, 203, 5, .3); }
.ach-card.off { opacity: .6; filter: grayscale(.7); }
.ach-ico { font-size: 1.6rem; width: 42px; height: 42px; display: grid; place-items: center; flex: 0 0 auto; border-radius: 10px; background: var(--panel-2); }
.ach-card.on .ach-ico { background: radial-gradient(circle at 50% 30%, #ffe27a, var(--accent)); }
.ach-body { flex: 1; min-width: 0; }
.ach-title { font-family: var(--font-display); font-weight: 800; font-size: .92rem; }
.ach-sub { color: var(--muted); font-size: .78rem; }
.ach-state { flex: 0 0 auto; font-weight: 800; color: var(--muted); }
.ach-card.on .ach-state { color: var(--call); }

/* ═════════ RELATÓRIO DE APRENDIZADO (perfil do mentorado) ═════════ */
.lr-head { display: flex; align-items: center; justify-content: space-between; gap: .6rem; }
.lr-period { padding: .3rem .5rem; font-size: .82rem; width: auto; }
.why-inp { border-left: 3px solid var(--accent); }
.lr-list { display: flex; flex-direction: column; gap: .4rem; }
.lr-row { display: grid; grid-template-columns: 150px 1fr auto; align-items: center; gap: .6rem; }
.lr-name { font-size: .82rem; }
.lr-bar { height: 9px; background: var(--bg); border: 1px solid var(--border); border-radius: 999px; overflow: hidden; }
.lr-fill { height: 100%; border-radius: 999px; }
.lr-fill.good { background: linear-gradient(90deg, #2ecc71, #7CFC9B); }
.lr-fill.mid { background: linear-gradient(90deg, #d1b83a, var(--accent)); }
.lr-fill.low { background: linear-gradient(90deg, var(--deadline), var(--brand)); }
.lr-val { font-size: .78rem; color: var(--muted); white-space: nowrap; }
.lr-idle { opacity: .55; }
/* Linha do mentorado em foco dentro do relatório da turma */
.lr-me {
  position: relative; opacity: 1; padding: .3rem .5rem; margin: 0 -.5rem;
  border-radius: 8px; background: color-mix(in srgb, var(--accent) 14%, transparent);
  box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--accent) 45%, transparent);
}
.lr-me .lr-name { font-weight: 700; color: var(--text); }

/* Painel "Quem está em risco" */
.risk-list { display: flex; flex-direction: column; gap: .5rem; }
.risk-card {
  display: flex; align-items: center; justify-content: space-between; gap: .8rem;
  padding: .6rem .7rem; border: 1px solid var(--border); border-radius: 10px;
  background: var(--bg); border-left-width: 4px;
}
.risk-card.risk-alto { border-left-color: var(--deadline, #e05a5a); }
.risk-card.risk-médio { border-left-color: var(--accent, #d1b83a); }
.risk-card.risk-baixo { border-left-color: #2ecc71; }
.risk-main { min-width: 0; }
.risk-head { display: flex; align-items: baseline; gap: .5rem; flex-wrap: wrap; }
.risk-name { font-weight: 700; }
.risk-level { font-size: .68rem; text-transform: uppercase; letter-spacing: .04em; color: var(--muted); }
.risk-reasons { font-size: .8rem; color: var(--text); margin-top: .15rem; }
.risk-actions { display: flex; gap: .4rem; flex-shrink: 0; flex-wrap: wrap; justify-content: flex-end; }

/* #103 Presença online */
.presence-list { display: flex; flex-direction: column; gap: .35rem; }
.presence-row { display: flex; align-items: center; gap: .5rem; padding: .4rem .6rem; border: 1px solid var(--border); border-radius: 10px; background: var(--bg); }
.presence-dot { width: 9px; height: 9px; border-radius: 50%; background: #2ecc71; box-shadow: 0 0 6px #2ecc71; flex: 0 0 auto; }

/* #99 Reações ao vivo */
.react-dock { position: fixed; left: 1rem; bottom: 1rem; z-index: 60; display: flex; align-items: flex-end; gap: .4rem; }
.react-fab { width: 44px; height: 44px; border-radius: 50%; border: 1px solid var(--border); background: var(--panel); font-size: 1.3rem; cursor: pointer; box-shadow: 0 4px 12px rgba(0,0,0,.25); }
.react-panel { display: flex; gap: .2rem; background: var(--panel); border: 1px solid var(--border); border-radius: 999px; padding: .3rem .4rem; box-shadow: 0 4px 12px rgba(0,0,0,.25); }
.react-panel.hidden { display: none; }
.react-btn { border: none; background: transparent; font-size: 1.3rem; cursor: pointer; padding: .1rem .2rem; transition: transform .1s; }
.react-btn:hover { transform: scale(1.3); }
.react-float { position: fixed; bottom: 4rem; font-size: 2rem; pointer-events: none; z-index: 59; animation: react-rise 2.5s ease-out forwards; }
@keyframes react-rise { 0% { opacity: 0; transform: translateY(0) scale(.6); } 15% { opacity: 1; } 100% { opacity: 0; transform: translateY(-42vh) scale(1.3); } }
@media (prefers-reduced-motion: reduce), (max-width: 560px) { .react-dock { bottom: .6rem; left: .6rem; } }

/* #150 Chefe da semana */
.wboss-arena { text-align: center; padding: 1rem; border: 1px solid var(--border); border-radius: 14px; background: var(--panel-2); }
.wboss-arena.won { border-color: var(--call); background: rgba(80,220,120,.1); }
.wboss-sprite { width: 120px; height: 120px; image-rendering: pixelated; }
.wboss-name { font-family: var(--font-display); font-weight: 800; font-size: 1.1rem; }
.wboss-hp { height: 16px; margin: .5rem 0 .3rem; }
.wboss-banner { font-weight: 800; color: var(--call); margin-top: .6rem; }
.wboss-banner.lost { color: var(--deadline); }
.wboss-you { text-align: center; font-weight: 700; margin: .5rem 0; }
.wboss-top { display: flex; flex-direction: column; gap: .2rem; }
.wboss-top-row { display: flex; justify-content: space-between; padding: .2rem .4rem; border-bottom: 1px dashed var(--border); }
.wboss-challenge { display: grid; gap: .55rem; margin-top: .7rem; padding: .8rem; border: 1px solid color-mix(in srgb, var(--accent) 38%, var(--border)); border-radius: 14px; background: linear-gradient(145deg, color-mix(in srgb, var(--accent) 8%, var(--panel)), var(--panel-2)); }
.wboss-question { margin: 0; font-weight: 800; line-height: 1.35; }
.wboss-options { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .4rem; }
.wboss-option { display: flex; align-items: flex-start; gap: .4rem; padding: .5rem; border: 1px solid var(--border); border-radius: 10px; background: var(--panel); color: var(--text); text-align: left; cursor: pointer; font-size: .78rem; line-height: 1.3; }
.wboss-option:hover, .wboss-option.selected { border-color: var(--accent); background: color-mix(in srgb, var(--accent) 12%, var(--panel)); }
.wboss-option > span:first-child { display: grid; place-items: center; width: 1.25rem; height: 1.25rem; flex: 0 0 auto; border-radius: 50%; background: color-mix(in srgb, var(--accent) 18%, var(--panel-2)); color: var(--accent); font: 900 .65rem var(--font-mono); }
.wboss-feedback { display: grid; gap: .2rem; padding: .55rem; border-radius: 10px; background: var(--panel-2); font-size: .78rem; line-height: 1.35; }
.wboss-feedback.ok { border-left: 3px solid var(--call); }
.wboss-feedback.bad { border-left: 3px solid var(--deadline); }
.wboss-new, .sgroup-new { margin-top: .8rem; padding-top: .6rem; border-top: 1px dashed var(--border); display: flex; flex-direction: column; gap: .4rem; }
.wboss-new-row { display: flex; gap: .4rem; flex-wrap: wrap; align-items: center; }

/* Expedições educativas Gen I–III */
.dungeon-modal { display: grid; gap: .85rem; max-height: 78vh; overflow-y: auto; color: var(--text); }
.dungeon-intro { padding: .85rem 1rem; border: 1px solid color-mix(in srgb, var(--accent) 34%, var(--border)); border-radius: 16px; background: linear-gradient(135deg, color-mix(in srgb, var(--accent) 12%, var(--panel)), var(--panel-2)); }
.dungeon-intro h3 { margin: .25rem 0 .2rem; font: 900 clamp(1.2rem, 2.5vw, 1.7rem) var(--font-display); }
.dungeon-intro p { max-width: 68ch; margin: 0; }
.dungeon-campaign { display: grid; gap: .45rem; padding: .75rem .85rem; border: 1px solid var(--border); border-radius: 15px; background: linear-gradient(120deg, color-mix(in srgb, var(--brand-2) 8%, var(--panel)), var(--panel-2)); }
.dungeon-campaign.ready { border-color: color-mix(in srgb, var(--accent) 62%, var(--border)); background: linear-gradient(120deg, color-mix(in srgb, var(--accent) 12%, var(--panel)), var(--panel-2)); }
.dungeon-campaign.claimed { border-color: color-mix(in srgb, var(--call) 50%, var(--border)); }
.dungeon-campaign-head { display: grid; grid-template-columns: 34px minmax(0, 1fr) auto; align-items: center; gap: .5rem; }
.dungeon-campaign-head > div { display: grid; gap: .08rem; min-width: 0; }
.dungeon-campaign-head strong { color: var(--text); font-size: .78rem; }
.dungeon-campaign-head b { color: var(--accent); font: 900 .72rem var(--font-mono); }
.dungeon-campaign-icon { display: grid; place-items: center; width: 32px; height: 32px; border: 1px solid var(--border); border-radius: 10px; background: var(--panel); font-size: 1.05rem; }
.dungeon-campaign-bar { height: 7px; overflow: hidden; border: 1px solid var(--border); border-radius: 99px; background: var(--bg); }
.dungeon-campaign-bar span { display: block; height: 100%; border-radius: inherit; background: linear-gradient(90deg, var(--brand-2), var(--accent)); transition: width .25s ease; }
.dungeon-campaign-reward { color: var(--accent); }
.dungeon-campaign-banner { display: grid; gap: .15rem; width: min(100%, 680px); margin-top: .35rem; padding: .55rem .7rem; border: 1px solid color-mix(in srgb, var(--accent) 55%, var(--border)); border-radius: 12px; color: var(--text); background: color-mix(in srgb, var(--accent) 9%, var(--panel)); text-align: left; }
.dungeon-campaign-banner.claimed { border-color: color-mix(in srgb, var(--call) 55%, var(--border)); background: color-mix(in srgb, var(--call) 8%, var(--panel)); }
.dungeon-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .7rem; }
.dungeon-card { display: flex; min-width: 0; flex-direction: column; gap: .35rem; padding: .75rem; border: 1px solid var(--border); border-radius: 16px; background: linear-gradient(160deg, var(--panel-2), var(--bg)); box-shadow: 0 8px 20px rgba(0,0,0,.14); }
.dungeon-card:hover { border-color: var(--accent); transform: translateY(-2px); transition: .16s ease; }
.dungeon-card-top { display: flex; align-items: center; justify-content: space-between; min-height: 76px; }
.dungeon-card-sprite { width: 78px; height: 78px; object-fit: contain; image-rendering: pixelated; filter: drop-shadow(0 5px 4px rgba(0,0,0,.28)); }
.dungeon-gen { padding: .18rem .4rem; border: 1px solid var(--border); border-radius: 999px; font: 800 .62rem var(--font-mono); color: var(--accent); }
.dungeon-card h4 { margin: .1rem 0 0; font: 900 1rem var(--font-display); }
.dungeon-card p { min-height: 3.1em; margin: 0; line-height: 1.35; }
.dungeon-card-stats { display: grid; gap: .18rem; min-height: 2.45em; padding: .38rem .45rem; border: 1px solid color-mix(in srgb, var(--accent) 20%, var(--border)); border-radius: 10px; background: color-mix(in srgb, var(--accent) 5%, var(--panel)); font-size: .68rem; color: var(--muted); }
.dungeon-card-focus { color: var(--accent); font-weight: 800; }
.dungeon-card-foot { display: flex; align-items: center; justify-content: space-between; gap: .4rem; margin-top: auto; padding-top: .45rem; border-top: 1px dashed var(--border); font-size: .72rem; color: var(--muted); }
.dungeon-head { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: .8rem; padding: .7rem .85rem; border: 1px solid var(--border); border-radius: 16px; background: linear-gradient(120deg, color-mix(in srgb, var(--accent) 12%, var(--panel)), var(--panel-2)); }
.dungeon-head-copy { min-width: 0; }
.dungeon-head h3 { margin: .15rem 0 .2rem; font: 900 clamp(1.15rem, 2.5vw, 1.55rem) var(--font-display); }
.dungeon-head p { margin: 0; }
.dungeon-sprite { width: 82px; height: 82px; object-fit: contain; image-rendering: pixelated; filter: drop-shadow(0 6px 5px rgba(0,0,0,.3)); }
.dungeon-step { display: grid; gap: .55rem; padding: .8rem .9rem; border: 1px solid var(--border); border-radius: 16px; background: var(--panel-2); }
.dungeon-step-line { display: flex; justify-content: space-between; font: 800 .75rem var(--font-mono); color: var(--muted); }
.dungeon-progress { height: 8px; overflow: hidden; border-radius: 99px; background: var(--bg); }
.dungeon-progress span { display: block; height: 100%; border-radius: inherit; background: linear-gradient(90deg, var(--brand), var(--accent)); }
.dungeon-question { margin: 0; font-size: clamp(1rem, 2vw, 1.25rem); line-height: 1.35; }
.dungeon-options { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .55rem; }
.dungeon-option { display: flex; align-items: flex-start; gap: .55rem; min-width: 0; padding: .7rem .75rem; border: 1px solid var(--border); border-radius: 13px; color: var(--text); background: var(--panel); text-align: left; cursor: pointer; line-height: 1.35; }
.dungeon-option:hover:not(:disabled), .dungeon-option.chosen { border-color: var(--accent); background: color-mix(in srgb, var(--accent) 10%, var(--panel)); }
.dungeon-option:disabled { opacity: .7; cursor: wait; }
.dungeon-option-letter { display: grid; place-items: center; width: 1.4rem; height: 1.4rem; flex: 0 0 auto; border-radius: 50%; background: color-mix(in srgb, var(--accent) 18%, var(--panel-2)); color: var(--accent); font: 900 .7rem var(--font-mono); }
.dungeon-feedback { display: grid; gap: .35rem; padding: .75rem .85rem; border: 1px solid var(--border); border-radius: 14px; background: var(--panel-2); }
.dungeon-feedback.ok { border-color: color-mix(in srgb, var(--call) 65%, var(--border)); }
.dungeon-feedback.bad { border-color: color-mix(in srgb, var(--deadline) 65%, var(--border)); }
.dungeon-feedback span { line-height: 1.4; }
.dungeon-complete { display: grid; justify-items: center; gap: .35rem; padding: 1.7rem 1rem; border: 1px solid color-mix(in srgb, var(--call) 60%, var(--border)); border-radius: 18px; background: linear-gradient(150deg, rgba(65,190,110,.14), var(--panel-2)); text-align: center; }
.dungeon-complete h3, .dungeon-complete p { margin: 0; }
.dungeon-complete-badge { font-size: 2.8rem; filter: drop-shadow(0 4px 5px rgba(255,203,5,.3)); }
.dungeon-reward { color: var(--accent); font-size: 1.05rem; }
.dungeon-note { margin: 0; text-align: center; }
.dungeon-review { display: grid; gap: .55rem; padding: .8rem; border: 1px solid var(--border); border-radius: 16px; background: linear-gradient(145deg, var(--panel-2), var(--bg)); }
.dungeon-review-head { display: grid; gap: .12rem; padding-bottom: .35rem; border-bottom: 1px dashed var(--border); }
.dungeon-review-head strong { font: 900 1.05rem var(--font-display); }
.dungeon-review-filter { justify-self: start; margin-top: .2rem; }
.dungeon-review-empty { padding: .75rem; border: 1px dashed color-mix(in srgb, var(--call) 50%, var(--border)); border-radius: 12px; color: var(--call); background: color-mix(in srgb, var(--call) 7%, var(--panel)); text-align: center; }
.dungeon-review-row { display: grid; gap: .22rem; padding: .65rem .7rem; border: 1px solid var(--border); border-left: 3px solid var(--call); border-radius: 12px; background: var(--panel); }
.dungeon-review-row.bad { border-left-color: var(--deadline); }
.dungeon-review-title { display: flex; align-items: center; gap: .45rem; flex-wrap: wrap; }
.dungeon-review-prompt { line-height: 1.35; }
.dungeon-review-expected { color: var(--accent); font-weight: 800; }
.lq-reward { margin: .55rem auto; padding: .45rem .7rem; border: 1px solid color-mix(in srgb, var(--accent) 48%, var(--border)); border-radius: 999px; background: color-mix(in srgb, var(--accent) 10%, var(--panel-2)); color: var(--accent); font-weight: 800; }
.boss-review { display: grid; gap: .42rem; width: min(100%, 720px); padding: .75rem; border: 1px solid color-mix(in srgb, var(--accent) 32%, var(--border)); border-radius: 15px; background: linear-gradient(145deg, color-mix(in srgb, var(--accent) 7%, var(--panel)), var(--panel-2)); text-align: left; }
.boss-review > strong { color: var(--text); font: 900 1rem var(--font-display); }
.boss-review-item { display: grid; gap: .22rem; padding: .55rem .6rem; border-left: 3px solid var(--deadline); border-radius: 10px; background: var(--panel); }
.boss-review-item strong { color: var(--text); line-height: 1.3; }
.boss-review-expected { color: var(--accent); font-weight: 800; }
.ah-actions { display: flex; align-items: center; flex-wrap: wrap; gap: .45rem .65rem; margin-top: .55rem; }
.ah-actions .small { color: color-mix(in srgb, var(--text) 70%, var(--muted)); }
.modal:has(.dungeon-modal) { width: min(980px, calc(100vw - 1rem)); max-width: 980px; padding: 1rem; }
@media (max-width: 760px) {
  .dungeon-grid { grid-template-columns: 1fr; }
  .dungeon-card p { min-height: 0; }
  .dungeon-head { grid-template-columns: auto minmax(0, 1fr); }
  .dungeon-head > .btn { grid-column: 1 / -1; justify-self: stretch; }
}
@media (max-width: 520px) {
  .modal:has(.dungeon-modal) { width: calc(100vw - .65rem); padding: .72rem; }
  .wboss-options { grid-template-columns: 1fr; }
  .dungeon-modal { max-height: 81vh; }
  .dungeon-options { grid-template-columns: 1fr; }
  .dungeon-sprite { width: 64px; height: 64px; }
  .dungeon-card-sprite { width: 66px; height: 66px; }
}

/* #112 Grupos de estudo */
.sgroup-modal { display: flex; flex-direction: column; gap: .5rem; max-height: 46vh; overflow-y: auto; }
.sgroup-card { border: 1px solid var(--border); border-radius: 10px; padding: .6rem .7rem; background: var(--bg); }
.sgroup-head { display: flex; justify-content: space-between; align-items: baseline; }
.sgroup-members { color: var(--muted); font-weight: 700; }
.sgroup-actions { display: flex; gap: .4rem; margin-top: .4rem; }

/* #114 Álbum coletivo */
.album-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(46px, 1fr)); gap: .3rem; }
.album-cell { padding: .15rem; border: 1px solid var(--border); border-radius: 8px; background: var(--panel-2); aspect-ratio: 1; display: flex; align-items: center; justify-content: center; }
.album-cell.stuck { border-color: var(--call); background: rgba(80,220,120,.12); }
.album-cell.can { border-color: var(--brand); box-shadow: 0 0 0 2px rgba(255,203,5,.35) inset; cursor: pointer; }
.album-sprite { width: 100%; height: 100%; image-rendering: pixelated; }
.album-sprite.silhouette { filter: brightness(0) opacity(.35); }

/* #106 Perfil público (fora do app) */
.public-card { max-width: 380px; margin: 8vh auto; text-align: center; padding: 1.6rem; border: 1px solid var(--border); border-radius: 18px; background: var(--panel); }
.public-badge { font-size: .72rem; font-weight: 800; letter-spacing: .05em; text-transform: uppercase; color: var(--accent); }
.public-card h2 { margin: .4rem 0 .1rem; }
.public-role { color: var(--muted); }
.public-status { font-style: italic; }
.public-stats { display: flex; flex-wrap: wrap; gap: .4rem; justify-content: center; margin: .8rem 0 1.2rem; }
.public-stat { padding: .3rem .7rem; border-radius: 99px; background: var(--panel-2); border: 1px solid var(--border); font-weight: 700; font-size: .82rem; }
.share-url { width: 100%; font-family: var(--font-mono, monospace); font-size: .82rem; }

/* #89 Passe de temporada */
.pass-modal { display: flex; flex-direction: column; gap: .7rem; }
.pass-head { display: flex; align-items: baseline; justify-content: space-between; gap: .5rem; }
.pass-next-top { display: flex; justify-content: space-between; margin-bottom: .25rem; }
.pass-track { display: flex; flex-direction: column; gap: .4rem; max-height: 46vh; overflow-y: auto; }
.pass-tier { display: grid; grid-template-columns: 3.2rem 1fr auto; align-items: center; gap: .6rem; padding: .5rem .6rem; border: 1px solid var(--border); border-radius: 10px; background: var(--panel-2); opacity: .6; }
.pass-tier.on { opacity: 1; border-left: 3px solid var(--call); }
.pass-tier.final { border-color: var(--brand); }
.pass-tier.final.on { box-shadow: 0 0 0 1px rgba(255,203,5,.4) inset; }
.pass-tier-n { font-family: var(--font-display); font-weight: 800; }
.pass-reward { font-weight: 600; }
.pass-lock, .pass-claimed { font-size: .8rem; color: var(--muted); }
.pass-claimed { color: var(--call); font-weight: 700; }

/* #107 Padrinho & Afilhados */
.buddy-modal { display: flex; flex-direction: column; gap: .6rem; }
.buddy-card { border: 1px solid var(--border); border-radius: 12px; padding: .7rem .8rem; background: var(--bg); border-left: 4px solid var(--brand); }
.buddy-head { display: flex; align-items: baseline; gap: .5rem; }
.buddy-role { font-size: .72rem; font-weight: 800; text-transform: uppercase; letter-spacing: .04em; color: var(--accent); }
.buddy-meta { margin-top: .5rem; }
.buddy-meta-top { display: flex; justify-content: space-between; margin-bottom: .25rem; }
.buddy-meta-val { font-weight: 800; font-family: var(--font-display); }
.buddy-assign { display: flex; flex-wrap: wrap; align-items: center; gap: .4rem; margin: .5rem 0; }
.buddy-sel { min-width: 9rem; }
.buddy-list { display: flex; flex-direction: column; gap: .4rem; max-height: 40vh; overflow-y: auto; }
.buddy-row { display: flex; justify-content: space-between; align-items: center; gap: .5rem; padding: .45rem .6rem; border: 1px solid var(--border); border-radius: 10px; background: var(--panel-2); }

/* #127 Comparativo de turmas */
.cmp-list { display: flex; flex-direction: column; gap: .6rem; }
.cmp-card { border: 1px solid var(--border); border-radius: 12px; padding: .7rem .8rem; background: var(--bg); }
.cmp-head { display: flex; justify-content: space-between; align-items: baseline; gap: .5rem; margin-bottom: .5rem; }
.cmp-bar { height: 10px; border-radius: 999px; background: var(--panel-2); overflow: hidden; margin-bottom: .5rem; }
.cmp-fill { height: 100%; border-radius: 999px; background: var(--brand); }
.cmp-fill.good { background: var(--call, #2ecc71); }
.cmp-fill.mid { background: var(--accent, #d1b83a); }
.cmp-fill.low { background: var(--deadline, #e05a5a); }
.cmp-stats { display: grid; grid-template-columns: repeat(4, 1fr); gap: .4rem; }
.cmp-stat { text-align: center; background: var(--panel-2); border-radius: 8px; padding: .35rem .2rem; }
.cmp-stat-v { display: block; font-family: var(--font-display); font-weight: 800; }
.cmp-stat-l { display: block; font-size: .68rem; color: var(--muted); }
@media (max-width: 520px) { .cmp-stats { grid-template-columns: repeat(2, 1fr); } }

/* #117 Notificações + menções */
.notif-btn { position: relative; }
#notif-badge { position: absolute; top: -4px; right: -4px; }
.notif-list { display: flex; flex-direction: column; gap: .4rem; }
/* É um <button>: precisa herdar cor/fonte, senão o texto sai preto (buttontext)
   sobre o fundo escuro e fica ilegível. */
.notif-item { text-align: left; width: 100%; border: 1px solid var(--border); border-radius: 10px; padding: .55rem .7rem; background: var(--bg); color: var(--text); font: inherit; cursor: pointer; }
.notif-item:hover { border-color: var(--accent); }
.notif-item.unread { border-left: 4px solid var(--brand); background: var(--panel-2); }
.notif-body { line-height: 1.4; }
.notif-when { font-size: .72rem; color: var(--muted); margin-top: .2rem; }
.mention { color: var(--brand); font-weight: 700; background: rgba(255,203,5,.12); border-radius: 4px; padding: 0 .15rem; }

/* #75 Quiz de cena (chat mockado) */
.scene-panel { margin: .8rem 0; border: 1px solid var(--border); border-radius: 12px; overflow: hidden; background: var(--panel-2); }
.scene-bar { background: var(--panel); padding: .4rem .7rem; font-weight: 700; font-size: .85rem; border-bottom: 1px solid var(--border); }
.scene-log { display: flex; flex-direction: column; gap: .35rem; padding: .6rem .7rem; font-family: var(--font-mono, monospace); font-size: .9rem; }
.scene-line { display: flex; gap: .5rem; }
.scene-u { font-weight: 800; color: var(--accent); flex: 0 0 auto; min-width: 5.5rem; }
.scene-line.staff .scene-u { color: var(--brand); }
.scene-t { color: var(--text); }

/* #57 Fila de denúncias (SLA) */
.report-ticket { margin: .8rem 0; padding: .7rem .8rem; border: 1px solid var(--border); border-radius: 12px; background: var(--panel-2); display: flex; flex-direction: column; gap: .35rem; }
.rt-line { display: flex; gap: .5rem; font-size: .92rem; line-height: 1.4; }
.rt-k { flex: 0 0 5.5rem; font-weight: 800; color: var(--accent); }
.rt-v { color: var(--text); }

/* #109 Melhor resposta da semana */
.ba-modal { display: flex; flex-direction: column; gap: .7rem; }
.ba-new, .ba-add { display: flex; flex-wrap: wrap; gap: .4rem; align-items: center; }
.ba-new-title { flex: 1; min-width: 12rem; }
.ba-round { border: 1px solid var(--border); border-radius: 12px; padding: .7rem .8rem; background: var(--bg); display: flex; flex-direction: column; gap: .5rem; }
.ba-round.open { border-left: 4px solid var(--brand); }
.ba-round.closed { opacity: .92; }
.ba-round-head { display: flex; justify-content: space-between; align-items: baseline; gap: .5rem; }
.ba-cand { border: 1px solid var(--border); border-radius: 10px; padding: .55rem .65rem; background: var(--panel-2); }
.ba-cand.voted { border-color: var(--brand); box-shadow: 0 0 0 1px rgba(255,203,5,.3) inset; }
.ba-cand.winner { border-color: var(--call); background: rgba(80,220,120,.1); }
.ba-cand-body { line-height: 1.45; white-space: pre-wrap; }
.ba-cand-foot { display: flex; justify-content: space-between; margin-top: .35rem; font-size: .8rem; }
.ba-author { font-weight: 700; color: var(--accent); }
.ba-votes { color: var(--muted); }
.ba-cand-actions { display: flex; gap: .4rem; margin-top: .5rem; }
.ba-add { flex-direction: column; align-items: stretch; margin-top: .3rem; padding-top: .5rem; border-top: 1px dashed var(--border); }
.ba-add-body { width: 100%; min-height: 54px; resize: vertical; }
.ba-add-actions { display: flex; gap: .4rem; }
.ba-prize { text-align: center; font-weight: 800; color: var(--call); padding: .4rem; }

/* #56 Trilha "Do zero ao GM" */
.journey-head h3 { margin: 0 0 .2rem; }
.journey-path { display: flex; gap: .5rem; margin: 1rem 0; }
.journey-stage { flex: 1; text-align: center; padding: .7rem .4rem; border: 1px solid var(--border); border-radius: 12px; background: var(--panel-2); position: relative; opacity: .55; }
.journey-stage.done { opacity: 1; border-color: var(--call); }
.journey-stage.current { opacity: 1; border-color: var(--brand); box-shadow: 0 0 0 2px rgba(255,203,5,.25); }
.journey-ico { font-size: 1.8rem; line-height: 1; }
.journey-name { font-family: var(--font-display); font-weight: 800; font-size: .82rem; margin-top: .3rem; }
.journey-tag { display: block; font-size: .66rem; font-weight: 700; color: var(--brand); margin-top: .2rem; }
.journey-check { display: block; font-size: .66rem; color: var(--call); margin-top: .2rem; }
.journey-next { margin-top: 1rem; padding: .8rem; border: 1px solid var(--border); border-radius: 12px; background: var(--bg); }
.journey-next-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: .5rem; }
.journey-pct { font-family: var(--font-display); font-weight: 800; color: var(--brand); }
.journey-req { margin: .45rem 0; }
.journey-req .jr-top { display: flex; justify-content: space-between; font-size: .82rem; margin-bottom: .2rem; }
.journey-req .jr-val { color: var(--muted); font-weight: 700; }
.jr-bar { height: 8px; border-radius: 999px; background: var(--panel-2); overflow: hidden; }
.jr-fill { height: 100%; border-radius: 999px; background: var(--brand); }
.jr-fill.done { background: var(--call); }
.journey-max { margin-top: 1rem; padding: 1rem; text-align: center; font-weight: 700; border: 1px solid var(--call); border-radius: 12px; background: rgba(80,220,120,.12); }
@media (max-width: 520px) { .journey-path { flex-wrap: wrap; } .journey-stage { flex: 1 1 40%; } }

/* #52 Biblioteca de macros */
.macro-search { width: 100%; margin-bottom: .6rem; }
.macro-list { display: flex; flex-direction: column; gap: .5rem; max-height: 46vh; overflow-y: auto; }
.macro-row { display: flex; gap: .6rem; align-items: flex-start; padding: .5rem .6rem; border: 1px solid var(--border); border-radius: 10px; background: var(--bg); }
.macro-fields { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: .35rem; }
.macro-head { display: flex; gap: .4rem; }
.macro-title { flex: 1; font-weight: 700; }
.macro-cat { width: 8rem; flex-shrink: 0; }
.macro-body { width: 100%; min-height: 48px; resize: vertical; font-size: .9rem; }
.macro-actions { display: flex; flex-direction: column; gap: .3rem; flex-shrink: 0; }
.macro-add { margin-top: .8rem; padding-top: .7rem; border-top: 1px dashed var(--border); display: flex; flex-direction: column; gap: .4rem; }
.macro-add .eyebrow { display: block; }

/* #135 Banco de perguntas */
.filter-chip { font-size: .78rem; font-weight: 700; padding: .3rem .7rem; border-radius: 99px; border: 1px solid var(--border); background: var(--panel-2); color: var(--muted); cursor: pointer; }
.filter-chip:hover { border-color: var(--accent); }
.filter-chip.active { background: rgba(255,203,5,.16); border-color: var(--brand); color: var(--text); }
.qbank-filters { display: flex; flex-wrap: wrap; gap: .4rem; margin: .6rem 0; }
.qbank-list { display: flex; flex-direction: column; gap: .6rem; }
.qbank-card { border: 1px solid var(--border); border-radius: 12px; padding: .7rem .8rem; background: var(--bg); border-left-width: 4px; }
.qbank-card.qb-draft { border-left-color: var(--accent, #d1b83a); }
.qbank-card.qb-approved { border-left-color: var(--call, #2ecc71); }
.qbank-card.qb-archived { border-left-color: var(--muted, #888); opacity: .75; }
.qbank-top { display: flex; align-items: center; gap: .5rem; flex-wrap: wrap; font-size: .75rem; }
.qb-status { font-weight: 800; }
.qb-cat { padding: .1rem .5rem; border-radius: 99px; background: var(--panel-2); border: 1px solid var(--border); }
.qb-meta { color: var(--muted); margin-left: auto; }
.qbank-prompt { font-weight: 600; margin: .4rem 0 .3rem; line-height: 1.4; }
.qbank-opts { list-style: none; padding: 0; margin: 0 0 .5rem; display: flex; flex-direction: column; gap: .15rem; }
.qbank-opts li { font-size: .85rem; color: var(--muted); padding-left: .2rem; }
.qbank-opts li.qb-correct { color: var(--call); font-weight: 700; }
.qbank-actions { display: flex; flex-wrap: wrap; gap: .35rem; }
.qbank-actions .btn-sm, .qbank-filters + * .btn-sm { font-size: .78rem; }

/* Editor de pergunta */
.qe-modal .eyebrow { display: block; margin: .6rem 0 .25rem; }
.qe-prompt, .qe-explain { width: 100%; min-height: 60px; resize: vertical; }
.qe-opts { display: flex; flex-direction: column; gap: .4rem; }
.qe-opt-row { display: flex; align-items: center; gap: .5rem; }
.qe-opt-row .qe-opt-input { flex: 1; }
.qe-radio { display: inline-flex; align-items: center; }
.qe-meta-row { display: flex; gap: 1rem; margin-top: .4rem; }

/* Histórico de versões */
.qh-list { display: flex; flex-direction: column; gap: .5rem; }
.qh-row { border: 1px solid var(--border); border-radius: 10px; padding: .5rem .6rem; background: var(--bg); }
.qh-head { display: flex; justify-content: space-between; gap: .5rem; flex-wrap: wrap; }
.qh-act { font-weight: 700; font-size: .82rem; }
.qh-meta { font-size: .75rem; color: var(--muted); }
.qh-prompt { margin: .3rem 0 0; font-size: .85rem; color: var(--text); }

/* #130 Configurar rubrica */
.rubric-cfg-list { display: flex; flex-direction: column; gap: .5rem; max-height: 52vh; overflow-y: auto; }
.rubric-cfg-row { display: flex; gap: .6rem; align-items: center; padding: .5rem .6rem; border: 1px solid var(--border); border-radius: 10px; background: var(--bg); }
.rubric-cfg-row.inactive { opacity: .6; }
.rubric-cfg-fields { display: flex; flex-direction: column; gap: .3rem; flex: 1; min-width: 0; }
.rubric-cfg-fields input { width: 100%; }
.rubric-cfg-label { font-weight: 700; }
.rubric-cfg-desc { font-size: .85rem; }
.rubric-cfg-actions { display: flex; gap: .3rem; flex-shrink: 0; }
.rubric-cfg-add { display: flex; gap: .5rem; margin-top: .8rem; }
.rubric-cfg-add input { flex: 1; }

/* #128 Integridade — pares de entregas suspeitas de cópia */
.anom-list { display: flex; flex-direction: column; gap: .6rem; }
.anom-card { padding: .6rem .7rem; border: 1px solid var(--border); border-radius: 10px; background: var(--bg); border-left-width: 4px; }
.anom-card.anom-alta { border-left-color: var(--deadline, #e05a5a); }
.anom-card.anom-média { border-left-color: var(--accent, #d1b83a); }
.anom-head { display: flex; align-items: baseline; gap: .5rem; flex-wrap: wrap; margin-bottom: .5rem; }
.anom-sev { font-weight: 800; }
.anom-day { font-size: .75rem; color: var(--muted); }
.anom-gap { font-size: .72rem; color: var(--text); margin-left: auto; }
.anom-pair { display: grid; grid-template-columns: 1fr 1fr; gap: .6rem; }
.anom-side { min-width: 0; background: var(--panel-2); border: 1px solid var(--border); border-radius: 8px; padding: .5rem .6rem; }
.anom-who { display: flex; align-items: center; justify-content: space-between; gap: .4rem; margin-bottom: .3rem; }
.anom-text { font-size: .82rem; line-height: 1.4; color: var(--text); white-space: pre-wrap; word-break: break-word; margin: 0; }
@media (max-width: 560px) { .anom-pair { grid-template-columns: 1fr; } }

/* Triagem de Chat — cronômetro do reflexo */
.triage-timer { height: 8px; background: var(--bg); border: 1px solid var(--border); border-radius: 999px; overflow: hidden; margin: .5rem 0; }
.triage-bar { height: 100%; width: 100%; border-radius: 999px; background: linear-gradient(90deg, var(--brand), var(--accent), #2ecc71); }

/* Trilha "Conheça o Jogo" (tutoriais) */
.tut-section { margin: 1.2rem 0; }
.tut-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: .6rem; content-visibility: auto; contain-intrinsic-size: auto 240px; }
.tut-card {
  display: flex; align-items: center; gap: .7rem; text-align: left; cursor: pointer;
  padding: .7rem .8rem; border: 1px solid var(--border); border-radius: 12px;
  background: var(--card, var(--bg)); color: var(--text); font: inherit;
  transition: border-color .15s, transform .1s;
}
.tut-card:hover { border-color: var(--brand-2, var(--brand)); transform: translateY(-2px); }
.tut-card.done { border-left: 4px solid #2ecc71; }
.tut-card.unread { border-left: 4px solid var(--accent, var(--brand)); }
.tut-icon { font-size: 1.6rem; flex: 0 0 auto; }
.tut-info { display: flex; flex-direction: column; min-width: 0; gap: .1rem; flex: 1; }
.tut-badge { font-size: .7rem; color: var(--muted); white-space: nowrap; flex: 0 0 auto; }
.tut-card.done .tut-badge { color: #2ecc71; font-weight: 700; }
.tut-modal { max-width: 640px; }
.tut-modal .md-content { max-height: 46vh; overflow-y: auto; }
.modal:has(.tut-modal) { width: 94vw; max-width: min(980px, 94vw); }
.modal:has(.tut-modal) .tut-modal { max-width: none; }
.modal:has(.tut-modal) .tut-modal .md-content { max-height: 62vh; }
.tut-results { display: flex; flex-direction: column; gap: .5rem; max-height: 50vh; overflow-y: auto; }
.tut-result-row { padding: .5rem .6rem; border: 1px solid var(--border); border-radius: 8px; border-left-width: 4px; }
.tut-result-row.ok { border-left-color: #2ecc71; }
.tut-result-row.no { border-left-color: var(--deadline, #e05a5a); }
.trr-head { font-size: .86rem; font-weight: 600; margin-bottom: .2rem; }
.tut-explain { color: var(--topic, var(--text)); margin-top: .2rem; }

/* Link de fonte oficial (wiki) em dias/treinos */
.source-link {
  display: inline-flex; align-items: center; gap: .3rem; margin-top: .8rem;
  font-size: .8rem; color: var(--brand-2, var(--brand)); text-decoration: none;
  border: 1px dashed var(--border); border-radius: 999px; padding: .25rem .7rem;
  align-self: flex-start; transition: border-color .15s, color .15s;
}
.source-link:hover { border-color: var(--brand-2, var(--brand)); text-decoration: underline; }
@media (max-width: 600px) {
  .modal:has(.tut-modal) { width: calc(100vw - 1rem); max-width: none; padding: 1rem; max-height: calc(100vh - 1rem); }
  .modal:has(.tut-modal) .tut-modal .md-content { max-height: 55vh; }
}

/* Gestão de canais do Discord (admin) */
.chan-cfg { margin-bottom: .8rem; padding: .6rem .7rem; border: 1px solid var(--border); border-radius: 10px; background: var(--bg); }
.chan-cfg-row { display: flex; align-items: center; gap: .6rem; margin-top: .3rem; }
.chan-cfg-label { font-size: .82rem; min-width: 96px; color: var(--muted); }
.chan-cfg-id { font-size: .78rem; }
.chan-list { display: flex; flex-direction: column; gap: .4rem; margin-top: .4rem; }
.chan-row { display: grid; grid-template-columns: 1fr 150px auto; align-items: center; gap: .6rem; }
.chan-user { display: flex; flex-direction: column; min-width: 0; }
.chan-input { padding: .35rem .5rem; font-size: .85rem; }
@media (max-width: 560px) {
  .chan-row { grid-template-columns: 1fr auto; }
  .chan-input { grid-column: 1 / -1; }
}

/* Gráfico de evolução por semana (barras) */
.wk-chart { display: flex; align-items: flex-end; gap: .5rem; height: 130px; padding: .4rem .2rem 0; overflow-x: auto; }
.wk-col { display: flex; flex-direction: column; align-items: center; gap: .25rem; flex: 1 0 34px; height: 100%; }
.wk-pct { font-size: .62rem; color: var(--muted); }
.wk-bar-wrap { flex: 1; width: 100%; display: flex; align-items: flex-end; background: var(--bg); border: 1px solid var(--border); border-radius: 6px; overflow: hidden; }
.wk-bar { width: 100%; border-radius: 6px 6px 0 0; transition: height .4s ease; animation: wk-grow .5s ease both; }
.wk-bar.good { background: linear-gradient(180deg, #7CFC9B, #2ecc71); }
.wk-bar.mid { background: linear-gradient(180deg, var(--accent), #d1b83a); }
.wk-bar.low { background: linear-gradient(180deg, var(--brand-2), var(--brand)); }
.wk-lbl { font-family: var(--font-pixel); font-size: .5rem; color: var(--muted); }
@keyframes wk-grow { from { height: 0 !important; } }

/* Explicação do "porquê" no caso + campo do builder */
.case-why { margin-top: .3rem; color: var(--topic); }
.builder-why { margin: -.2rem 0 .3rem; }
.builder-why input { width: 100%; font-size: .85rem; }

/* ═════════ PRINCÍPIOS CLICÁVEIS (marcar como lido) ═════════ */
.principle {
  display: flex; align-items: flex-start; gap: .6rem; width: 100%; text-align: left;
  font: inherit; color: var(--text); cursor: pointer; transition: border-color .15s, background .15s;
}
.principle:hover { border-color: var(--brand-2); }
.pr-check {
  flex: 0 0 auto; width: 20px; height: 20px; margin-top: .1rem; border-radius: 6px;
  border: 2px solid var(--border); display: grid; place-items: center; transition: background .15s, border-color .15s;
}
.principle.read .pr-check { background: var(--call); border-color: var(--call); }
.principle.read .pr-check::after { content: '✓'; color: #06231a; font-weight: 900; font-size: .78rem; }
.principle.read { border-color: rgba(33, 192, 122, .45); }
.principle.read strong { opacity: .9; }
.principle.locked { cursor: default; opacity: .6; border-style: dashed; }
.principle.locked:hover { border-color: var(--border); }
.pr-lock { flex: 0 0 auto; width: 20px; height: 20px; margin-top: .1rem; display: grid; place-items: center; font-size: .85rem; }

/* Respeita quem prefere menos movimento. */
@media (prefers-reduced-motion: reduce) {
  .led, .dex-screen-led, .dex-scan::after, .btn-primary::after, .nav-btn.active .nav-sprite,
  .day-mon .day-sprite, .day-mon-shadow, .evo-mon, .bw-bars, .bw-flash, .bh-mon, .dialogue.typing::after,
  .pod-mon, .starter-card:hover .starter-mon, .day-reveal::before, .wt-mon.shine, .wt-shiny, .th-emoji,
  .streak-flame, .dex-slot.shiny .dex-sprite, .shiny-spark, .heal-ball, .capture-beam, .capture-out,
  .wild-sprite, .wild-bang, .de-mon.shiny, .safari-ball,
  .tab-panel .exercise-card, .tab-panel .ann-card, .tab-panel .poll-card { animation: none !important; }
}

/* ══════════════ Onda A: preferências, atalhos, rush, anagrama ══════════════ */

/* #138 Reduzir animações (toggle nas Preferências) — vale para tudo. */
:root.a11y-reduce-motion *,
:root.a11y-reduce-motion *::before,
:root.a11y-reduce-motion *::after {
  animation-duration: .001ms !important;
  animation-iteration-count: 1 !important;
  transition-duration: .001ms !important;
  scroll-behavior: auto !important;
}

/* #136 Alto contraste — reforça texto, bordas e superfícies. */
:root.a11y-contrast {
  --text: #ffffff;
  --muted: #c9d6f2;
  --border: #6076b0;
  --panel: #0e1830;
  --panel-2: #1a294c;
}
:root.a11y-contrast .btn-ghost { outline: 1px solid rgba(255, 255, 255, .22); }
:root.a11y-contrast .card, :root.a11y-contrast .modal { border-width: 2px; }

/* Preferências (modal) */
/* ══ Configurações (painel redesenhado) ═══════════════════════ */
.modal:has(.settings-modal) { max-width: 560px; padding: 1.25rem; }
.set-head { display: flex; align-items: center; gap: .8rem; margin-bottom: 1.1rem; }
.set-head-ico {
  flex: 0 0 auto; font-size: 1.5rem; width: 48px; height: 48px; display: grid; place-items: center;
  border-radius: 15px; background: linear-gradient(180deg, var(--panel-2), var(--bg-2));
  border: 1px solid var(--border); box-shadow: var(--shadow-sm);
}
.set-head h3 { margin: 0; }
.set-head-sub { margin: .12rem 0 0; font-size: .82rem; color: var(--muted); }

.set-section {
  margin: 0 0 .9rem; border: 1px solid var(--border); border-radius: 16px; overflow: hidden;
  background: color-mix(in srgb, var(--panel-2) 45%, transparent);
}
.set-sec-head {
  display: flex; align-items: center; gap: .55rem; padding: .6rem .9rem;
  background: color-mix(in srgb, var(--accent) 9%, transparent); border-bottom: 1px solid var(--border);
}
.set-sec-ico { font-size: 1rem; }
.set-sec-head h4 { margin: 0; font-family: var(--font-display); font-size: .95rem; letter-spacing: .01em; flex: 1 1 auto; }
.set-list { display: flex; flex-direction: column; }

.set-item {
  display: flex; align-items: center; gap: .75rem; padding: .72rem .9rem;
  border-top: 1px solid color-mix(in srgb, var(--border) 55%, transparent);
}
.set-list > .set-item:first-child { border-top: none; }
label.set-item { cursor: pointer; transition: background .15s; }
label.set-item:hover { background: color-mix(in srgb, var(--accent) 5%, transparent); }
.set-ico {
  flex: 0 0 auto; width: 36px; height: 36px; display: grid; place-items: center; font-size: 1.05rem;
  border-radius: 11px; background: var(--bg); border: 1px solid var(--border);
}
.set-text { display: flex; flex-direction: column; gap: .12rem; min-width: 0; flex: 1 1 auto; }
.set-text strong { font-size: .92rem; }
.set-desc { font-size: .76rem; color: var(--muted); line-height: 1.32; }

/* Item "em coluna": linha de cima (ícone+texto+controle) + slider embaixo. */
.set-item--col { flex-direction: column; align-items: stretch; gap: .6rem; }
.set-item-top { display: flex; align-items: center; gap: .75rem; }
.set-range { display: flex; align-items: center; gap: .6rem; padding-left: calc(36px + .75rem); }
.set-val { flex: 0 0 auto; min-width: 3.4ch; text-align: right; font-size: .78rem; font-weight: 700; color: var(--muted); }
.set-range-a { color: var(--muted); font-weight: 800; line-height: 1; }
.set-range-a--sm { font-size: .7rem; }
.set-range-a--lg { font-size: 1.05rem; }

/* Switch (toggle) — usa o próprio checkbox estilizado. */
.set-switch {
  appearance: none; -webkit-appearance: none; flex: 0 0 auto; position: relative; box-sizing: border-box;
  width: 44px; height: 24px; border-radius: 999px; background: var(--bg); border: 1px solid var(--border);
  cursor: pointer; transition: background .2s, border-color .2s;
}
.set-switch::after {
  content: ''; position: absolute; top: 2px; left: 2px; width: 18px; height: 18px; border-radius: 50%;
  background: #fff; box-shadow: 0 1px 3px rgba(0,0,0,.45); transition: transform .18s ease;
}
.set-switch:checked { background: linear-gradient(180deg, var(--t-grass), #1e9e57); border-color: transparent; }
.set-switch:checked::after { transform: translateX(20px); }
.set-switch:focus-visible { outline: 3px solid rgba(255,203,5,.55); outline-offset: 2px; }

/* Slider de volume/fonte. */
.set-slider { flex: 1 1 auto; accent-color: var(--brand); height: 6px; min-width: 0; }
.set-slider.is-off { opacity: .4; }
.set-test { flex: 0 0 auto; padding: .3rem .55rem; }

/* Slot de controle à direita (Discord). */
.set-ctrl-slot { display: flex; align-items: center; gap: .5rem; flex: 0 0 auto; flex-wrap: wrap; justify-content: flex-end; }
.set-pill {
  font-size: .74rem; font-weight: 700; color: var(--call); white-space: nowrap;
  background: color-mix(in srgb, var(--call) 15%, transparent);
  border: 1px solid color-mix(in srgb, var(--call) 40%, transparent); padding: .22rem .55rem; border-radius: 999px;
}
.set-note { font-size: .74rem; color: var(--muted); padding: .55rem .9rem .7rem; line-height: 1.38; margin: 0; }

/* Atalhos (seção recolhível). */
details.set-shortcuts > summary { cursor: pointer; list-style: none; }
details.set-shortcuts > summary::-webkit-details-marker { display: none; }
details.set-shortcuts:not([open]) > summary { border-bottom: none; }
.set-chevron { color: var(--muted); transition: transform .2s; }
details.set-shortcuts[open] .set-chevron { transform: rotate(180deg); }
.kbd-list { display: grid; gap: .45rem; padding: .75rem .9rem; }
.kbd-row { display: flex; align-items: center; gap: .7rem; }

@media (max-width: 560px) {
  .set-range { padding-left: .2rem; }
  .set-desc { font-size: .74rem; }
}
kbd {
  font-family: var(--font-pixel); font-size: .6rem; line-height: 1;
  background: var(--panel-2); border: 1px solid var(--border); border-bottom-width: 2px;
  border-radius: 6px; padding: .35rem .5rem; color: var(--accent); white-space: nowrap; flex: 0 0 auto;
}

/* #143 Dica de rascunho salvo */
.draft-hint { margin: .2rem 0 .5rem; opacity: .8; }

/* #147 Hora do rush */
.rush-banner {
  display: flex; align-items: center; gap: .8rem; margin: 1rem 0;
  padding: .8rem 1rem; border-radius: var(--radius);
  background: linear-gradient(100deg, rgba(255,203,5,.16), rgba(238,21,21,.14));
  border: 1px solid var(--accent); box-shadow: inset 0 0 0 1px rgba(255,203,5,.12);
}
.rush-ico { font-size: 1.6rem; animation: rush-pulse 1.2s ease-in-out infinite; }
.rush-main { display: flex; flex-direction: column; gap: .1rem; }
@keyframes rush-pulse { 0%,100% { transform: scale(1); } 50% { transform: scale(1.18); } }
.coin-chip.rush { box-shadow: 0 0 0 2px var(--accent), 0 0 12px rgba(255,203,5,.5); }

/* #68 Anagrama de Pokémon */
.anagram-tiles { display: flex; flex-wrap: wrap; gap: .4rem; justify-content: center; margin: 1rem 0; }
.anagram-tile {
  width: 44px; height: 52px; display: grid; place-items: center;
  font-family: var(--font-display); font-weight: 800; font-size: 1.4rem;
  background: var(--panel-2); border: 1px solid var(--border); border-bottom-width: 3px;
  border-radius: 10px; color: var(--accent); text-transform: uppercase;
}
/* Anagrama estilo Termo: histórico de tentativas coloridas por posição */
.ana-rows { display: grid; gap: .4rem; justify-content: center; margin: .3rem 0 .6rem; }
.ana-row { display: flex; gap: .35rem; justify-content: center; }
.ana-cell {
  width: 40px; height: 46px; display: grid; place-items: center;
  font-family: var(--font-display); font-weight: 800; font-size: 1.25rem;
  border-radius: 8px; text-transform: uppercase; color: #fff;
  border: 1px solid var(--border); background: var(--panel-2);
  animation: anaFlip .3s ease both;
}
.ana-cell.correct { background: #2aa869; border-color: #2aa869; }
.ana-cell.present { background: #d9a441; border-color: #d9a441; }
.ana-cell.absent  { background: #5b606b; border-color: #5b606b; }
@keyframes anaFlip { from { transform: rotateX(-90deg); opacity: 0; } to { transform: rotateX(0); opacity: 1; } }
.ana-hint { text-align: center; }

/* ══════════════ Segundo lote de ideias (50%) ══════════════ */

/* #86 Título ao lado do nome */
.user-title { font-size: .72rem; font-style: italic; color: var(--accent-2); margin-left: .35rem; white-space: nowrap; }
.tc-title-row { display: flex; align-items: center; gap: .6rem; flex-wrap: wrap; margin: .2rem 0 .6rem; }
.tc-title-sel { flex: 0 0 auto; }

/* #83 Amizade do parceiro */
.evo-affection { display: block; margin-top: .25rem; font-size: .8rem; letter-spacing: .06em; text-align: center; }

/* #94 Confete */
.confetti-host { position: fixed; inset: 0; z-index: 60; pointer-events: none; overflow: hidden; }
.confetti-bit { position: absolute; top: -14px; width: 9px; height: 14px; border-radius: 2px; opacity: .95; animation: confetti-fall linear forwards; }
@keyframes confetti-fall { to { transform: translateY(110vh) rotate(540deg); opacity: 1; } }

/* ═════════ 🎆 FOGOS DE ARTIFÍCIO ═════════
   Foguete sobe (.fw-shell) → estoura em faíscas (.fw-spark) que voam para
   fora e caem. Ângulo/distância vêm do JS em --dx/--dy; o resto é CSS, então
   dezenas de faíscas não custam um rAF por partícula. Fica ACIMA do overlay
   de abertura (z 3200) para os fogos aparecerem na frente do cartaz. */
.fw-host { position: fixed; inset: 0; z-index: 3210; pointer-events: none; overflow: hidden; }
.fw-shell {
  position: absolute; bottom: -10px; width: 5px; height: 5px; border-radius: 50%;
  animation: fw-rise var(--fw-rise, 700ms) cubic-bezier(.2, .5, .5, 1) forwards;
}
@keyframes fw-rise {
  0%   { transform: translateY(0) scaleY(1.6); opacity: 0; }
  12%  { opacity: 1; }
  100% { transform: translateY(calc(var(--fw-top) - 100vh)) scaleY(1); opacity: .9; }
}
.fw-burst { position: absolute; width: 0; height: 0; }
.fw-spark {
  position: absolute; left: 0; top: 0; width: 5px; height: 5px; border-radius: 50%;
  opacity: 0; animation: fw-fly 1.25s cubic-bezier(.12, .7, .3, 1) var(--d, 0ms) forwards;
}
@keyframes fw-fly {
  0%   { transform: translate(0, 0) scale(1.4); opacity: 1; }
  70%  { opacity: 1; }
  100% { transform: translate(var(--dx), calc(var(--dy) + 46px)) scale(.35); opacity: 0; }
}

/* ═════════ 🎉 ABERTURA DA MENTORIA ═════════ */
.kick-overlay {
  position: fixed; inset: 0; z-index: 3200; display: grid; place-items: center;
  padding: 1.2rem; cursor: pointer; overflow-y: auto;
  background: radial-gradient(circle at 50% 38%, rgba(59, 76, 202, .55), rgba(4, 7, 14, .94));
  animation: cap-fade .3s ease both;
}
.kick-stage {
  position: relative; cursor: default; text-align: center; margin: auto;
  display: flex; flex-direction: column; align-items: center; gap: .55rem;
  max-width: min(640px, 100%);
}
.kick-rays {
  position: absolute; top: -70px; left: 50%; translate: -50% 0; /* `translate` separado do transform: o spin usa transform */
  width: min(460px, 120vw); height: min(460px, 120vw);
  border-radius: 50%; z-index: -1; pointer-events: none;
  background: repeating-conic-gradient(from 0deg, rgba(255, 203, 5, .38) 0 5deg, transparent 5deg 16deg);
  -webkit-mask: radial-gradient(circle, transparent 18%, #000 22%, #000 58%, transparent 66%);
          mask: radial-gradient(circle, transparent 18%, #000 22%, #000 58%, transparent 66%);
  animation: lu-spin 14s linear infinite;
}
.kick-eyebrow {
  font-size: .82rem; font-weight: 800; letter-spacing: .16em; text-transform: uppercase;
  color: var(--accent, #ffcb05); text-shadow: 0 2px 10px rgba(0, 0, 0, .6);
}
/* O pedido era "bem grande": escala com a viewport, mas com teto e chão. */
.kick-word { margin: 0; display: flex; flex-direction: column; line-height: .92; }
.kick-word span {
  font-weight: 900; letter-spacing: .01em; text-transform: uppercase;
  background: linear-gradient(180deg, #fff 18%, #ffcb05 62%, #ff9b21 100%);
  -webkit-background-clip: text; background-clip: text; color: transparent;
  filter: drop-shadow(0 4px 0 rgba(0, 0, 0, .45)) drop-shadow(0 0 26px rgba(255, 203, 5, .55));
  animation: kick-pop .6s cubic-bezier(.2, 1.5, .4, 1) both;
}
.kick-line-1 { font-size: clamp(2.3rem, 11vw, 4.6rem); }
.kick-line-2 { font-size: clamp(3rem, 15vw, 6.4rem); animation-delay: .12s; }
.kick-mon { display: flex; align-items: flex-end; justify-content: center; gap: .2rem; min-height: 96px; }
.kick-sprite { width: 104px; height: 104px; image-rendering: pixelated; animation: kick-bounce 1.5s ease-in-out infinite; }
.kick-trainer { width: 92px; height: 92px; object-fit: contain; image-rendering: pixelated; filter: drop-shadow(0 4px 5px rgba(0, 0, 0, .5)); }
.kick-sub { margin: 0; max-width: 34rem; color: #dfe6f5; font-size: .96rem; line-height: 1.5; }
.kick-cta { margin-top: .5rem; font-size: 1.05rem; padding: .75rem 1.6rem; }
@keyframes kick-pop {
  0%   { opacity: 0; transform: scale(.55) translateY(18px); }
  100% { opacity: 1; transform: scale(1) translateY(0); }
}
@keyframes kick-bounce { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-10px); } }
/* O confete mora em z 60; durante a abertura ele precisa passar na frente do
   cartaz (z 3200), senão a chuva some atrás do overlay. */
body.kick-open .confetti-host { z-index: 3205; }
.kick-overlay.instant .kick-rays, .kick-overlay.instant .kick-sprite { animation: none; }
.kick-overlay.instant .kick-word span { animation: none; opacity: 1; transform: none; }

/* #92/#144 Clima + estações (overlays sutis no fundo) */
body.weather-rain::after, body.weather-night::after {
  content: ''; position: fixed; inset: 0; z-index: -1; pointer-events: none;
}
body.weather-rain::after {
  background-image: repeating-linear-gradient(115deg, rgba(140,180,255,.10) 0 1px, transparent 1px 9px);
  animation: rain-move 0.7s linear infinite; opacity: .5;
}
@keyframes rain-move { to { background-position: -60px 120px; } }
body.weather-night::after { background: radial-gradient(1200px 600px at 80% -10%, rgba(40,60,140,.18), transparent 60%); }
body.season-halloween { filter: saturate(1.05) hue-rotate(-8deg); }
body.season-xmas::before, body.season-summer::before { content: ''; }

/* #92 Safari status (clima do dia) */
.safari-status { display: flex; align-items: center; gap: .8rem; margin: 1rem 0; padding: .7rem 1rem; border-radius: var(--radius); background: var(--panel-2); border: 1px solid var(--border); }
.safari-status .sf-ico { font-size: 1.5rem; }
.safari-status .sf-main { display: flex; flex-direction: column; gap: .25rem; }
.sf-chips { display: flex; flex-wrap: wrap; gap: .4rem; }
.sf-chips span { font-size: .72rem; font-weight: 700; background: var(--panel); border: 1px solid var(--border); border-radius: 99px; padding: .1rem .5rem; }
.sf-cday { color: var(--accent); border-color: var(--accent) !important; }

/* #76 Roleta do dia */
.roulette-wrap { text-align: center; }
.roulette-display { margin: 1rem auto; padding: 1.2rem; min-height: 3.4rem; display: grid; place-items: center; font-family: var(--font-display); font-weight: 800; font-size: 1.2rem; border: 2px dashed var(--border); border-radius: 14px; background: var(--panel-2); }
.roulette-display.landed { border-style: solid; border-color: var(--accent); box-shadow: var(--ring); animation: rush-pulse .5s ease; }

/* #71 Sequência (Simon) */
.simon-grid { display: grid; grid-template-columns: 1fr 1fr; gap: .8rem; max-width: 360px; margin: 1rem auto; }
.simon-grid.big { grid-template-columns: 1fr 1fr 1fr; max-width: 460px; }
.simon-pad { padding: .8rem; border-radius: 16px; border: 2px solid var(--border); background: var(--panel-2); cursor: pointer; transition: transform .1s ease, box-shadow .1s ease; }
.simon-mon { width: 84px; height: 84px; object-fit: contain; image-rendering: pixelated; pointer-events: none; }
.simon-pad.lit { border-color: var(--accent); box-shadow: 0 0 0 3px rgba(255,203,5,.5), 0 0 18px rgba(255,203,5,.4); transform: scale(1.05); background: rgba(255,203,5,.12); }
.simon-status { text-align: center; margin-top: .4rem; }

/* #67 Forca (solo) */
.forca-hint { text-align: center; margin: .4rem 0; }
.forca-word { display: flex; flex-wrap: wrap; gap: .4rem; justify-content: center; margin: 1rem 0; }
.forca-slot { width: 34px; height: 44px; display: grid; place-items: center; font-family: var(--font-display); font-weight: 800; font-size: 1.3rem; border-bottom: 3px solid var(--border); color: var(--accent); text-transform: uppercase; }
.forca-slot.on { border-bottom-color: var(--accent); }
.forca-kb { display: flex; flex-wrap: wrap; gap: .35rem; justify-content: center; max-width: 420px; margin: 0 auto; }
.forca-key { width: 34px; height: 38px; border-radius: 8px; border: 1px solid var(--border); background: var(--panel-2); color: var(--text); font-weight: 700; cursor: pointer; }
.forca-key:hover:not(.used) { border-color: var(--accent); }
.forca-key.used { opacity: .35; cursor: default; }

/* #69 Ordene o protocolo */
.order-list { display: grid; gap: .5rem; max-width: 560px; margin: .8rem auto; }
.order-item { display: flex; align-items: center; gap: .7rem; text-align: left; padding: .6rem .8rem; border-radius: 12px; border: 1px solid var(--border); background: var(--panel-2); color: var(--text); cursor: pointer; }
.order-item.chosen { border-color: var(--accent); background: rgba(255,203,5,.1); }
.order-num { flex: 0 0 auto; width: 26px; height: 26px; display: grid; place-items: center; border-radius: 50%; background: var(--panel); border: 1px solid var(--border); font-family: var(--font-pixel); font-size: .58rem; color: var(--accent); }

/* #141 Busca rápida (paleta de comandos) */
.search-input { width: 100%; font-size: 1.05rem; padding: .7rem .9rem; margin-bottom: .6rem; }
.search-results { display: grid; gap: .25rem; max-height: 52vh; overflow-y: auto; }
.search-row { display: flex; align-items: center; gap: .7rem; width: 100%; text-align: left; padding: .55rem .7rem; border-radius: 10px; border: 1px solid transparent; background: transparent; color: var(--text); cursor: pointer; }
.search-row:hover, .search-row.active { background: var(--panel-2); border-color: var(--border); }
.search-ico { flex: 0 0 auto; font-size: 1.1rem; }
.search-label { flex: 1 1 auto; font-weight: 600; }
.search-hint { flex: 0 0 auto; }

/* ══════════════ 3º lote (continuação) ══════════════ */

/* #84 Consumíveis na loja */
.shop-active { display: inline-block; margin-top: .2rem; font-size: .68rem; font-weight: 700; color: var(--call); }
.shop-boosts { margin: .3rem 0 .6rem; padding: .5rem .7rem; border-radius: 10px; background: rgba(33,192,122,.12); border: 1px solid var(--call); font-size: .8rem; }

/* #91 Incubadora por passos */
.stepegg-card { display: flex; align-items: center; gap: .8rem; margin: 1rem 0; padding: .8rem 1rem; border-radius: var(--radius); background: var(--panel); border: 1px solid var(--border); }
.stepegg-ico { font-size: 1.8rem; flex: 0 0 auto; }
.stepegg-ico.ready { animation: rush-pulse 1s ease-in-out infinite; }
.stepegg-main { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: .3rem; }
.stepegg-bar { height: 9px; background: var(--panel-2); border-radius: 99px; overflow: hidden; }
.stepegg-fill { display: block; height: 100%; background: linear-gradient(90deg, var(--lens), var(--call)); border-radius: 99px; transition: width .3s ease; }

/* #72 Fraqueza de tipos */
.type-opts { display: grid; grid-template-columns: 1fr 1fr; gap: .6rem; margin: 1rem 0; }
.type-opt { font-weight: 800; color: #10151f; border: none; padding: .7rem; border-radius: 12px; }
.type-opt.t-normal{background:var(--t-normal)}.type-opt.t-fire{background:var(--t-fire)}
.type-opt.t-water{background:var(--t-water)}.type-opt.t-grass{background:var(--t-grass)}
.type-opt.t-electric{background:var(--t-electric)}.type-opt.t-ice{background:var(--t-ice)}
.type-opt.t-fighting{background:var(--t-fighting)}.type-opt.t-poison{background:var(--t-poison)}
.type-opt.t-ground{background:var(--t-ground)}.type-opt.t-flying{background:var(--t-flying)}
.type-opt.t-psychic{background:var(--t-psychic)}.type-opt.t-bug{background:var(--t-bug)}
.type-opt.t-rock{background:var(--t-rock)}.type-opt.t-ghost{background:var(--t-ghost);color:#fff}
.type-opt.t-dragon{background:var(--t-dragon);color:#fff}
.type-opt[disabled] { opacity: .55; }

/* ══════════════ 4º lote (continuação) ══════════════ */

/* #64 Glossário por categoria */
.gloss-chips { display: flex; flex-wrap: wrap; gap: .4rem; margin: .5rem 0; }
.gloss-chip { font-size: .74rem; font-weight: 700; padding: .25rem .6rem; border-radius: 99px; border: 1px solid var(--border); background: var(--panel-2); color: var(--text); cursor: pointer; }
.gloss-chip.on { border-color: var(--accent); background: rgba(255,203,5,.14); color: var(--accent); }
.gloss-cat { font-size: .64rem; font-weight: 700; color: var(--muted); margin-left: .4rem; }

/* #148 Caça ao tesouro (baú escondido) */
.treasure-chest {
  position: fixed; z-index: 30; width: 42px; height: 42px; border: none; cursor: pointer;
  font-size: 1.5rem; line-height: 1; background: transparent; opacity: .82;
  filter: drop-shadow(0 3px 5px rgba(0,0,0,.5)); animation: treasure-bob 1.4s ease-in-out infinite;
}
.treasure-chest:hover { opacity: 1; transform: scale(1.15); }
@keyframes treasure-bob { 0%,100% { transform: translateY(0) rotate(-6deg); } 50% { transform: translateY(-6px) rotate(6deg); } }

/* ══════════════ 5º lote (continuação) ══════════════ */

/* #77 Torre de desafios */
.tower-track { position: relative; height: 120px; width: 60px; margin: .6rem auto; border-radius: 10px; background: linear-gradient(var(--panel-2), var(--panel)); border: 1px solid var(--border); overflow: hidden; }
.tower-climber { position: absolute; left: 50%; transform: translateX(-50%); font-size: 1.4rem; transition: bottom .35s ease; }

/* #58 Reescreva o tom */
.tone-input { width: 100%; min-height: 110px; resize: vertical; }

/* ══════════════ 6º lote (continuação) ══════════════ */

/* #145 Calendário de recompensas diárias */
.daily-banner { display: flex; align-items: center; gap: .8rem; width: 100%; text-align: left; margin: 1rem 0; padding: .8rem 1rem; border-radius: var(--radius); cursor: pointer;
  background: linear-gradient(100deg, rgba(59,76,202,.18), rgba(255,203,5,.14)); border: 1px solid var(--accent); color: var(--text); }
.daily-banner .db-ico { font-size: 1.6rem; }
.daily-banner .db-main { display: flex; flex-direction: column; gap: .1rem; flex: 1 1 auto; }
.daily-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: .5rem; margin: .6rem 0; }
.daily-cell { position: relative; display: flex; flex-direction: column; align-items: center; gap: .2rem; padding: .6rem .3rem; border-radius: 12px; border: 1px solid var(--border); background: var(--panel-2); text-align: center; }
.daily-cell .daily-day { font-size: .68rem; color: var(--muted); font-weight: 700; }
.daily-cell .daily-prize { font-family: var(--font-display); font-weight: 800; font-size: .9rem; color: var(--accent); }
.daily-cell.next { border-color: var(--accent); box-shadow: var(--ring); animation: rush-pulse 1.2s ease-in-out infinite; }
.daily-cell.claimed { opacity: .6; }
.daily-cell .daily-check { position: absolute; top: 4px; right: 6px; color: var(--call); font-weight: 800; font-size: .8rem; }

/* ══════════════ Backend leva social/insights ══════════════ */

/* #111 Caixinha de ideias */
.idea-item { display: flex; gap: .7rem; align-items: flex-start; padding: .7rem 0; border-top: 1px dashed var(--border); }
.idea-item:first-child { border-top: none; }
.idea-vote { flex: 0 0 auto; display: flex; flex-direction: column; align-items: center; gap: .1rem; min-width: 44px; padding: .35rem .2rem; border-radius: 10px; border: 1px solid var(--border); background: var(--panel-2); color: var(--text); cursor: pointer; line-height: 1; }
.idea-vote span { font-size: .8rem; }
.idea-vote.on { border-color: var(--accent); background: rgba(255,203,5,.14); color: var(--accent); }
.idea-main { flex: 1 1 auto; min-width: 0; }
.idea-body { margin: 0 0 .35rem; white-space: pre-wrap; word-break: break-word; }
.idea-badge { font-size: .66rem; font-weight: 800; border-radius: 99px; padding: .06rem .45rem; background: var(--panel-2); flex: 0 0 auto; }
.idea-badge.s-planned { color: var(--topic); } .idea-badge.s-done { color: var(--call); } .idea-badge.s-declined { color: var(--muted); }
.idea-status-sel { font-size: .7rem; }

/* #108 Mural da fama */
.testi-item { border-left: 3px solid var(--accent); padding: .5rem .8rem; margin: .5rem 0; background: var(--panel-2); border-radius: 0 10px 10px 0; }
.testi-quote { font-style: italic; line-height: 1.45; }
.testi-by { display: flex; align-items: center; gap: .4rem; margin-top: .35rem; }

/* #110 Reações */
.react-bar { display: flex; gap: .3rem; margin-top: .4rem; flex-wrap: wrap; }
.react-btn { display: inline-flex; align-items: center; gap: .2rem; padding: .12rem .45rem; border-radius: 99px; border: 1px solid var(--border); background: transparent; color: var(--text); cursor: pointer; font-size: .82rem; }
.react-btn:hover { border-color: var(--accent); }
.react-btn.on { border-color: var(--accent); background: rgba(255,203,5,.14); }
.react-n { font-size: .72rem; font-weight: 700; color: var(--muted); }

/* #115 Status no perfil / rankings */
.tc-status-input { width: 100%; }
.sr-namecol { display: flex; flex-direction: column; min-width: 0; }
.sr-status { font-size: .68rem; color: var(--muted); font-style: italic; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 40vw; }

/* #132 Anotações do mentor */
.mentor-notes-box { margin-top: .8rem; padding-top: .6rem; border-top: 1px dashed var(--border); min-width: 0; width: 100%; }
.mentor-notes { display: block; box-sizing: border-box; width: 100%; max-width: 100%; min-height: 90px; resize: vertical; margin: .3rem 0; }
.mentor-notes-box .ac-actions { display: flex; align-items: center; justify-content: space-between; gap: .6rem; }

/* ══════════════ 8º lote — jogos educativos (IDEIAS-100) ══════════════ */

/* #70 Caça ao golpista */
.scam-list { display: flex; flex-direction: column; gap: .5rem; margin: 1rem 0; }
.scam-offer { text-align: left; white-space: normal; line-height: 1.4; padding: .7rem .9rem; border: 1px solid var(--border); background: var(--panel-2); color: var(--text); border-radius: 12px; font-weight: 600; }
.scam-offer:hover:not([disabled]) { border-color: var(--accent); }
.scam-offer.bad { border-color: var(--deadline); background: rgba(255,80,80,.14); }
.scam-offer.good { border-color: var(--call); background: rgba(80,220,120,.12); }
.scam-offer[disabled] { opacity: .7; cursor: default; }

/* #53 Aviso, mute ou ban? — reaproveita .type-opts/.type-opt */
.type-opts .punish-aviso { background: var(--t-electric); }
.type-opts .punish-mute { background: var(--t-water); }
.type-opts .punish-ban { background: var(--t-fighting); color: #fff; }

/* #62 Detetive de logs */
.log-lines { display: flex; flex-direction: column; gap: .35rem; margin: 1rem 0; background: var(--panel-2); border: 1px solid var(--border); border-radius: 12px; padding: .5rem; }
.log-line { display: flex; gap: .6rem; align-items: baseline; text-align: left; white-space: normal; padding: .45rem .6rem; border: 1px solid transparent; background: transparent; color: var(--text); border-radius: 8px; font-family: var(--font-mono, monospace); font-size: .9rem; }
.log-line:hover:not([disabled]) { background: rgba(255,255,255,.05); border-color: var(--accent); }
.log-line.bad { border-color: var(--deadline); background: rgba(255,80,80,.14); }
.log-line[disabled] { cursor: default; }
.log-user { font-weight: 800; color: var(--accent); flex: 0 0 auto; min-width: 3.5rem; }
.log-text { color: var(--text); }

/* #54 Árvore de decisão */
.tree-path { display: flex; flex-wrap: wrap; gap: .4rem; margin-bottom: .8rem; }
.tree-crumb { font-size: .72rem; font-weight: 700; padding: .2rem .6rem; border-radius: 99px; background: var(--panel-2); border: 1px solid var(--border); color: var(--muted); }

/* #78 Encaixe a punição */
.match-grid { display: grid; grid-template-columns: 1fr 1fr; gap: .8rem; margin: 1rem 0; }
.match-col { display: flex; flex-direction: column; gap: .5rem; }
.match-item { text-align: left; white-space: normal; line-height: 1.35; padding: .65rem .8rem; border: 1px solid var(--border); background: var(--panel-2); color: var(--text); border-radius: 12px; font-weight: 600; min-height: 3.2rem; }
.match-item:hover:not(.done) { border-color: var(--accent); }
.match-item.sel { border-color: var(--accent); background: rgba(255,203,5,.14); }
.match-item.done { border-color: var(--call); background: rgba(80,220,120,.14); opacity: .8; }
.match-item.miss { border-color: var(--deadline); background: rgba(255,80,80,.16); }

/* #146 Modo história */
.story-rep { display: inline-block; font-family: var(--font-display); font-weight: 800; font-size: .85rem; padding: .25rem .7rem; border-radius: 99px; background: var(--panel-2); border: 1px solid var(--border); color: var(--accent); margin-bottom: .6rem; }

/* #74 Modere o chat ao vivo */
.livemod-feed { display: flex; flex-direction: column; gap: .4rem; margin: 1rem 0; min-height: 15rem; max-height: 22rem; overflow-y: auto; background: var(--panel-2); border: 1px solid var(--border); border-radius: 12px; padding: .6rem; }
.livemod-msg { display: flex; gap: .6rem; align-items: baseline; text-align: left; white-space: normal; padding: .55rem .7rem; border: 1px solid var(--border); background: var(--panel); color: var(--text); border-radius: 10px; font-size: .92rem; animation: livemod-in .35s ease; transition: opacity .4s ease, transform .4s ease; }
.livemod-msg:hover:not([disabled]) { border-color: var(--accent); }
.livemod-msg.muted { border-color: var(--call); background: rgba(80,220,120,.14); }
.livemod-msg.wrongmute { border-color: var(--deadline); background: rgba(255,80,80,.16); }
.livemod-msg.expired { border-color: var(--deadline); background: rgba(255,80,80,.08); opacity: .6; }
.livemod-msg.leaving { opacity: 0; transform: translateX(30px); }
@keyframes livemod-in { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } }

/* #63 Roleplay de atendimento */
.rp-bubble { position: relative; margin: 1rem 0 .8rem; padding: .8rem 1rem; background: var(--panel-2); border: 1px solid var(--border); border-radius: 14px 14px 14px 4px; line-height: 1.45; font-weight: 600; }
.rp-bubble::before { content: '💬'; position: absolute; left: -.4rem; top: -.6rem; font-size: 1.1rem; }

/* ══════════════ Loja: temas visuais + selo de emote ══════════════ */
/* Cada tema troca o clima de superfícies e acentos do portal inteiro. */
body.theme-rocket {
  --bg: #140609; --bg-2: #22090e; --panel: #2a0d13; --panel-2: #3a141c; --border: #5a2230;
  --brand: #ff2b2b; --brand-2: #ff6a5a; --accent: #ff4d4d; --accent-2: #ff8a8a; --royal: #6a1020;
}
body.theme-ocean {
  --bg: #04121f; --bg-2: #06213a; --panel: #082b4d; --panel-2: #0d3a63; --border: #145a8c;
  --brand: #1f8fff; --brand-2: #4db6ff; --accent: #37c6ff; --accent-2: #8ee2ff; --royal: #0a4f8c;
}
body.theme-forest {
  --bg: #071408; --bg-2: #0c2110; --panel: #102b16; --panel-2: #163a1f; --border: #275a33;
  --brand: #3bbf5a; --brand-2: #6ad98a; --accent: #7ee08a; --accent-2: #b6f0bf; --royal: #17632f;
}
/* Selo de emote exclusivo no canto inferior esquerdo (visível pra você e no seu card). */
.emote-badge {
  position: fixed; left: 14px; bottom: 14px; z-index: 60;
  width: 46px; height: 46px; display: grid; place-items: center;
  font-size: 1.5rem; border-radius: 50%;
  background: var(--panel-2); border: 2px solid var(--accent);
  box-shadow: 0 4px 14px rgba(0,0,0,.4); cursor: default; user-select: none;
  animation: emote-pop .3s ease both;
}
@keyframes emote-pop { from { transform: scale(0) rotate(-30deg); } to { transform: scale(1) rotate(0); } }

/* "Dias sem erro grave" — chip compacto (sem botão manual, registro automático) */
.clean-chip { display: flex; align-items: center; gap: .6rem; padding: .5rem .75rem; border-radius: 12px; background: var(--panel); border: 1px solid var(--border); }
.clean-chip .clean-ico { font-size: 1.3rem; flex: none; }
.clean-chip .clean-main { display: flex; flex-direction: column; line-height: 1.18; min-width: 0; }
.clean-chip .clean-main strong { font-size: .92rem; }
.clean-mini-bar { flex: 1; height: 6px; border-radius: 99px; background: var(--panel-2); overflow: hidden; min-width: 40px; }
.clean-mini-fill { display: block; height: 100%; background: linear-gradient(90deg, var(--call), var(--accent)); }

/* Aba Aprender — grade de recursos educativos */
.learn-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: .7rem; margin: .8rem 0 1.4rem; }
.learn-card { display: flex; align-items: center; gap: .8rem; text-align: left; padding: .85rem 1rem; border-radius: 14px; border: 1px solid var(--border); background: var(--panel); cursor: pointer; color: var(--text); transition: border-color .15s, transform .08s, background .15s; }
.learn-card:hover { border-color: var(--accent); background: var(--panel-2); transform: translateY(-2px); }
.learn-ico { font-size: 1.7rem; flex: none; }
.learn-main { display: flex; flex-direction: column; gap: .1rem; min-width: 0; line-height: 1.25; }
.learn-main strong { font-size: 1rem; }
.learn-go { margin-left: auto; font-size: 1.4rem; color: var(--muted); flex: none; }
@media (max-width: 520px) { .learn-grid { grid-template-columns: 1fr; } }

/* Dock de encontro selvagem — atalhos (Pokébola/Pokédex) acima do chat */
.encounter-dock {
  position: fixed; right: max(1rem, env(safe-area-inset-right));
  bottom: calc(88px + env(safe-area-inset-bottom)); z-index: 45;
  width: min(300px, calc(100vw - 2rem)); max-width: calc(100vw - 2rem);
  max-height: min(44vh, 390px); min-width: 0;
  box-sizing: border-box; overflow-x: hidden; overflow-y: auto; overscroll-behavior: contain;
  display: flex; flex-direction: column; gap: .55rem;
  padding: .75rem; border-radius: 18px;
  background: linear-gradient(160deg, color-mix(in srgb, var(--brand) 18%, var(--panel)), var(--panel-2));
  border: 1px solid color-mix(in srgb, var(--accent) 55%, var(--border));
  box-shadow: 0 14px 34px rgba(0,0,0,.55), inset 0 1px 0 rgba(255,255,255,.1);
  backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px);
  animation: chat-pop-in .28s ease;
}
/* Cabeçalho: miniatura do sprite REAL + nome do encontro. */
.enc-info {
  display: flex; align-items: center; gap: .65rem; min-width: 0; width: 100%;
  padding-bottom: .55rem; border-bottom: 1px solid color-mix(in srgb, var(--border) 80%, transparent);
}
.enc-thumb {
  flex: 0 0 auto; width: 62px; height: 62px; display: grid; place-items: center;
  background: radial-gradient(circle at 50% 38%, rgba(255,255,255,.14), transparent 70%), var(--bg);
  border: 1px solid color-mix(in srgb, var(--accent) 30%, var(--border)); border-radius: 15px;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.08);
}
.enc-thumb-img { width: 54px; height: 54px; object-fit: contain; image-rendering: pixelated; filter: drop-shadow(0 2px 3px rgba(0,0,0,.5)); }
.enc-thumb-img.shiny { filter: drop-shadow(0 0 6px rgba(255,226,122,.9)) drop-shadow(0 2px 3px rgba(0,0,0,.5)); }
.enc-meta { display: flex; flex-direction: column; gap: .2rem; min-width: 0; flex: 1 1 auto; }
.enc-tag { font-size: .62rem; font-weight: 900; color: var(--accent); text-transform: uppercase; letter-spacing: .05em; line-height: 1.1; }
.enc-name { font-family: var(--font-display); font-size: clamp(.86rem, 2vw, 1rem); line-height: 1.15; color: var(--text); overflow-wrap: anywhere; }

/* Ações: grade 2 colunas; o botão principal (batalhar) ocupa a linha toda. */
.enc-actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .5rem; width: 100%; min-width: 0; }
.enc-actions .enc-battle,
.enc-actions .enc-flee { grid-column: 1 / -1; }
.enc-btn {
  display: flex; align-items: center; justify-content: center; gap: .3rem;
  width: 100%; min-width: 0; min-height: 42px; padding: .5rem .4rem; border-radius: 11px;
  font-size: .76rem; line-height: 1.1; font-weight: 700; cursor: pointer;
  color: var(--text); border: 1px solid color-mix(in srgb, var(--accent) 40%, var(--border));
  background: linear-gradient(160deg, var(--panel-2), var(--panel));
  box-shadow: inset 0 1px 0 rgba(255,255,255,.1);
  transition: transform .12s ease, border-color .15s, box-shadow .15s, filter .15s;
}
.enc-btn:hover { transform: translateY(-1px); border-color: var(--accent); box-shadow: 0 0 0 2px color-mix(in srgb, var(--accent) 35%, transparent); }
.enc-btn:focus-visible { outline: 3px solid color-mix(in srgb, var(--accent) 70%, transparent); outline-offset: 2px; }
.enc-ico { font-size: 1.08rem; line-height: 1; flex: 0 0 auto; }
.enc-ico-img { width: 20px; height: 20px; object-fit: contain; image-rendering: pixelated; flex: 0 0 auto; }
.enc-btn-lbl { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.enc-btn.enc-battle { background: linear-gradient(135deg, var(--brand), color-mix(in srgb, var(--brand) 70%, #8b0712)); color: #fff; border-color: var(--brand-ink); font-size: .86rem; padding: .62rem .5rem; min-height: 46px; }
.enc-btn.enc-battle:hover { filter: brightness(1.08); }
/* Fugir: ação secundária discreta (largura total, abaixo de Batalhar). */
.enc-btn.enc-flee { background: transparent; color: var(--muted); border-color: color-mix(in srgb, var(--border) 80%, transparent); font-size: .72rem; padding: .4rem; min-height: 36px; }
.enc-btn.enc-flee:hover { color: var(--text); border-color: var(--accent); box-shadow: none; transform: none; }
.wild-mon.spotlight { animation: wild-spot 1.4s ease; }
@keyframes wild-spot { 0%,100% { filter: none; transform: scale(1); } 20% { filter: drop-shadow(0 0 12px var(--accent)); transform: scale(1.25); } 50% { transform: scale(1.12); } }
@media (max-width: 560px) {
  .wild-mon { width: 92px; height: 92px; }
  .wild-sprite { width: 92px; height: 92px; }
  .encounter-dock {
    left: .65rem; right: .65rem; bottom: calc(74px + env(safe-area-inset-bottom));
    width: auto; max-width: none; max-height: min(42vh, 340px); padding: .7rem;
  }
  .enc-info { gap: .7rem; }
  .enc-thumb { width: 58px; height: 58px; }
  .enc-thumb-img { width: 50px; height: 50px; }
  .enc-btn { min-height: 44px; font-size: .8rem; }
}
@media (min-width: 561px) and (max-height: 700px) {
  .encounter-dock { bottom: 1rem; max-height: min(52vh, 330px); }
}
@media (max-width: 360px) {
  .encounter-dock { left: .45rem; right: .45rem; padding: .6rem; border-radius: 16px; }
  .enc-thumb { width: 52px; height: 52px; }
  .enc-thumb-img { width: 46px; height: 46px; }
  .enc-actions { gap: .4rem; }
  .enc-btn { min-height: 42px; font-size: .75rem; }
  .enc-ico { font-size: 1rem; }
  .enc-ico-img { width: 19px; height: 19px; }
}


/* ══ STATUS DA POKÉDEX (barras de atributo) ════════════════ */
.dex-stats { margin: .6rem 0; display: grid; gap: .32rem; }
.dex-stats-head { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: .2rem; }
.dex-stats .stat-total { font-family: var(--font-display); font-weight: 800; font-size: .8rem; color: var(--accent); }
.stat-row { display: grid; grid-template-columns: 72px 34px 1fr; align-items: center; gap: .5rem; }
.stat-row .stat-name { font-size: .72rem; color: var(--muted); font-weight: 700; }
.stat-row .stat-val { font-size: .78rem; font-weight: 800; text-align: right; font-variant-numeric: tabular-nums; }
.stat-track { height: 9px; background: var(--bg); border-radius: 999px; overflow: hidden; border: 1px solid var(--border); }
.stat-fill { height: 100%; border-radius: 999px; transition: width .5s cubic-bezier(.2,.8,.2,1); }

/* ══ ⚔️ BATALHA POKÉMON (estilo Fire Red) ══════════════════ */
.battle-body { display: flex; flex-direction: column; gap: .7rem; flex: 1 1 auto; }
/* A batalha ocupa mais da tela (a janela do jogo é um overlay). */
.game-inner.game-theme-battle { max-width: 940px; display: flex; flex-direction: column; }
/* O cabeçalho da arena NÃO pode ser fixo aqui: ao rolar (telas grandes/zoom) o
   título "grudava" e cobria a caixa de HP do inimigo. Rola junto com a cena. */
.game-inner.game-theme-battle .editor-head { position: static; top: auto; z-index: 1; }
.bt-scene {
  position: relative; border-radius: 16px; padding: 1.1rem 1.2rem; overflow: hidden;
  min-height: min(74vh, 680px); flex: 1 1 auto;
  display: flex; flex-direction: column; justify-content: space-between;
  background:
    radial-gradient(60% 40% at 82% 10%, rgba(255,255,255,.35) 0, transparent 55%),
    radial-gradient(30% 18% at 22% 16%, rgba(255,255,255,.5) 0, transparent 70%),
    radial-gradient(70% 30% at 28% 60%, #7cc36a 0 40%, transparent 42%),
    radial-gradient(80% 32% at 80% 62%, #6fb85f 0 42%, transparent 44%),
    linear-gradient(180deg, #6fb7ee 0%, #bfe6f4 44%, #b7e58f 47%, #7ecb57 72%, #5fae44 100%);
  border: 3px solid rgba(0,0,0,.4);
  box-shadow: inset 0 0 0 2px rgba(255,255,255,.28), inset 0 -40px 60px rgba(0,60,0,.18), var(--shadow);
}
/* Faixas de "campo" em perspectiva no chão */
.bt-scene::before {
  content: ""; position: absolute; left: -10%; right: -10%; bottom: -8%; height: 46%;
  background: repeating-linear-gradient(95deg, rgba(255,255,255,.06) 0 22px, transparent 22px 60px);
  transform: perspective(300px) rotateX(52deg); transform-origin: bottom; pointer-events: none;
}
.bt-row { position: relative; z-index: 1; display: flex; align-items: flex-end; justify-content: space-between; gap: 1rem; }
.bt-enemy-row { align-items: flex-start; }
.bt-stage { position: relative; display: grid; place-items: center; }
/* Plataforma elíptica sob cada Pokémon (à la Fire Red) */
.bt-stage::before {
  content: ""; position: absolute; bottom: -6px; left: 50%; transform: translateX(-50%);
  width: 200px; height: 50px; border-radius: 50%; z-index: 0;
  background: radial-gradient(ellipse at 50% 35%, rgba(120,200,90,.95) 0 45%, rgba(90,170,66,.9) 70%, rgba(70,140,50,.5) 100%);
  box-shadow: 0 6px 12px rgba(0,0,0,.22);
}
.bt-enemy-stage::before { width: 156px; height: 40px; }
.bt-stage::after {
  content: ""; position: absolute; bottom: -2px; left: 50%; transform: translateX(-50%);
  width: 140px; height: 22px; border-radius: 50%; background: rgba(0,0,0,.16); filter: blur(3px); z-index: 0;
}
/* Pokébola desenhada em CSS (topo vermelho / branco embaixo / faixa preta) */
.pokeball {
  --pb-top: #ee1515; /* Pokébola padrão */
  display: inline-block; position: relative; width: 22px; height: 22px; border-radius: 50%;
  background: linear-gradient(#fff 0 50%, #f2f2f2 50% 100%);
  border: 2px solid #1a1a1a; overflow: hidden; vertical-align: middle; flex: 0 0 auto;
}
.pokeball::before { content: ""; position: absolute; inset: 0 0 50% 0; background: var(--pb-top); }
.pokeball::after { content: ""; position: absolute; top: calc(50% - 1.5px); left: -2px; right: -2px; height: 3px; background: #1a1a1a; }
.pokeball .pb-btn {
  position: absolute; top: 50%; left: 50%; width: 8px; height: 8px; transform: translate(-50%, -50%);
  background: #fff; border: 2px solid #1a1a1a; border-radius: 50%; z-index: 1;
}
.pokeball.great { --pb-top: #2f6fd8; }
.pokeball.ultra { --pb-top: #f2b705; }
/* Pokébola voando na captura (maior) */
.bt-ball {
  position: absolute; top: 6%; left: 50%; transform: translateX(-50%);
  z-index: 3; filter: drop-shadow(0 2px 3px rgba(0,0,0,.4)); animation: btBallIn .5s ease;
}
.bt-ball .pokeball { width: 34px; height: 34px; }
.bt-ball .pokeball .pb-btn { width: 12px; height: 12px; }
.bt-ball.shake { animation: btBallShake .5s ease; }
@keyframes btBallIn { from { transform: translate(-160px, 40px) rotate(-360deg); opacity: 0; } to { transform: translateX(-50%) rotate(0); opacity: 1; } }
@keyframes btBallShake { 0%,100% { transform: translateX(-50%) rotate(0); } 30% { transform: translate(-64%,0) rotate(-22deg); } 70% { transform: translate(-36%,0) rotate(22deg); } }
/* Tela de escolha de modo */
.bt-mode { display: flex; flex-direction: column; gap: 1rem; padding: 1rem 0; }
.bt-mode-title { text-align: center; font-family: var(--font-display); margin: .2rem 0; }
.bt-mode-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1rem; }
@media (max-width: 620px) { .bt-mode-grid { grid-template-columns: 1fr; } }
.bt-mode-card {
  display: flex; flex-direction: column; gap: .4rem; align-items: center; text-align: center; cursor: pointer;
  border: 2px solid var(--border); border-radius: var(--radius); padding: 1.4rem 1rem;
  background: var(--panel); color: var(--text); transition: transform var(--dur-fast), border-color var(--dur), box-shadow var(--dur);
}
.bt-mode-card:hover { transform: translateY(-3px); box-shadow: var(--shadow-sm); }
.bt-mode-card.wild:hover { border-color: var(--t-grass); }
.bt-mode-card.trainer:hover { border-color: var(--brand); }
.bt-mode-card .bmc-ico { font-size: 2.4rem; }
.bt-mode-card .bmc-nm { font-family: var(--font-display); font-weight: 800; font-size: 1.05rem; }
.bt-mode-card .bmc-desc { font-size: .82rem; color: var(--muted); }
.bt-mon { image-rendering: pixelated; position: relative; z-index: 1; filter: drop-shadow(0 4px 5px rgba(0,0,0,.35)); }
.bt-enemy-mon { width: 168px; height: 168px; }
.bt-player-mon { width: 210px; height: 210px; }
/* Sprite de treinador na intro da batalha (entra deslizando; some ao enviar o mon). */
.bt-trainer { image-rendering: pixelated; position: relative; z-index: 1; width: auto; filter: drop-shadow(0 5px 6px rgba(0,0,0,.35)); animation: btTrainerIn .35s ease both; }
.bt-player-trainer { height: 188px; --tin: -26px; }
.bt-enemy-trainer  { height: 156px; --tin: 26px; }
@keyframes btTrainerIn { from { opacity: 0; transform: translateX(var(--tin, -20px)); } to { opacity: 1; transform: none; } }
/* Traz os Pokémon para mais perto do centro (menos "grudados" nas pontas). */
.bt-enemy-stage { margin-right: 7%; }
.bt-player-stage { margin-left: 7%; }

/* ── Temporadas ── */
.seasons-modal { display: flex; flex-direction: column; gap: .6rem; max-height: 78vh; overflow-y: auto; }
.season-card { border: 1px solid var(--border); border-radius: 12px; padding: .7rem .9rem; display: flex; flex-direction: column; gap: .5rem;
  background: var(--panel); }
.season-card.active { border-color: var(--t-grass); }
.season-card.closed { opacity: .9; }
.season-card-head { display: flex; align-items: center; justify-content: space-between; gap: .5rem; flex-wrap: wrap; }
.season-highlights { display: flex; flex-direction: column; gap: .2rem; }
.season-hi-row { display: flex; align-items: center; gap: .5rem; }
.season-hi-badge { font-size: .88rem; font-weight: 700; }
/* Badge de temporada no cartão de treinador */
.tc-season-badges { display: flex; flex-wrap: wrap; gap: .25rem; margin-top: .15rem; }
.tc-szn-badge { font-size: .7rem; font-weight: 800; background: linear-gradient(135deg, #ffe08a, #f2b705); color: #4a3400;
  border-radius: 999px; padding: .15rem .5rem; white-space: nowrap; }

/* ── Duelos assíncronos ── */
.duels-modal { display: flex; flex-direction: column; gap: .6rem; max-height: 78vh; overflow-y: auto; }
.duel-play { display: flex; flex-direction: column; gap: .6rem; }
.duel-q { font-size: .95rem; font-weight: 600; background: var(--panel-2); border: 1px solid var(--border); border-radius: 10px; padding: .65rem .85rem; }
.duel-result { text-align: center; padding: 1rem; border-radius: 12px; background: var(--panel-2); border: 2px solid var(--border); }
.duel-result.win  { border-color: var(--t-grass); background: color-mix(in srgb, var(--t-grass) 10%, var(--panel)); }
.duel-result.lose { border-color: var(--danger, #e3350d); background: color-mix(in srgb, var(--danger, #e3350d) 8%, var(--panel)); }
.duel-result.draw { border-color: var(--t-electric); }
.duel-waiting { text-align: center; padding: 1.5rem; display: flex; flex-direction: column; align-items: center; gap: .4rem; font-size: 1.1rem; color: var(--muted); }

/* ── #9 Estudo de Precedentes ── */
.prec-new { background: var(--panel-2); border: 1px solid var(--border); border-left: 4px solid #5b8dd9; border-radius: 10px; padding: .65rem .85rem; margin-bottom: .6rem; }
.prec-text { margin: .3rem 0 0; font-size: .95rem; }
.prec-ask  { font-weight: 700; font-size: .9rem; margin-bottom: .4rem; }
.prec-list { display: flex; flex-direction: column; gap: .5rem; }
.prec-card { text-align: left; background: var(--panel); border: 1px solid var(--border); border-radius: 10px; padding: .6rem .8rem;
  cursor: pointer; transition: border-color var(--dur-fast); display: flex; flex-direction: column; gap: .15rem; }
.prec-card:hover { border-color: var(--brand); }
.prec-card:disabled { cursor: default; }
.prec-card.good { border-color: var(--t-grass) !important; background: color-mix(in srgb, var(--t-grass) 12%, var(--panel)); }
.prec-card.bad  { border-color: var(--danger, #e3350d) !important; background: color-mix(in srgb, var(--danger, #e3350d) 10%, var(--panel)); }
.prec-card-title { font-weight: 700; font-size: .9rem; }
.prec-card-sum   { color: var(--text); }
.prec-card-dec   { color: var(--muted); font-style: italic; }

/* ── #10 Corrija a Resposta ── */
.fixr-ctx  { background: var(--panel-2); border: 1px solid var(--border); border-radius: 10px; padding: .6rem .8rem; margin-bottom: .5rem; }
.fixr-bad  { background: color-mix(in srgb, var(--danger, #e3350d) 10%, var(--panel)); border: 1px solid color-mix(in srgb, var(--danger, #e3350d) 35%, var(--border));
  border-radius: 10px; padding: .55rem .75rem; margin-bottom: .5rem; }
.fixr-bad-label { font-size: .75rem; font-weight: 800; text-transform: uppercase; color: var(--danger, #e3350d); display: block; margin-bottom: .15rem; }
.fixr-bad-text  { margin: 0; font-style: italic; }
.fixr-ask  { font-weight: 700; margin-bottom: .4rem; font-size: .9rem; }
.fixr-opts { display: flex; flex-direction: column; gap: .4rem; }
.fixr-opt  { text-align: left; white-space: normal; padding: .6rem .85rem; border-radius: 10px; border: 1px solid var(--border);
  background: var(--panel); transition: border-color var(--dur-fast); }
.fixr-opt:hover:not(:disabled) { border-color: var(--brand); }
.fixr-opt.good { border-color: var(--t-grass) !important; background: color-mix(in srgb, var(--t-grass) 12%, var(--panel)); font-weight: 600; }
.fixr-opt.bad  { border-color: var(--danger, #e3350d) !important; opacity: .75; }

/* ── Trivia Pokémon (usa .fixr-ctx/.fixr-opts/.fixr-opt acima) ── */
.game-inner.game-theme-wild .poke-trivia {
  max-width: 760px;
  padding: 1.15rem;
  border-color: color-mix(in srgb, #f4d03f 42%, var(--border));
  background:
    radial-gradient(circle at 12% 0%, rgba(244, 208, 63, .18), transparent 34%),
    radial-gradient(circle at 100% 100%, rgba(50, 174, 88, .13), transparent 38%),
    linear-gradient(145deg, color-mix(in srgb, var(--panel) 94%, #f4d03f), var(--panel-2));
  box-shadow: 0 16px 38px rgba(3, 7, 18, .28), inset 0 1px 0 rgba(255, 255, 255, .06);
}
.poke-trivia .wt-hud {
  padding: .55rem .7rem;
  border: 1px solid color-mix(in srgb, #f4d03f 38%, var(--border));
  border-radius: 12px;
  background: rgba(8, 15, 30, .28);
}
.poke-trivia .wt-round { color: var(--text); opacity: .82; }
.poke-trivia .wt-score { color: #ffe27a; text-shadow: 0 0 12px rgba(244, 208, 63, .32); }
.poke-trivia .fixr-ctx {
  margin: .1rem 0 .25rem;
  padding: 1.05rem 1.15rem;
  border: 1px solid color-mix(in srgb, #f4d03f 48%, var(--border));
  border-radius: 16px;
  background: linear-gradient(135deg, rgba(244, 208, 63, .18), rgba(59, 76, 202, .18));
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .08);
}
.poke-trivia .fixr-ctx p {
  margin: 0;
  color: var(--text);
  font-family: var(--font-display);
  font-size: clamp(1.05rem, 2.3vw, 1.35rem);
  font-weight: 800;
  line-height: 1.35;
}
.poke-trivia .fixr-opts {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .7rem;
}
.poke-trivia .fixr-opt {
  min-height: 3.35rem;
  padding: .8rem .95rem;
  border: 1px solid color-mix(in srgb, #f4d03f 24%, var(--border));
  border-radius: 14px;
  background: linear-gradient(145deg, var(--panel-2), color-mix(in srgb, var(--panel) 82%, #3b4cca));
  color: var(--text);
  font-family: var(--font-display);
  font-size: .96rem;
  font-weight: 700;
  line-height: 1.3;
  box-shadow: 0 5px 14px rgba(3, 7, 18, .16);
  transition: transform .12s ease, border-color .18s ease, background .18s ease, box-shadow .18s ease;
}
.poke-trivia .fixr-opt:hover:not(:disabled) {
  transform: translateY(-2px);
  border-color: #f4d03f;
  background: linear-gradient(145deg, color-mix(in srgb, #f4d03f 18%, var(--panel-2)), var(--panel));
  box-shadow: 0 8px 18px rgba(3, 7, 18, .26), 0 0 0 2px rgba(244, 208, 63, .1);
}
.poke-trivia .fixr-opt.good {
  color: #d9ffe7;
  border-color: var(--call) !important;
  background: color-mix(in srgb, var(--call) 20%, var(--panel)) !important;
}
.poke-trivia .fixr-opt.bad {
  color: #ffe2df;
  border-color: var(--danger) !important;
  background: color-mix(in srgb, var(--danger) 18%, var(--panel)) !important;
}
.poke-trivia .feedback-box {
  margin-top: .35rem;
  padding: .85rem 1rem;
  border: 1px solid color-mix(in srgb, #f4d03f 34%, var(--border));
  border-left: 4px solid #f4d03f;
  border-radius: 14px;
  background: rgba(8, 15, 30, .38);
  color: var(--text);
}
.poke-trivia .feedback-box p { color: var(--text); }

@media (max-width: 560px) {
  .game-inner.game-theme-wild .poke-trivia { padding: .8rem; }
  .poke-trivia .fixr-opts { grid-template-columns: 1fr; gap: .55rem; }
  .poke-trivia .fixr-opt { min-height: 2.9rem; }
}

/* ── "Qual é pior?" ── */
.svb-pair  { display: flex; gap: .6rem; align-items: stretch; margin-bottom: .5rem; }
.svb-card  { flex: 1; background: var(--panel-2); border: 2px solid var(--border); border-radius: 12px; padding: .7rem .85rem;
  cursor: pointer; transition: border-color var(--dur-fast), transform var(--dur-fast); display: flex; flex-direction: column; gap: .3rem; }
.svb-card:hover { border-color: var(--brand); transform: translateY(-2px); }
.svb-card.good { border-color: var(--t-grass) !important; background: color-mix(in srgb, var(--t-grass) 12%, var(--panel)); }
.svb-card.bad  { border-color: var(--danger, #e3350d) !important; opacity: .7; }
.svb-label { font-size: .65rem; font-weight: 900; text-transform: uppercase; letter-spacing: .07em;
  background: var(--border); border-radius: 999px; padding: .1rem .4rem; align-self: flex-start; }
.svb-vs   { font-weight: 900; color: var(--muted); align-self: center; flex-shrink: 0; font-size: 1.2rem; }
.svb-eq   { width: 100%; text-align: center; margin: .4rem 0; font-size: .9rem; font-weight: 600;
  background: var(--panel-2); border: 2px solid var(--border); border-radius: 12px;
  padding: .7rem 1rem; cursor: pointer; color: var(--fg);
  transition: border-color var(--dur-fast), background var(--dur-fast), transform var(--dur-fast); }
.svb-eq:hover:not(:disabled) { border-color: var(--brand); transform: translateY(-2px); }
.svb-eq.good { border-color: var(--t-grass) !important; background: color-mix(in srgb, var(--t-grass) 12%, var(--panel)); }
.svb-eq.bad  { border-color: var(--danger, #e3350d) !important; opacity: .7; }

/* ── "O que ele está sentindo?" ── */
.emp-bubble { background: var(--panel-2); border: 1px solid var(--border); border-radius: 12px;
  padding: .7rem .9rem; display: flex; gap: .5rem; align-items: flex-start; margin-bottom: .5rem; }
.emp-ico  { font-size: 1.4rem; flex-shrink: 0; }
.emp-msg  { margin: 0; font-style: italic; font-size: .95rem; line-height: 1.5; }

/* ── "Marque os infratores" ── */
.si-chat  { display: flex; flex-direction: column; gap: .2rem; margin-bottom: .6rem; }
.si-line  { display: flex; gap: .5rem; padding: .4rem .6rem; border-radius: 8px; cursor: pointer;
  border: 2px solid transparent; transition: border-color var(--dur-fast), background var(--dur-fast); }
.si-line:hover { background: var(--panel-2); }
.si-line.selected { border-color: var(--brand); background: color-mix(in srgb, var(--brand) 10%, var(--panel)); }
.si-line.si-bad   { border-color: var(--danger, #e3350d); background: color-mix(in srgb, var(--danger, #e3350d) 12%, var(--panel)); }
.si-line.si-found { border-color: var(--t-grass); background: color-mix(in srgb, var(--t-grass) 12%, var(--panel)); }
.si-line.si-wrong { outline: 2px solid var(--danger, #e3350d); }
.si-u  { font-weight: 700; min-width: 70px; font-size: .84rem; color: var(--brand); }
.si-time { flex: 0 0 auto; color: var(--muted); font-size: .72rem; white-space: nowrap; }
.si-t  { font-size: .9rem; }

/* ── Recursos aprovados por aba ────────────────────────────── */
.approved-features { margin: 1.4rem 0 2rem; padding: 1.1rem; border: 1px solid var(--border); border-radius: 18px; background: var(--panel); background: color-mix(in srgb, var(--panel) 92%, var(--brand)); }
.afs-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; margin-bottom: .25rem; }
.afs-head h2 { margin: .15rem 0 0; font-size: 1.2rem; }
.afs-persisted { color: var(--t-grass, #39a96b); font-size: .78rem; white-space: nowrap; }
.afs-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .7rem; margin-top: 1rem; }
.afs-card { min-width: 0; padding: .85rem; border: 1px solid var(--border); border-radius: 14px; background: var(--panel); box-shadow: 0 5px 16px rgba(0,0,0,.06); }
.afs-card.is-off { opacity: .7; }
.afs-card-top { display: flex; gap: .65rem; align-items: flex-start; }
.afs-icon { width: 2rem; height: 2rem; display: grid; place-items: center; border-radius: 10px; background: var(--panel-2); background: color-mix(in srgb, var(--brand) 14%, var(--panel-2)); font-size: 1.1rem; flex: 0 0 auto; }
.afs-title { min-width: 0; display: flex; flex-direction: column; gap: .22rem; }
.afs-title strong { line-height: 1.2; }
.afs-status { display: inline-flex; width: max-content; padding: .12rem .42rem; border-radius: 999px; background: var(--panel-2); color: var(--muted); font-size: .68rem; }
.afs-status.saved { color: var(--t-grass, #27834d); background: color-mix(in srgb, var(--t-grass, #27834d) 14%, var(--panel)); }
.afs-desc, .afs-summary { margin: .55rem 0 0; color: var(--muted); font-size: .78rem; line-height: 1.35; }
.afs-summary:empty { display: none; }
.afs-control { margin-top: .65rem; }
.afs-input { width: 100%; min-height: 2.1rem; padding: .45rem .55rem; border: 1px solid var(--border); border-radius: 9px; background: var(--panel-2); color: var(--text); font: inherit; font-size: .8rem; }
textarea.afs-input { resize: vertical; }
.afs-checklist { display: grid; gap: .35rem; }
.afs-check { display: flex; align-items: center; gap: .4rem; color: var(--muted); font-size: .78rem; }
.afs-action { display: flex; justify-content: flex-end; margin-top: .65rem; }
.afs-timer { display: flex; align-items: center; justify-content: space-between; gap: .6rem; }
.afs-timer-value { font-variant-numeric: tabular-nums; }
@media (max-width: 720px) {
  .afs-grid { grid-template-columns: 1fr; }
  .afs-head { flex-direction: column; gap: .35rem; }
}

/* ── Flashcards ── */
.fc-modal { display: flex; flex-direction: column; gap: .6rem; }
.fc-body  { display: flex; flex-direction: column; gap: .6rem; }
.fc-card  { background: var(--panel-2); border: 1px solid var(--border); border-radius: 14px;
  min-height: 140px; padding: 1rem; cursor: pointer; display: flex; flex-direction: column; justify-content: center; gap: .5rem;
  transition: transform var(--dur-fast); }
.fc-card:hover { transform: translateY(-2px); }
.fc-front { font-size: 1rem; font-weight: 600; text-align: center; }
.fc-back  { padding: .6rem; border-radius: 10px; }
.fc-back.true  { background: color-mix(in srgb, var(--t-grass) 15%, var(--panel)); }
.fc-back.false { background: color-mix(in srgb, var(--danger, #e3350d) 12%, var(--panel)); }
.fc-verdict { font-weight: 900; font-size: 1rem; display: block; margin-bottom: .3rem; }
.fc-btns { display: flex; gap: .5rem; margin-top: .5rem; }
.fc-btn  { flex: 1; }

/* ── Pokémon favorito ── */
.favmon-modal { display: flex; flex-direction: column; gap: .6rem; max-height: 80vh; }
.favmon-grid  { display: grid; grid-template-columns: repeat(auto-fill, minmax(52px, 1fr)); gap: .3rem;
  max-height: 280px; overflow-y: auto; padding: .2rem; }
.favmon-btn   { background: var(--panel-2); border: 2px solid var(--border); border-radius: 8px;
  padding: .25rem; cursor: pointer; transition: border-color var(--dur-fast); }
.favmon-btn:hover { border-color: var(--brand); }
.favmon-btn.active { border-color: var(--t-electric); box-shadow: 0 0 0 2px var(--t-electric); }
.favmon-spr { width: 42px; height: 42px; image-rendering: pixelated; display: block; margin: 0 auto; }
/* No cartão de treinador — chip translúcido para combinar com o card colorido
   (o fundo opaco var(--panel-2) destoava do gradiente do cartão). */
.tc-favmon { display: inline-flex; align-items: center; gap: .3rem; cursor: pointer; margin-top: .2rem; color: #fff;
  background: linear-gradient(160deg, rgba(255,255,255,.26), rgba(255,255,255,.1));
  border: 1px solid rgba(255,255,255,.36); border-radius: 999px; padding: .15rem .5rem;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.3);
  transition: border-color var(--dur-fast), background var(--dur-fast); }
.tc-favmon:hover, .tc-favmon.empty:hover { border-color: #fff; background: linear-gradient(160deg, rgba(255,255,255,.34), rgba(255,255,255,.16)); }
.tc-favmon.empty { color: rgba(255,255,255,.92); font-size: .78rem; }
.tc-favmon .tc-favmon-name { color: rgba(255,255,255,.92); }
.tc-favmon-spr { width: 26px; height: 26px; image-rendering: pixelated; }
.tc-favmon-name { font-size: .72rem; }

/* ── Heatmap de atividade ── */
.hm-block { display: flex; flex-direction: column; gap: .35rem; margin: .5rem 0; }
.heatmap-wrap { display: grid; grid-template-columns: repeat(14, 1fr); gap: .25rem; }
.hm-cell { height: 18px; border-radius: 4px; background: var(--border); }
.hm-cell.on  { background: var(--t-grass); }

/* ── Termômetro da turma ── */
.mood-modal { display: flex; flex-direction: column; gap: .6rem; }
.mood-btns  { display: flex; gap: .4rem; justify-content: center; flex-wrap: wrap; margin: .4rem 0; }
.mood-btn   { display: flex; flex-direction: column; align-items: center; gap: .15rem; padding: .55rem .7rem;
  border: 2px solid var(--border); border-radius: 12px; background: var(--panel-2); cursor: pointer;
  transition: border-color var(--dur-fast), transform var(--dur-fast); min-width: 64px; }
.mood-btn:hover { border-color: var(--brand); transform: translateY(-2px); }
.mood-btn.active { border-color: var(--t-electric); background: color-mix(in srgb, var(--t-electric) 12%, var(--panel)); }
.mood-ico  { font-size: 1.8rem; line-height: 1; }
.mood-lbl  { color: var(--muted); white-space: nowrap; }
.mood-saved { background: color-mix(in srgb, var(--t-grass) 15%, var(--panel)); border-radius: 8px;
  padding: .45rem .7rem; font-size: .88rem; font-weight: 600; }
.mood-agg  { display: flex; flex-direction: column; gap: .4rem; margin-top: .3rem; }
.mood-agg-head { display: flex; align-items: center; justify-content: space-between; gap: .5rem; }
.mood-agg-val  { font-weight: 700; }
.mood-chart { display: flex; gap: .3rem; align-items: flex-end; height: 60px; padding-top: .4rem; }
.mc-col  { display: flex; flex-direction: column; align-items: center; gap: .15rem; flex: 1; }
.mc-bar  { width: 100%; min-height: 4px; background: var(--brand); border-radius: 3px 3px 0 0;
  transition: height .3s ease; }
.mc-lbl  { font-size: .6rem; writing-mode: vertical-rl; transform: rotate(180deg); }

/* ── Desafio coletivo ── */
.cch-modal { display: flex; flex-direction: column; gap: .6rem; max-height: 78vh; overflow-y: auto; }
.cch-card  { border: 1px solid var(--border); border-radius: 12px; padding: .7rem .9rem;
  display: flex; flex-direction: column; gap: .5rem; background: var(--panel); }
.cch-card.done { border-color: var(--t-grass); background: color-mix(in srgb, var(--t-grass) 8%, var(--panel)); }
.cch-head  { display: flex; align-items: center; justify-content: space-between; gap: .5rem; flex-wrap: wrap; }
.cch-bar-wrap { display: flex; flex-direction: column; gap: .2rem; }
.cch-bar   { height: 10px; background: var(--border); border-radius: 5px; overflow: hidden; }
.cch-fill  { height: 100%; background: var(--brand); border-radius: 5px; transition: width .5s ease; }
.bt-mon.bt-hurt { animation: btHurt .3s linear; }
.bt-mon.bt-faint { animation: btFaint .9s ease forwards; }
@keyframes btHurt { 0%,100% { opacity: 1; transform: translateX(0); } 25% { opacity: .35; transform: translateX(-5px); } 75% { transform: translateX(5px); } }
@keyframes btFaint { to { transform: translateY(40px); opacity: 0; } }
/* Estado FINAL do desmaio (já caiu) — sem reanimar nos quadros seguintes. */
.bt-mon.bt-fainted { transform: translateY(40px); opacity: 0; }

/* Caixa de HP à la Fire Red */
.bt-hpbox {
  background: #f7f4e7; color: #2b2b2b; border: 2px solid #2b2b2b; border-radius: 10px;
  padding: .4rem .6rem; min-width: 180px; box-shadow: 0 3px 0 rgba(0,0,0,.3);
}
.bt-enemy-row .bt-hpbox { margin-top: .3rem; }
.bt-hpname { display: flex; justify-content: space-between; align-items: baseline; gap: .5rem; }
.bt-hpname .bt-nm { font-family: var(--font-pixel); font-weight: 400; font-size: .62rem; letter-spacing: -.5px; }
.bt-hpname .bt-lv { font-family: var(--font-pixel); font-size: .52rem; font-weight: 400; }
.bt-hptrack { display: flex; align-items: center; gap: .35rem; margin-top: .2rem; }
.bt-hplabel { font-size: .64rem; font-weight: 900; color: #c58a00; letter-spacing: .04em; }
.bt-hpbar { flex: 1; height: 8px; background: #4a4a3a; border-radius: 999px; overflow: hidden; border: 1px solid #2b2b2b; }
.bt-hpfill { height: 100%; width: 100%; border-radius: 999px; transition: width .5s cubic-bezier(.2,.8,.2,1); }
.bt-hpfill.hp-ok { background: linear-gradient(#7be07b, #37b437); }
.bt-hpfill.hp-mid { background: linear-gradient(#ffe066, #f0b429); }
.bt-hpfill.hp-low { background: linear-gradient(#ff8a7a, #e3350d); }
.bt-hpnums { text-align: right; font-size: .72rem; font-weight: 800; margin-top: .15rem; font-variant-numeric: tabular-nums; }

/* Caixa de mensagem + menu de comandos */
.bt-msg {
  background: #22223a; color: #fff; border: 3px solid #12122a; border-radius: 12px;
  padding: .8rem 1rem; min-height: 3rem; display: flex; align-items: center;
  font-family: var(--font-pixel); font-size: .68rem; line-height: 1.7;
  box-shadow: inset 0 0 0 2px rgba(255,255,255,.08);
}
/* ── Fire Red: caixa de texto + comandos DENTRO da tela do jogo ──
   O diálogo fica colado na base da cena. No menu principal, o texto fica à
   esquerda e os 4 comandos num 2×2 à direita (igual ao GBA). Nos submenus
   (golpes/mochila/time), a lista ocupa a largura toda abaixo do texto. */
.bt-dialog {
  position: relative; z-index: 3; margin-top: .6rem;
  display: flex; flex-wrap: wrap; gap: .55rem; align-items: stretch;
}
.bt-dialog .bt-msg { flex: 1 1 56%; min-width: 220px; margin: 0; }
.bt-dialog .bt-menu { flex: 1 1 100%; align-content: start; }
.bt-dialog .bt-menu.bt-main { flex: 0 0 clamp(280px, 40%, 340px); }
@media (max-width: 640px) {
  .bt-dialog .bt-msg,
  .bt-dialog .bt-menu.bt-main { flex: 1 1 100%; }
}

/* ── Central de Presença: jornada expandida ───────────────────────────── */
.engagement-feature-deck { margin-top: 1rem; display: grid; gap: .7rem; }
.engagement-feature-deck-head { display: flex; align-items: end; justify-content: space-between; gap: 1rem; padding: .15rem .15rem 0; }
.engagement-feature-deck-head h2 { margin: .1rem 0 0; font-size: 1.2rem; }
.engagement-feature-deck-head p { max-width: 38rem; margin: 0; text-align: right; }
.engagement-feature-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .65rem; }
.engagement-feature-card { min-width: 0; }
.engagement-feature-card > .btn { align-self: flex-start; }
.engagement-inline-form,
.engagement-appointment-form,
.engagement-journal-form { display: grid; grid-template-columns: minmax(0, 1.5fr) minmax(8rem, 1fr) 5rem minmax(7rem, .8fr) auto; gap: .35rem; align-items: center; margin: .55rem 0 .7rem; }
.engagement-appointment-form { grid-template-columns: minmax(8rem, 1fr) minmax(10rem, 1fr) minmax(8rem, 1.2fr) auto; }
.engagement-journal-form { grid-template-columns: 1fr 10rem auto; }
.engagement-journal-form textarea { grid-column: 1 / -1; min-height: 5rem; resize: vertical; }
.engagement-inline-form input,
.engagement-inline-form select,
.engagement-appointment-form input,
.engagement-appointment-form select,
.engagement-journal-form select { min-width: 0; width: 100%; }
.engagement-goal-list,
.engagement-special-list,
.engagement-appointment-list,
.engagement-journal-list { display: grid; gap: .4rem; }
.engagement-goal-row,
.engagement-special-row,
.engagement-appointment-row,
.engagement-journal-row,
.engagement-challenge-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: .45rem; align-items: center; padding: .48rem .55rem; border: 1px solid color-mix(in srgb, var(--border) 75%, transparent); border-radius: 10px; background: color-mix(in srgb, var(--panel-2) 65%, transparent); }
.engagement-goal-row.done,
.engagement-special-row.done { border-color: color-mix(in srgb, var(--call) 55%, var(--border)); }
.engagement-goal-copy { min-width: 0; display: grid; gap: .08rem; }
.engagement-goal-copy strong,
.engagement-goal-copy span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.engagement-progress-bar { height: .38rem; overflow: hidden; border-radius: 999px; background: color-mix(in srgb, var(--border) 65%, transparent); }
.engagement-progress-fill { display: block; height: 100%; border-radius: inherit; background: linear-gradient(90deg, var(--accent), var(--brand-2)); transition: width var(--dur-slow) ease; }
.engagement-icon-btn { min-width: 1.7rem; padding: .15rem .4rem; }
.engagement-evolution-map { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .45rem; margin-top: .55rem; }
.engagement-evolution-step { position: relative; display: grid; gap: .08rem; min-width: 0; padding: .55rem; border: 1px dashed var(--border); border-radius: 11px; opacity: .65; }
.engagement-evolution-step.done { opacity: 1; border-style: solid; border-color: color-mix(in srgb, var(--call) 60%, var(--border)); background: color-mix(in srgb, var(--call) 10%, transparent); }
.engagement-evolution-step.current { opacity: 1; outline: 2px solid color-mix(in srgb, var(--accent) 60%, transparent); }
.engagement-evolution-icon { font-size: 1.25rem; }
.engagement-evolution-step strong,
.engagement-evolution-step span:last-child { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.engagement-evolution-step span:last-child { font-size: .68rem; }
.engagement-challenge-row { grid-template-columns: minmax(0, 1fr) auto; }
.engagement-challenge-row .engagement-progress-bar { grid-column: 1 / -1; }
.engagement-row-actions,
.engagement-tools-actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: .3rem; }
.engagement-journal-row { grid-template-columns: auto minmax(0, 1fr) auto; align-items: start; }
.engagement-journal-row p { margin: 0; white-space: pre-wrap; overflow-wrap: anywhere; }
.engagement-report-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .35rem; }
.engagement-report-grid .engagement-metric { display: block; padding: .45rem; text-align: center; }
.engagement-report-grid .engagement-metric-icon,
.engagement-report-grid .engagement-metric strong,
.engagement-report-grid .engagement-metric .small { display: block; }
.engagement-contribution { display: grid; gap: .1rem; margin: .3rem 0 .7rem; padding: .65rem; border-radius: 11px; background: linear-gradient(110deg, color-mix(in srgb, var(--accent) 16%, transparent), color-mix(in srgb, var(--royal) 16%, transparent)); }
.engagement-accessibility { display: flex; flex-wrap: wrap; gap: .45rem; margin-top: .45rem; }
.engagement-check { display: inline-flex; align-items: center; gap: .3rem; padding: .3rem .45rem; border: 1px solid var(--border); border-radius: 999px; color: var(--muted); font-size: .74rem; cursor: pointer; }
.engagement-check input { accent-color: var(--accent); }
.engagement-high-contrast body { --muted: #c8d4ef; --border: #526690; }
.engagement-large-text { --font-scale: 1.08; }
.engagement-reduced-motion *,
.engagement-reduced-motion *::before,
.engagement-reduced-motion *::after { animation-duration: .001ms !important; animation-iteration-count: 1 !important; scroll-behavior: auto !important; transition-duration: .001ms !important; }

@media (max-width: 900px) {
  .engagement-inline-form { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .engagement-inline-form input[type="text"] { grid-column: 1 / -1; }
  .engagement-inline-form .btn { grid-column: 1 / -1; }
  .engagement-feature-deck-head { align-items: flex-start; flex-direction: column; }
  .engagement-feature-deck-head p { text-align: left; }
}
@media (max-width: 640px) {
  .engagement-feature-grid { grid-template-columns: 1fr; }
  .engagement-evolution-map { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .engagement-appointment-form,
  .engagement-journal-form { grid-template-columns: 1fr; }
  .engagement-appointment-form .btn,
  .engagement-journal-form .btn { width: 100%; }
  .engagement-report-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .engagement-goal-row,
  .engagement-special-row { grid-template-columns: minmax(0, 1fr) auto; }
}
.bt-menu { display: grid; gap: .5rem; align-self: center; }
.bt-menu.bt-main { grid-template-columns: repeat(2, 1fr); }
.bt-cmd {
  border: 2px solid #12122a; background: #f7f4e7; color: #2b2b2b; cursor: pointer;
  border-radius: 10px; padding: .75rem .5rem; font-family: var(--font-pixel); font-weight: 400; font-size: .58rem; line-height: 1.4;
  box-shadow: 0 3px 0 rgba(0,0,0,.25); transition: transform var(--dur-fast), filter var(--dur);
}
.bt-cmd:hover { filter: brightness(1.04); transform: translateY(-1px); }
.bt-cmd:active { transform: translateY(1px); box-shadow: 0 1px 0 rgba(0,0,0,.25); }
.cmd-fight { background: #ffd0c4; }
.cmd-bag { background: #ffe9a8; }
.cmd-poke { background: #d6f5c4; }
.cmd-run { background: #d7e9ff; }
.bt-menu.bt-moves { grid-template-columns: repeat(2, 1fr); }
.bt-move {
  border: 2px solid #12122a; background: #f7f4e7; color: #2b2b2b; cursor: pointer;
  border-radius: 10px; padding: .55rem .7rem; text-align: left; display: flex; flex-direction: column; gap: .2rem;
  border-left: 8px solid var(--border); box-shadow: 0 3px 0 rgba(0,0,0,.22); transition: transform var(--dur-fast), border-color var(--dur);
}
.bt-move:hover { transform: translateY(-1px); }
.bt-move[disabled] { opacity: .5; cursor: not-allowed; }
.bt-move .bm-name { font-family: var(--font-pixel); font-weight: 400; font-size: .58rem; letter-spacing: -.5px; line-height: 1.3; }
.bt-move .bm-meta { font-size: .66rem; color: #6a5a2a; font-weight: 700; }
.bt-move.bt-back { grid-column: 1 / -1; text-align: center; border-left-color: var(--border); }
/* Cor da borda do golpe pelo tipo */
.bt-move.t-normal{border-left-color:var(--t-normal)} .bt-move.t-fire{border-left-color:var(--t-fire)}
.bt-move.t-water{border-left-color:var(--t-water)} .bt-move.t-grass{border-left-color:var(--t-grass)}
.bt-move.t-electric{border-left-color:var(--t-electric)} .bt-move.t-ice{border-left-color:var(--t-ice)}
.bt-move.t-fighting{border-left-color:var(--t-fighting)} .bt-move.t-poison{border-left-color:var(--t-poison)}
.bt-move.t-ground{border-left-color:var(--t-ground)} .bt-move.t-flying{border-left-color:var(--t-flying)}
.bt-move.t-psychic{border-left-color:var(--t-psychic)} .bt-move.t-bug{border-left-color:var(--t-bug)}
.bt-move.t-rock{border-left-color:var(--t-rock)} .bt-move.t-ghost{border-left-color:var(--t-ghost)}
.bt-move.t-dragon{border-left-color:var(--t-dragon)}
/* ── Mobile: batalha compacta e legível (evita overflow das caixas) ── */
@media (max-width: 620px) {
  .game-inner.game-theme-battle { padding-left: .7rem; padding-right: .7rem; }
  .bt-scene { min-height: 42vh; padding: .7rem .6rem; }
  .bt-row { gap: .4rem; }
  .bt-enemy-stage { margin-right: 2%; }
  .bt-player-stage { margin-left: 2%; }
  .bt-enemy-mon { width: 108px; height: 108px; }
  .bt-player-mon { width: 132px; height: 132px; }
  .bt-player-trainer { height: 128px; }
  .bt-enemy-trainer  { height: 108px; }
  .bt-stage::before { width: 120px; height: 30px; }
  .bt-enemy-stage::before { width: 96px; height: 26px; }
  .bt-stage::after { width: 84px; height: 14px; }
  .bt-hpbox { min-width: 0; width: 150px; max-width: 46vw; padding: .3rem .45rem; }
  .bt-hpname .bt-nm { font-size: .78rem; }
  .bt-hpnums { font-size: .66rem; }
  .bt-msg { font-size: .9rem; padding: .6rem .7rem; min-height: 2.6rem; }
  .bt-cmd { padding: .6rem .4rem; font-size: .88rem; }
  .bt-move { padding: .45rem .55rem; }
  .bt-team-mon { width: 32px; height: 32px; }
}

/* ═════════════════════════════════════════════════════════════
   PASSE · temporada 01
   ═════════════════════════════════════════════════════════════ */
.modal:has(.season-pass-modal) { width: min(1080px, calc(100vw - 1rem)); max-width: 1080px; }
.season-pass-modal { display: grid; gap: .72rem; min-width: 0; color: var(--text); }
.pass-redesign { display: grid; gap: .78rem; min-width: 0; max-height: min(82vh, 820px); overflow-y: auto; padding: .15rem .12rem .2rem; scrollbar-color: var(--accent) transparent; }
.pass-hero { display: grid; grid-template-columns: minmax(0, 1fr) 128px; gap: 1rem; min-height: 176px; padding: 1.05rem; overflow: hidden; border: 1px solid color-mix(in srgb, var(--accent) 42%, var(--border)); border-radius: 22px; background: radial-gradient(circle at 88% 15%, color-mix(in srgb, #ffdb58 22%, transparent), transparent 30%), linear-gradient(135deg, color-mix(in srgb, var(--brand-2) 28%, var(--panel)), var(--panel-2)); }
.pass-hero-copy { min-width: 0; align-self: center; }
.pass-kicker, .arena-modal-kicker { display: block; color: var(--accent); font: 900 .58rem var(--font-mono); letter-spacing: .12em; text-transform: uppercase; }
.pass-hero h3 { margin: .28rem 0 .18rem; color: var(--text); font-size: clamp(1.35rem, 3.4vw, 2.15rem); line-height: 1.05; }
.pass-hero p { max-width: 60ch; margin: 0; color: var(--muted); line-height: 1.42; }
.pass-hero-tags { display: flex; flex-wrap: wrap; gap: .35rem; margin-top: .8rem; }
.pass-tag { padding: .3rem .55rem; border: 1px solid var(--border); border-radius: 999px; color: var(--muted); background: color-mix(in srgb, var(--panel) 45%, transparent); font-size: .62rem; font-weight: 800; }
.pass-tag.live { border-color: color-mix(in srgb, var(--t-grass) 55%, var(--border)); color: var(--t-grass); }
.pass-hero-emblem { display: grid; place-items: center; align-content: center; gap: .05rem; min-width: 0; border: 1px solid rgba(255,255,255,.2); border-radius: 18px; background: rgba(5,12,28,.22); }
.pass-hero-sprite { width: 82px; height: 82px; object-fit: contain; image-rendering: pixelated; filter: drop-shadow(0 6px 5px rgba(0,0,0,.28)); }
.pass-hero-emblem span { color: rgba(255,255,255,.72); font: 900 .52rem var(--font-mono); letter-spacing: .15em; }
.pass-progress-panel, .pass-howto, .pass-rewards-section { padding: .85rem; border: 1px solid var(--border); border-radius: 17px; background: color-mix(in srgb, var(--panel-2) 76%, transparent); }
.pass-progress-top { display: flex; align-items: flex-end; justify-content: space-between; gap: .7rem; }
.pass-progress-top > div { display: grid; gap: .15rem; }
.pass-progress-top strong { color: var(--text); font-size: 1.25rem; }
.pass-progress-status { color: var(--muted); font-size: .62rem; text-align: right; }
.pass-progress-track { height: 10px; margin: .58rem 0 .35rem; overflow: hidden; border: 1px solid var(--border); border-radius: 999px; background: var(--bg); }
.pass-progress-track span { display: block; height: 100%; border-radius: inherit; background: linear-gradient(90deg, var(--brand-2), var(--accent)); box-shadow: 0 0 12px color-mix(in srgb, var(--accent) 45%, transparent); transition: width .35s ease; }
.pass-next-line { display: flex; justify-content: space-between; gap: .5rem; color: var(--muted); font-size: .65rem; }
.pass-next-line strong { color: var(--accent); }
.pass-howto-title, .pass-section-title { display: flex; align-items: flex-end; justify-content: space-between; gap: .7rem; margin-bottom: .6rem; }
.pass-howto-title strong, .pass-section-title h4 { display: block; margin: .2rem 0 0; color: var(--text); font-size: .95rem; }
.pass-howto-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .45rem; }
.pass-howto-step { display: grid; grid-template-columns: 30px 1fr; grid-template-rows: auto auto; grid-template-areas: 'icon title' 'icon desc'; align-items: center; column-gap: .42rem; padding: .52rem; border: 1px solid var(--border); border-radius: 12px; background: var(--panel); }
.pass-howto-step > span { grid-area: icon; display: grid; place-items: center; font-size: 1.35rem; }
.pass-howto-step strong { grid-area: title; color: var(--text); font-size: .7rem; }
.pass-howto-step small { grid-area: desc; color: var(--muted); font-size: .58rem; }
.pass-section-title { align-items: center; }
.pass-redesign-track { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: .55rem; }
.pass-redesign-tier { position: relative; display: grid; align-content: start; gap: .55rem; min-width: 0; min-height: 168px; padding: .68rem; overflow: hidden; border: 1px solid var(--border); border-radius: 16px; background: linear-gradient(155deg, var(--panel), var(--panel-2)); }
.pass-redesign-tier.ready { border-color: color-mix(in srgb, var(--accent) 70%, var(--border)); box-shadow: 0 0 0 1px color-mix(in srgb, var(--accent) 20%, transparent), 0 8px 18px rgba(0,0,0,.12); }
.pass-redesign-tier.claimed { border-color: color-mix(in srgb, var(--t-grass) 55%, var(--border)); }
.pass-redesign-tier.locked { opacity: .72; }
.pass-redesign-tier.exclusive { background: linear-gradient(155deg, color-mix(in srgb, #8a6cff 17%, var(--panel)), var(--panel-2)); }
.pass-tier-top { display: flex; justify-content: space-between; gap: .4rem; }
.pass-tier-number { color: var(--text); font: 900 .6rem var(--font-mono); }
.pass-tier-xp { color: var(--muted); font-size: .58rem; }
.pass-reward-visual { display: grid; grid-template-columns: 52px minmax(0, 1fr); align-items: center; gap: .55rem; min-height: 61px; }
.pass-reward-sprite { width: 50px; height: 50px; object-fit: contain; image-rendering: pixelated; filter: drop-shadow(0 3px 3px rgba(0,0,0,.22)); }
.pass-reward-coin { display: grid; place-items: center; width: 50px; height: 50px; border: 1px solid color-mix(in srgb, var(--accent) 55%, var(--border)); border-radius: 50%; color: #ffdb58; background: color-mix(in srgb, #ffdb58 13%, var(--panel)); font-size: 1.65rem; }
.pass-reward-visual strong { display: block; color: var(--text); font-size: .78rem; line-height: 1.15; }
.pass-reward-visual .small { display: block; margin-top: .18rem; color: var(--muted); font-size: .57rem; line-height: 1.25; }
.pass-exclusive-ribbon { position: absolute; top: .55rem; right: -.12rem; padding: .2rem .42rem .2rem .52rem; border-radius: 5px 0 0 5px; color: #fff; background: #7d64e8; font: 900 .48rem var(--font-mono); letter-spacing: .06em; }
.pass-tier-action { width: 100%; min-height: 31px; margin-top: auto; padding: .38rem .5rem; border-radius: 9px; font-size: .62rem; }
.pass-tier-action.locked { border: 1px solid var(--border); color: var(--muted); background: var(--panel); }
.pass-tier-action.claimed { display: grid; place-items: center; border: 1px solid color-mix(in srgb, var(--t-grass) 40%, var(--border)); border-radius: 9px; color: var(--t-grass); background: color-mix(in srgb, var(--t-grass) 8%, var(--panel)); font-size: .62rem; font-weight: 900; }

/* ═════════════════════════════════════════════════════════════
   MENTORIA · Conteúdo de hoje, trilha e revisão
   ═════════════════════════════════════════════════════════════ */
.mentoria-today-redesign { padding: 1rem; border: 1px solid var(--border); border-radius: 20px; background: linear-gradient(145deg, color-mix(in srgb, var(--brand-2) 10%, var(--panel)), var(--panel)); }
.men-today-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; }
.men-section-title-wrap { min-width: 0; }
.men-section-title { margin: .22rem 0 .18rem; color: var(--text); font-size: clamp(1.15rem, 2.6vw, 1.65rem); }
.men-section-lead { max-width: 62ch; margin: 0; color: var(--muted); line-height: 1.4; }
.mentoria-roadmap-section, .mentoria-review-section { display: grid; gap: .55rem; margin-top: .85rem; padding: .95rem; border: 1px solid var(--border); border-radius: 19px; background: color-mix(in srgb, var(--panel-2) 72%, transparent); }
.mentoria-section-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: .8rem; }
.mentoria-section-heading h2 { margin: .2rem 0 .12rem; color: var(--text); font-size: clamp(1rem, 2.2vw, 1.25rem); }
.mentoria-section-heading p { margin: 0; }
.mentoria-section-mark { flex: 0 0 auto; padding: .34rem .52rem; border: 1px solid color-mix(in srgb, var(--brand-2) 45%, var(--border)); border-radius: 999px; color: var(--brand-2); background: color-mix(in srgb, var(--brand-2) 9%, var(--panel)); font: 900 .55rem var(--font-mono); letter-spacing: .05em; }
.mentoria-section-mark.review { border-color: color-mix(in srgb, var(--accent) 48%, var(--border)); color: var(--accent); background: color-mix(in srgb, var(--accent) 8%, var(--panel)); }

/* ═════════════════════════════════════════════════════════════
   ARENA · painel da liga e chaveamento
   ═════════════════════════════════════════════════════════════ */
.modal:has(.arena-redesign) { width: min(1080px, calc(100vw - 1rem)); max-width: 1080px; }
.arena-redesign { display: grid; gap: .78rem; min-width: 0; max-height: min(84vh, 860px); overflow-y: auto; padding: .15rem .12rem .2rem; color: var(--text); scrollbar-color: var(--accent) transparent; }
.arena-redesign .arena-head { display: flex; align-items: flex-start; justify-content: space-between; gap: .8rem; }
.arena-modal-title { display: flex; align-items: flex-start; justify-content: space-between; gap: .8rem; min-width: 0; flex: 1; }
.arena-modal-title h3 { margin: .24rem 0 .16rem; color: var(--text); font-size: clamp(1.25rem, 3vw, 1.8rem); }
.arena-modal-title p { max-width: 60ch; margin: 0; line-height: 1.35; }
.arena-modal-title.detail { align-items: center; }
.arena-hero-ball { display: grid; place-items: center; width: 58px; height: 58px; flex: 0 0 auto; border: 1px solid color-mix(in srgb, var(--accent) 50%, var(--border)); border-radius: 18px; background: color-mix(in srgb, var(--accent) 10%, var(--panel)); font-size: 1.65rem; }
.arena-dashboard { display: grid; grid-template-columns: minmax(0, 1.55fr) repeat(3, minmax(105px, .7fr)); gap: .48rem; }
.arena-dashboard > div, .arena-detail-summary > div { min-width: 0; padding: .65rem .7rem; border: 1px solid var(--border); border-radius: 14px; background: color-mix(in srgb, var(--panel-2) 80%, transparent); }
.arena-dashboard-status { display: grid; align-content: center; gap: .16rem; }
.arena-dashboard-status strong { color: var(--text); font-size: .9rem; }
.arena-stat { display: grid; align-content: center; gap: .14rem; }
.arena-stat strong { overflow: hidden; color: var(--text); font-size: 1rem; text-overflow: ellipsis; white-space: nowrap; }
.arena-stat span, .arena-dashboard-status span:last-child { color: var(--muted); font-size: .6rem; }
.arena-stat.reward strong { color: var(--accent); }
.arena-guide { padding: .75rem; border: 1px solid color-mix(in srgb, var(--brand-2) 30%, var(--border)); border-radius: 16px; background: color-mix(in srgb, var(--brand-2) 6%, var(--panel)); }
.arena-guide-title { display: flex; align-items: baseline; gap: .55rem; margin-bottom: .5rem; }
.arena-guide-title strong { color: var(--text); font-size: .82rem; }
.arena-guide-steps { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .45rem; }
.arena-guide-steps > div { display: grid; grid-template-columns: 29px 1fr; grid-template-rows: auto auto; grid-template-areas: 'num title' 'num desc'; align-items: center; column-gap: .38rem; padding: .45rem; border: 1px solid var(--border); border-radius: 11px; background: var(--panel); }
.arena-guide-steps b { grid-area: num; display: grid; place-items: center; width: 27px; height: 27px; border-radius: 9px; color: var(--bg); background: var(--accent); font: 900 .62rem var(--font-mono); }
.arena-guide-steps span { grid-area: title; color: var(--text); font-size: .66rem; font-weight: 900; }
.arena-guide-steps small { grid-area: desc; color: var(--muted); font-size: .56rem; line-height: 1.2; }
.arena-weekly { display: flex; align-items: center; justify-content: space-between; gap: .7rem; padding: .8rem; border: 1px solid color-mix(in srgb, var(--accent) 60%, var(--border)); border-radius: 17px; background: linear-gradient(120deg, color-mix(in srgb, var(--accent) 11%, var(--panel)), var(--panel-2)); cursor: pointer; }
.arena-weekly:hover { border-color: var(--accent); }
.arena-weekly-main { display: flex; align-items: center; gap: .65rem; min-width: 0; }
.arena-weekly-main > div { min-width: 0; }
.arena-weekly-main strong { display: block; overflow: hidden; color: var(--text); text-overflow: ellipsis; white-space: nowrap; }
.arena-weekly-badge { display: grid; place-items: center; width: 42px; height: 42px; flex: 0 0 auto; border-radius: 13px; background: color-mix(in srgb, var(--accent) 17%, var(--panel)); font-size: 1.35rem; }
.arena-weekly-actions { display: flex; align-items: center; gap: .45rem; flex: 0 0 auto; }
.arena-list { display: grid; grid-template-columns: repeat(auto-fit, minmax(245px, 1fr)); gap: .5rem; }
.arena-card { display: flex; align-items: center; gap: .55rem; min-width: 0; padding: .7rem; border: 1px solid var(--border); border-radius: 14px; color: var(--text); background: var(--panel); cursor: pointer; font: inherit; text-align: left; }
.arena-card:hover { border-color: var(--brand-2); background: color-mix(in srgb, var(--brand-2) 8%, var(--panel)); }
.arena-card-main { min-width: 0; flex: 1; }
.arena-card-main strong { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.arena-status-chip { flex: 0 0 auto; padding: .3rem .48rem; border: 1px solid var(--border); border-radius: 999px; color: var(--muted); font-size: .58rem; font-weight: 900; }
.arena-status-chip.running { border-color: color-mix(in srgb, var(--accent) 55%, var(--border)); color: var(--accent); }
.arena-status-chip.done { border-color: color-mix(in srgb, var(--t-grass) 48%, var(--border)); color: var(--t-grass); }
.arena-detail-summary { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: .45rem; }
.arena-detail-summary > div { display: grid; gap: .14rem; }
.arena-detail-summary strong { overflow: hidden; color: var(--text); font-size: .8rem; text-overflow: ellipsis; white-space: nowrap; }
.arena-detail-summary small { color: var(--muted); font-size: .56rem; line-height: 1.2; }
.arena-detail-lead { margin: -.15rem 0 .1rem; }
.arena-cost-badge { flex: 0 0 auto; padding: .45rem .6rem; border: 1px solid color-mix(in srgb, var(--accent) 54%, var(--border)); border-radius: 999px; color: var(--accent); background: color-mix(in srgb, var(--accent) 8%, var(--panel)); font-weight: 900; }
.arena-picker-note { display: flex; gap: .45rem; padding: .55rem .65rem; border: 1px dashed color-mix(in srgb, var(--brand-2) 45%, var(--border)); border-radius: 11px; color: var(--muted); font-size: .64rem; line-height: 1.3; }
.arena-picker-note strong { color: var(--text); white-space: nowrap; }
.arena-redesign .arena-parts, .arena-redesign .bracket-scroll { padding: .1rem; }
.arena-redesign .bracket { padding: .1rem; }
.arena-redesign .bracket-title { color: var(--accent); font: 900 .62rem var(--font-mono); letter-spacing: .04em; text-transform: uppercase; }
.arena-redesign .bracket-match { border-color: var(--border); background: linear-gradient(145deg, var(--panel-2), var(--panel)); box-shadow: 0 6px 16px rgba(0,0,0,.12); }
.arena-redesign .bracket-match.done { border-color: color-mix(in srgb, var(--t-grass) 42%, var(--border)); }
.arena-redesign .bm-p { color: var(--text); }
.arena-redesign .bm-p.win { color: var(--t-grass); }
.arena-redesign .bm-vs, .arena-redesign .bm-schedule, .arena-redesign .bm-mode { color: var(--muted); }
.arena-champ { padding: .75rem; border: 1px solid color-mix(in srgb, var(--accent) 60%, var(--border)); border-radius: 14px; color: var(--accent); background: color-mix(in srgb, var(--accent) 8%, var(--panel)); font-weight: 900; text-align: center; }
.modal:has(.arena-redesign) { width: min(1180px, calc(100vw - .8rem)); max-width: 1180px; border: 1px solid color-mix(in srgb, var(--brand-2) 45%, var(--border)); background: linear-gradient(145deg, color-mix(in srgb, var(--brand-2) 9%, var(--panel)), var(--panel)); box-shadow: 0 28px 90px rgba(0,0,0,.38), inset 0 1px 0 rgba(255,255,255,.08); }
.arena-redesign { padding: .2rem; border-radius: 18px; background: radial-gradient(circle at 92% 0%, color-mix(in srgb, var(--accent) 9%, transparent), transparent 28%), linear-gradient(145deg, color-mix(in srgb, var(--brand-2) 6%, var(--panel)), var(--panel)); }
.arena-bracket-panel { display: grid; gap: .55rem; min-width: 0; padding: .75rem; border: 1px solid color-mix(in srgb, var(--brand-2) 30%, var(--border)); border-radius: 18px; background: linear-gradient(145deg, color-mix(in srgb, var(--brand-2) 8%, var(--panel-2)), var(--panel)); box-shadow: inset 0 1px 0 rgba(255,255,255,.04); }
.arena-bracket-toolbar { display: flex; align-items: center; justify-content: space-between; gap: .7rem; min-width: 0; }
.arena-bracket-toolbar > div { display: grid; gap: .12rem; min-width: 0; }
.arena-bracket-toolbar strong { color: var(--text); font-size: .84rem; }
.arena-bracket-toolbar small { color: var(--muted); font-size: .58rem; }
.arena-bracket-live-count { flex: 0 0 auto; padding: .3rem .5rem; border: 1px solid color-mix(in srgb, var(--t-grass) 45%, var(--border)); border-radius: 999px; color: var(--t-grass); background: color-mix(in srgb, var(--t-grass) 8%, var(--panel)); font: 900 .56rem var(--font-mono); white-space: nowrap; }
.arena-bracket-panel .bracket-scroll { min-height: 230px; padding: .65rem .5rem .8rem; overflow-x: auto; overflow-y: hidden; border: 1px solid color-mix(in srgb, var(--border) 82%, transparent); border-radius: 14px; background: color-mix(in srgb, var(--bg) 42%, var(--panel)); cursor: grab; scrollbar-color: var(--accent) color-mix(in srgb, var(--panel-2) 82%, transparent); touch-action: pan-y; user-select: none; }
.arena-bracket-panel .bracket-scroll.is-dragging { cursor: grabbing; }
.arena-bracket-panel .bracket { min-height: 205px; align-items: stretch; gap: 1.2rem; }
.arena-bracket-panel .bracket-col { min-width: 190px; padding: .3rem; border: 1px solid color-mix(in srgb, var(--border) 62%, transparent); border-radius: 14px; background: color-mix(in srgb, var(--panel-2) 45%, transparent); }
.arena-bracket-panel .bracket-title { padding: .25rem .2rem .42rem; }
.arena-bracket-panel .bracket-match { min-height: 112px; padding: .62rem; border-radius: 13px; background: linear-gradient(145deg, color-mix(in srgb, var(--panel-2) 95%, transparent), color-mix(in srgb, var(--brand-2) 6%, var(--panel))); }
.arena-bracket-panel .bracket-match:hover { border-color: color-mix(in srgb, var(--accent) 58%, var(--border)); transform: translateY(-1px); }
.arena-bracket-panel .bm-p { font-size: .75rem; }
@media (max-width: 540px) {
  .modal:has(.arena-redesign) { width: calc(100vw - .5rem); padding: .65rem; }
  .arena-bracket-toolbar { align-items: flex-start; flex-direction: column; }
  .arena-bracket-live-count { align-self: flex-start; }
  .arena-bracket-panel .bracket-col { min-width: 168px; }
}

@media (max-width: 720px) {
  .pass-hero { grid-template-columns: minmax(0, 1fr) 86px; padding: .8rem; }
  .pass-hero-sprite { width: 60px; height: 60px; }
  .pass-progress-top { align-items: flex-start; flex-direction: column; }
  .pass-progress-status { text-align: left; }
  .arena-dashboard { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .arena-dashboard-status { grid-column: 1 / -1; }
  .arena-detail-summary { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 540px) {
  .modal:has(.season-pass-modal), .modal:has(.arena-redesign) { width: calc(100vw - .65rem); }
  .pass-hero { grid-template-columns: 1fr; }
  .pass-hero-emblem { display: none; }
  .pass-howto-grid, .arena-guide-steps { grid-template-columns: 1fr; }
  .pass-section-title, .pass-howto-title { align-items: flex-start; flex-direction: column; }
  .pass-redesign-track { grid-template-columns: 1fr; }
  .men-today-head, .arena-redesign .arena-head, .arena-modal-title.detail { align-items: flex-start; flex-direction: column; }
  .arena-redesign .arena-head > .btn { align-self: flex-start; }
  .arena-hero-ball { display: none; }
  .arena-weekly { align-items: flex-start; flex-direction: column; }
  .arena-weekly-actions { width: 100%; justify-content: space-between; }
  .arena-picker-note { flex-direction: column; }
  .arena-picker-note strong { white-space: normal; }
}

/* Arena · seletor de time: o modal usa toda a área disponível e deixa apenas
   a grade rolar. Assim os filtros e os botões nunca ficam escondidos no mobile. */
.modal:has(.arena-team-picker) { width: min(100%, 900px); max-width: 900px; max-height: min(92dvh, 900px); overflow: hidden; }
.modal:has(.arena-team-picker) > #modal-content { display: flex; min-width: 0; min-height: 0; width: 100%; }
.arena-team-picker { display: flex; flex-direction: column; width: 100%; min-width: 0; min-height: 0; max-width: none; max-height: none; overflow: hidden; gap: .7rem; }
.arena-picker-controls { display: grid; grid-template-columns: minmax(180px, 1.5fr) repeat(2, minmax(145px, .8fr)) auto; align-items: center; gap: .45rem; }
.arena-picker-search, .arena-picker-select { width: 100%; min-width: 0; height: 2.35rem; padding: .42rem .62rem; border: 1px solid var(--border); border-radius: 10px; color: var(--text); background: var(--panel-2); font: inherit; font-size: .76rem; }
.arena-picker-search::placeholder { color: var(--muted); opacity: .9; }
.arena-picker-search:focus, .arena-picker-select:focus { border-color: var(--accent); outline: 2px solid color-mix(in srgb, var(--accent) 24%, transparent); outline-offset: 1px; }
.arena-picker-check { display: inline-flex; align-items: center; justify-content: center; gap: .35rem; min-height: 2.35rem; padding: .35rem .5rem; border: 1px solid var(--border); border-radius: 10px; color: var(--text); background: var(--panel-2); font-size: .7rem; font-weight: 800; cursor: pointer; white-space: nowrap; }
.arena-picker-check input { accent-color: var(--accent); }
.arena-picker-selected { display: grid; gap: .4rem; padding: .55rem .65rem; border: 1px solid color-mix(in srgb, var(--accent) 30%, var(--border)); border-radius: 13px; background: color-mix(in srgb, var(--accent) 5%, var(--panel-2)); }
.arena-picker-selected-head { display: flex; align-items: center; justify-content: space-between; gap: .5rem; min-width: 0; }
.arena-picker-selected-head strong { color: var(--text); font-size: .72rem; }
.arena-picker-selected-list { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: .35rem; min-height: 3.9rem; }
.arena-picker-selected-mon { position: relative; display: grid; justify-items: center; gap: .02rem; min-width: 0; padding: .25rem .15rem; border: 1px solid var(--border); border-radius: 9px; color: var(--text); background: var(--panel); cursor: pointer; font: inherit; }
.arena-picker-selected-mon:hover { border-color: var(--accent); background: color-mix(in srgb, var(--accent) 10%, var(--panel)); }
.arena-picker-selected-slot { position: absolute; top: .12rem; left: .18rem; color: var(--accent); font: 900 .52rem var(--font-mono); }
.arena-picker-selected-sprite { width: 38px; height: 38px; object-fit: contain; image-rendering: pixelated; }
.arena-picker-selected-name { max-width: 100%; overflow: hidden; color: var(--text); font-size: .55rem; font-weight: 800; text-overflow: ellipsis; white-space: nowrap; }
.arena-picker-selected-mon small { font-size: .5rem; }
.arena-picker-selected-empty, .arena-picker-empty { display: grid; place-items: center; min-height: 3.6rem; color: var(--muted); font-size: .7rem; text-align: center; }
.arena-picker-selected-empty { grid-column: 1 / -1; }
.arena-team-picker-grid { flex: 1 1 auto; min-height: 150px; max-height: 38vh; margin: 0; padding: .25rem; overflow-y: auto; overscroll-behavior: contain; grid-template-columns: repeat(auto-fill, minmax(132px, 1fr)); scrollbar-color: var(--accent) transparent; }
.arena-team-choice { position: relative; min-height: 122px; padding: .48rem .3rem .4rem; transition: transform .16s ease, border-color .16s ease, background .16s ease; }
.arena-team-choice:hover { transform: translateY(-2px); }
.arena-team-choice.active { background: linear-gradient(145deg, color-mix(in srgb, var(--accent) 18%, var(--panel-2)), var(--panel-2)); }
.arena-team-sprite { width: 74px; height: 74px; }
.arena-team-name { max-width: 100%; overflow: hidden; color: var(--text); font-size: .72rem; text-overflow: ellipsis; white-space: nowrap; }
.arena-team-check { position: absolute; top: .3rem; right: .35rem; display: grid; width: 1.25rem; height: 1.25rem; place-items: center; border-radius: 50%; color: #07130e; background: var(--t-grass); font-size: .72rem; font-weight: 900; }
.arena-picker-empty { grid-column: 1 / -1; min-height: 9rem; border: 1px dashed var(--border); border-radius: 12px; }
.arena-team-picker > .actions { flex: 0 0 auto; margin-top: 0; padding-top: .65rem; border-top: 1px solid var(--border); }
@media (max-width: 720px) {
  .modal:has(.arena-team-picker) { width: calc(100% - .8rem); max-height: calc(100dvh - .8rem); padding: .9rem; }
  .arena-picker-controls { grid-template-columns: 1fr 1fr; }
  .arena-picker-search { grid-column: 1 / -1; }
  .arena-picker-check { grid-column: 1 / -1; justify-content: flex-start; }
  .arena-picker-selected-list { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .arena-team-picker-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); max-height: 36dvh; }
  .arena-team-sprite { width: 64px; height: 64px; }
}
@media (max-width: 390px) {
  .arena-picker-controls { grid-template-columns: 1fr; }
  .arena-picker-search, .arena-picker-check { grid-column: auto; }
  .arena-picker-selected-list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* ═════════════════════════════════════════════════════════════
   MENTORIA · missões e acervo
   ═════════════════════════════════════════════════════════════ */
.missions-redesign { display: grid; gap: .85rem; padding: 1rem; border: 1px solid var(--border); border-radius: 20px; background: linear-gradient(145deg, color-mix(in srgb, var(--accent) 7%, var(--panel)), var(--panel)); }
.missions-hero { display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; }
.missions-hero-copy h2 { margin: .2rem 0 .16rem; color: var(--text); font-size: clamp(1.1rem, 2.5vw, 1.45rem); }
.missions-hero-copy p { max-width: 62ch; margin: 0; line-height: 1.4; }
.missions-refresh { flex: 0 0 auto; padding: .34rem .52rem; border: 1px solid var(--border); border-radius: 999px; color: var(--muted); background: var(--panel); font: 800 .58rem var(--font-mono); }
.missions-summary { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .48rem; }
.mission-summary-card { display: grid; grid-template-columns: 32px 1fr; grid-template-rows: auto auto; grid-template-areas: 'icon value' 'icon label'; align-items: center; column-gap: .45rem; min-width: 0; padding: .58rem .65rem; border: 1px solid var(--border); border-radius: 14px; background: color-mix(in srgb, var(--panel-2) 78%, transparent); }
.mission-summary-icon { grid-area: icon; display: grid; place-items: center; width: 30px; height: 30px; border-radius: 10px; background: color-mix(in srgb, var(--brand-2) 15%, var(--panel)); font-size: 1.05rem; }
.mission-summary-card strong { grid-area: value; color: var(--text); font-size: 1rem; }
.mission-summary-card small { grid-area: label; overflow: hidden; color: var(--muted); font-size: .56rem; text-overflow: ellipsis; white-space: nowrap; }
.mission-summary-card.daily .mission-summary-icon { background: color-mix(in srgb, #ffca3a 15%, var(--panel)); }
.mission-summary-card.weekly .mission-summary-icon { background: color-mix(in srgb, var(--brand-2) 15%, var(--panel)); }
.mission-summary-card.ready { border-color: color-mix(in srgb, var(--accent) 42%, var(--border)); }
.mission-summary-card.ready strong { color: var(--accent); }
.missions-focus { display: grid; grid-template-columns: 34px minmax(0, 1fr) auto; align-items: center; gap: .5rem; padding: .62rem .68rem; border: 1px solid color-mix(in srgb, var(--brand-2) 34%, var(--border)); border-radius: 14px; background: linear-gradient(120deg, color-mix(in srgb, var(--brand-2) 8%, var(--panel)), var(--panel-2)); }
.missions-focus.complete { grid-template-columns: 34px minmax(0, 1fr); }
.missions-focus-icon { display: grid; place-items: center; width: 30px; height: 30px; border-radius: 10px; background: color-mix(in srgb, var(--brand-2) 15%, var(--panel)); font-size: 1rem; }
.missions-focus-copy { display: grid; min-width: 0; gap: .1rem; }
.missions-focus-copy strong { overflow: hidden; color: var(--text); font-size: .7rem; text-overflow: ellipsis; white-space: nowrap; }
.missions-focus-copy small { overflow: hidden; font-size: .56rem; text-overflow: ellipsis; white-space: nowrap; }
.missions-focus-count { padding: .24rem .4rem; border: 1px solid var(--border); border-radius: 999px; color: var(--accent); font: 900 .58rem var(--font-mono); white-space: nowrap; }
.missions-bonus-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .48rem; }
.missions-bonus-card { display: grid; grid-template-columns: 32px minmax(0, 1fr) auto; align-items: center; gap: .55rem; min-width: 0; padding: .58rem .65rem; border: 1px solid var(--border); border-radius: 14px; background: color-mix(in srgb, var(--panel-2) 72%, transparent); }
.missions-bonus-card.ready { border-color: color-mix(in srgb, var(--accent) 52%, var(--border)); background: color-mix(in srgb, var(--accent) 7%, var(--panel-2)); }
.missions-bonus-card.claimed { opacity: .72; }
.missions-bonus-icon { display: grid; place-items: center; width: 30px; height: 30px; border-radius: 10px; background: color-mix(in srgb, var(--accent) 14%, var(--panel)); font-size: 1rem; }
.missions-bonus-copy { display: grid; min-width: 0; gap: .1rem; }
.missions-bonus-copy strong { color: var(--text); font-size: .7rem; }
.missions-bonus-copy small { overflow: hidden; color: var(--muted); font-size: .56rem; text-overflow: ellipsis; white-space: nowrap; }
.missions-bonus-copy b { color: var(--accent); font-size: .56rem; }
.missions-bonus-state { padding: .26rem .38rem; border: 1px solid var(--border); border-radius: 8px; color: var(--muted); font: 800 .52rem var(--font-mono); white-space: nowrap; }
.missions-bonus-state.claimed { border-color: color-mix(in srgb, var(--t-grass) 50%, var(--border)); color: var(--t-grass); }
.missions-columns { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .65rem; }
.missions-redesign .ms-group { min-width: 0; margin-top: 0; padding: .7rem; border: 1px solid var(--border); border-radius: 15px; background: color-mix(in srgb, var(--panel-2) 62%, transparent); }
.ms-group-head { display: flex; align-items: flex-start; justify-content: space-between; gap: .6rem; margin-bottom: .25rem; }
.ms-group-head > div { display: grid; gap: .12rem; }
.missions-redesign .ms-h { margin: 0; color: var(--text); font-size: .8rem; }
.ms-group-head small { font-size: .57rem; }
.ms-group-count { flex: 0 0 auto; padding: .24rem .4rem; border-radius: 999px; color: var(--brand-2); background: color-mix(in srgb, var(--brand-2) 12%, var(--panel)); font: 900 .55rem var(--font-mono); }
.missions-redesign .mission-row { align-items: flex-start; gap: .55rem; padding: .62rem .1rem; border-top: 1px solid color-mix(in srgb, var(--border) 80%, transparent); }
.missions-redesign .mission-row .ms-ico { display: grid; place-items: center; width: 29px; height: 29px; flex: 0 0 auto; border: 1px solid var(--border); border-radius: 9px; background: var(--panel); font-size: .95rem; }
.missions-redesign .ms-main { display: grid; gap: .32rem; }
.missions-redesign .ms-copy { display: grid; gap: .08rem; }
.missions-redesign .ms-text { color: var(--text); font-size: .7rem; line-height: 1.22; }
.missions-redesign .ms-helper { overflow: hidden; color: var(--muted); font-size: .57rem; line-height: 1.2; text-overflow: ellipsis; white-space: nowrap; }
.missions-redesign .ms-reward { color: var(--accent); font-size: .56rem; font-weight: 800; line-height: 1.2; }
.missions-redesign .ms-progress-line { display: flex; align-items: center; gap: .35rem; }
.missions-redesign .ms-bar { flex: 1; height: 6px; border: 1px solid var(--border); background: var(--bg); }
.missions-redesign .ms-progress-line small { min-width: 27px; color: var(--muted); font: 700 .52rem var(--font-mono); text-align: right; }
.missions-redesign .ms-state { flex: 0 0 auto; align-self: center; padding: .25rem .36rem; border: 1px solid var(--border); border-radius: 8px; color: var(--muted); font: 800 .54rem var(--font-mono); }
.missions-redesign .ms-state.done { border-color: color-mix(in srgb, var(--t-grass) 50%, var(--border)); color: var(--t-grass); background: color-mix(in srgb, var(--t-grass) 9%, var(--panel)); }
.missions-redesign .ms-claim { align-self: center; min-height: 28px; padding: .3rem .45rem; border-color: color-mix(in srgb, var(--accent) 65%, var(--border)); color: var(--accent); background: color-mix(in srgb, var(--accent) 8%, var(--panel)); font: 900 .55rem var(--font); }
.missions-redesign .ms-claim:hover { background: color-mix(in srgb, var(--accent) 17%, var(--panel)); transform: none; }
.missions-redesign .mission-row.claimed { opacity: .72; }

.archive-redesign { display: grid; gap: .72rem; padding: 1rem; border: 1px solid var(--border); border-radius: 20px; background: linear-gradient(145deg, color-mix(in srgb, var(--brand-2) 6%, var(--panel)), var(--panel)); }
.archive-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; }
.archive-heading .section-intro-row { min-width: 0; margin: 0; }
.archive-heading h2 { margin: .2rem 0 .15rem; color: var(--text); font-size: clamp(1.1rem, 2.5vw, 1.45rem); }
.archive-heading p { max-width: 66ch; margin: 0; line-height: 1.4; }
.archive-summary { flex: 0 0 auto; padding: .35rem .52rem; border: 1px solid var(--border); border-radius: 999px; color: var(--brand-2); background: color-mix(in srgb, var(--brand-2) 9%, var(--panel)); font: 800 .57rem var(--font-mono); }
.archive-toolbar { display: flex; align-items: center; gap: .45rem; }
.archive-search-wrap { display: flex; align-items: center; gap: .35rem; min-width: 0; flex: 1; padding: 0 .55rem; border: 1px solid var(--border); border-radius: 10px; color: var(--muted); background: var(--panel); }
.archive-search-wrap input { width: 100%; min-width: 0; padding: .52rem .15rem; border: 0; outline: 0; color: var(--text); background: transparent; font: inherit; font-size: .7rem; }
.archive-toolbar select { flex: 0 1 205px; min-width: 150px; padding: .52rem .55rem; border: 1px solid var(--border); border-radius: 10px; color: var(--text); background: var(--panel); font: inherit; font-size: .68rem; }
.archive-redesign .archive-list { grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: .52rem; margin-top: 0; }
.archive-redesign .archive-item { display: grid; grid-template-columns: 42px minmax(0, 1fr) 18px; align-items: center; gap: .55rem; min-width: 0; padding: .65rem; border-radius: 14px; background: color-mix(in srgb, var(--panel-2) 72%, transparent); }
.archive-redesign .archive-item:hover { transform: translateY(-1px); border-color: var(--brand-2); background: color-mix(in srgb, var(--brand-2) 8%, var(--panel)); }
.ai-index { display: grid; place-items: center; width: 40px; height: 40px; border: 1px solid color-mix(in srgb, var(--brand-2) 45%, var(--border)); border-radius: 12px; color: var(--brand-2); background: color-mix(in srgb, var(--brand-2) 10%, var(--panel)); font: 900 .58rem var(--font-mono); }
.archive-redesign .ai-main { display: grid; min-width: 0; gap: .16rem; }
.archive-redesign .ai-top { display: flex; align-items: center; justify-content: space-between; gap: .4rem; }
.archive-redesign .ai-top small { overflow: hidden; color: var(--muted); font-size: .54rem; text-overflow: ellipsis; white-space: nowrap; }
.archive-redesign .ai-top .pill { padding: .14rem .35rem; font-size: .48rem; }
.archive-redesign .ai-title { overflow: hidden; color: var(--text); font-size: .72rem; line-height: 1.2; text-overflow: ellipsis; white-space: nowrap; }
.archive-redesign .ai-open-hint { overflow: hidden; color: var(--muted); font-size: .57rem; text-overflow: ellipsis; white-space: nowrap; }
.archive-redesign .ai-sub { width: max-content; margin-top: .08rem; padding: .14rem .35rem; font-size: .5rem; }
.ai-arrow { color: var(--muted); font-size: 1.25rem; transition: transform .15s ease, color .15s ease; }
.archive-redesign .archive-item:hover .ai-arrow { transform: translateX(2px); color: var(--accent); }
.archive-empty { display: grid; justify-items: center; gap: .25rem; padding: 1.2rem .8rem; border: 1px dashed var(--border); border-radius: 14px; text-align: center; }
.archive-empty-icon { font-size: 1.4rem; }
.archive-empty strong { color: var(--text); font-size: .8rem; }
.archive-empty p { margin: 0; }
.archive-redesign .archive-sel-row { margin-top: .65rem; }

@media (max-width: 720px) {
  .missions-columns { grid-template-columns: 1fr; }
  .archive-heading { flex-direction: column; gap: .45rem; }
  .archive-summary { align-self: flex-start; }
}
@media (max-width: 520px) {
  .missions-hero { flex-direction: column; gap: .45rem; }
  .missions-summary { grid-template-columns: 1fr; }
  .missions-bonus-grid { grid-template-columns: 1fr; }
  .missions-focus { grid-template-columns: 30px minmax(0, 1fr); }
  .missions-focus-count { grid-column: 2; justify-self: start; }
  .missions-focus.complete { grid-template-columns: 30px minmax(0, 1fr); }
  .missions-bonus-card { grid-template-columns: 30px minmax(0, 1fr); }
  .missions-bonus-card > .ms-claim, .missions-bonus-card > .missions-bonus-state { grid-column: 2; justify-self: start; }
  .missions-refresh { align-self: flex-start; }
  .archive-toolbar { align-items: stretch; flex-direction: column; }
  .archive-toolbar select { flex: 1; width: 100%; }
  .archive-redesign .archive-list { grid-template-columns: 1fr; }
}

/* ═════════════════════════════════════════════════════════════
   MENTORIA · acabamento visual 2.0
   A aba funciona como uma jornada contínua, não como uma sequência de
   caixas independentes. Estes estilos unificam ritmo, contraste e foco.
   ═════════════════════════════════════════════════════════════ */
#tab-mentoria { gap: clamp(.72rem, 1.6vw, 1.15rem); padding-bottom: 1.5rem; }
#tab-mentoria > #mentor-review-banner:empty { display: none; }
#tab-mentoria > #men-daily { margin-top: 0; }
#tab-mentoria > .men-today { margin-top: 0; }
.mentoria-overview, .trainer-card, .engagement-hub, .mentoria-today-redesign, .mentoria-roadmap-section, .mentoria-review-section, .missions-redesign, .archive-redesign { position: relative; isolation: isolate; }
.mentoria-overview::before, .trainer-card::before, .mentoria-today-redesign::before, .missions-redesign::before, .archive-redesign::before { position: absolute; top: 0; left: 1.1rem; width: 68px; height: 2px; border-radius: 999px; background: linear-gradient(90deg, var(--accent), transparent); content: ''; opacity: .85; }
.mentoria-overview { margin-top: .1rem; }
.mentoria-overview-copy .eyebrow, .men-section-title-wrap .eyebrow { letter-spacing: .11em; }
.mentoria-overview-copy h1 { letter-spacing: -.025em; }
.mo-lead { font-size: .92rem; }
.mo-chip { box-shadow: inset 0 1px 0 rgba(255,255,255,.04); }
.mentoria-overview-progress { box-shadow: inset 0 1px 0 rgba(255,255,255,.04); }
.mentoria-quick-actions { grid-template-columns: repeat(auto-fit, minmax(145px, 1fr)); }
.mentoria-quick-action { min-height: 42px; }
.trainer-card { overflow: hidden; }
.trainer-card::after { opacity: .35; }
.tc-top { position: relative; z-index: 1; }
.tc-main { position: relative; z-index: 1; }
.tc-journey-row, .tc-trainer-xp, .tc-stats, .tc-collection { box-shadow: inset 0 1px 0 rgba(255,255,255,.04); }
.engagement-hub { margin-top: 0; border: 1px solid var(--border); border-radius: 20px; box-shadow: 0 12px 28px rgba(3,7,18,.14); }
.engagement-head h2 { letter-spacing: -.02em; }
.engagement-metrics { gap: .5rem; }
.engagement-metric { border-radius: 13px; background: color-mix(in srgb, var(--panel-2) 78%, transparent); }
.engagement-next { border-radius: 15px; box-shadow: inset 0 1px 0 rgba(255,255,255,.05); }
.engagement-card { border-radius: 15px; box-shadow: 0 6px 16px rgba(3,7,18,.09); }
.mentoria-today-redesign { box-shadow: 0 14px 30px rgba(3,7,18,.13); }
.men-today-head { padding-bottom: .7rem; border-bottom: 1px solid color-mix(in srgb, var(--border) 72%, transparent); }
.men-section-title { letter-spacing: -.025em; }
.men-section-lead { font-size: .88rem; }
.today-start, .day-card { box-shadow: 0 8px 20px rgba(3,7,18,.1); }
.schedule-line { align-self: center; }
.mentoria-roadmap-section, .mentoria-review-section { margin-top: 0; box-shadow: 0 8px 22px rgba(3,7,18,.1); }
.mentoria-roadmap-section + .mentoria-review-section { margin-top: .72rem; }
.mentoria-section-heading { padding-bottom: .45rem; border-bottom: 1px solid color-mix(in srgb, var(--border) 72%, transparent); }
.mentoria-section-heading h2 { letter-spacing: -.02em; }
.roadmap-card, .review-card { border: 0; padding: .5rem 0 0; background: transparent; box-shadow: none; }
.rm-head .eyebrow { color: var(--brand-2); }
.rm-step { padding: .58rem 0; }
.men-daily { margin-top: 0; }
.men-daily .md-quote { min-height: 3rem; border-radius: 14px; box-shadow: 0 6px 16px rgba(3,7,18,.08); }
.archive-redesign { margin-top: 0; box-shadow: 0 10px 24px rgba(3,7,18,.1); }
.archive-redesign .section-intro-row .eyebrow { letter-spacing: .1em; }

@media (min-width: 821px) {
  #tab-mentoria > .men-today { min-height: 100%; }
  #tab-mentoria > #men-roadmap { align-self: stretch; display: grid; align-content: start; gap: .72rem; }
  #tab-mentoria > #men-roadmap > .mentoria-roadmap-section:first-child { height: auto; min-height: 0; }
}
@media (max-width: 820px) {
  .mentoria-quick-actions { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .mentoria-today-redesign, .missions-redesign, .archive-redesign { border-radius: 17px; }
}
@media (max-width: 520px) {
  #tab-mentoria { gap: .68rem; }
  .mentoria-overview::before, .trainer-card::before, .mentoria-today-redesign::before, .missions-redesign::before, .archive-redesign::before { left: .8rem; width: 48px; }
  .mentoria-quick-actions { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .mentoria-quick-action { min-height: 40px; }
  .men-today-head { padding-bottom: .55rem; }
  .schedule-line { width: 100%; }
  .mentoria-section-heading { gap: .45rem; }
  .mentoria-section-mark { font-size: .48rem; }
}

/* ═════════════════════════════════════════════════════════════
   MODAIS · camada final de tamanho e leitura
   Esta é a última regra do tema para que os limites antigos não voltem a
   reduzir as janelas depois dos estilos específicos de cada aba.
   ═════════════════════════════════════════════════════════════ */
.modal-backdrop {
  place-items: center;
  padding: max(.8rem, env(safe-area-inset-top, 0px)) max(.8rem, env(safe-area-inset-right, 0px)) max(.8rem, env(safe-area-inset-bottom, 0px)) max(.8rem, env(safe-area-inset-left, 0px));
}
.modal {
  --modal-pad: clamp(1rem, 2.4vw, 1.7rem);
  width: min(900px, calc(100vw - 1.6rem));
  max-width: 900px;
  max-height: min(92dvh, 1100px);
  min-height: 0;
  padding: var(--modal-pad);
  border-radius: 20px;
  overflow-x: hidden;
  overflow-y: auto;
  scrollbar-gutter: stable;
  scrollbar-color: var(--accent) transparent;
}
.modal > #modal-content { width: 100%; min-width: 0; max-width: none; }
.modal > #modal-content > * { min-width: 0; max-width: 100%; }
.modal h1, .modal h2, .modal h3, .modal h4 { overflow-wrap: anywhere; line-height: 1.16; }
.modal h3 { margin-bottom: 1.15rem; font-size: clamp(1.2rem, 2.5vw, 1.7rem); }
.modal p, .modal label, .modal small, .modal span, .modal strong { overflow-wrap: anywhere; }
.modal .field { gap: .4rem; margin-bottom: .95rem; }
.modal .field label { font-size: .86rem; }
.modal :is(input, select, textarea) { min-width: 0; max-width: 100%; }
.modal textarea { min-height: 118px; line-height: 1.5; }
.modal .actions {
  bottom: calc(-1 * var(--modal-pad));
  margin-inline: calc(-1 * var(--modal-pad));
  margin-top: 1.15rem;
  margin-bottom: calc(-1 * var(--modal-pad));
  padding: .85rem var(--modal-pad) calc(.85rem + env(safe-area-inset-bottom, 0px));
  background: linear-gradient(180deg, color-mix(in srgb, var(--panel) 72%, transparent), var(--panel) 32%);
}
.modal .actions .btn { min-height: 38px; }

/* Larguras proporcionais ao conteúdo de cada janela. */
.modal:has(.team-manager-modal) { width: min(1160px, calc(100vw - 1.2rem)); max-width: 1160px; }
.modal:has(.arena-team-picker) { width: min(1100px, calc(100vw - 1.2rem)); max-width: 1100px; }
.modal:has(.season-pass-modal), .modal:has(.dungeon-modal) { width: min(1180px, calc(100vw - 1.2rem)); max-width: 1180px; }
.modal:has(.pokemon-center-modal), .modal:has(.pkmn-detail) { width: min(1120px, calc(100vw - 1.2rem)); max-width: 1120px; }
.modal:has(.profile-modal.pf), .modal:has(.pf) { width: min(1120px, calc(100vw - 1.2rem)); max-width: 1120px; }
.modal:has(.crev-modal), .modal:has(.crev2), .modal:has(.day-preview.wide), .modal:has(.tut-modal) { width: min(1100px, calc(100vw - 1.2rem)); max-width: 1100px; }
.modal:has(.report-wrap), .modal:has(.event-view) { width: min(980px, calc(100vw - 1.2rem)); max-width: 980px; }
.modal:has(.settings-modal) { width: min(720px, calc(100vw - 1.2rem)); max-width: 720px; }
.modal:has(.nature-npc-modal), .modal:has(.nature-choice-modal) { width: min(820px, calc(100vw - 1.2rem)); max-width: 820px; }
.modal:has(.dex-scan) { width: min(460px, calc(100vw - 1.2rem)); max-width: 460px; }
.modal:has(.shopx) { width: min(1120px, calc(100vw - 1.2rem)); max-width: 1120px; }
.modal:has(.trade-modal-v2) { width: min(1240px, calc(100vw - 1.2rem)); max-width: 1240px; }
.modal:has(.bag-redesign) { width: min(1280px, calc(100vw - 1.2rem)); max-width: 1280px; }
.modal:has(.gen3-tutorial) { width: min(1220px, calc(100vw - 1.2rem)); max-width: 1220px; }
.modal:has(.cinema-private-modal), .modal:has(.cinema-screen-help-modal), .modal:has(.cinema-private-result) { width: min(960px, calc(100vw - 1.2rem)); max-width: 960px; }

/* Grades grandes precisam de mais área antes de começar a rolar. */
.modal:has(.team-manager-modal) .tm-pool-redesign,
.modal:has(.arena-team-picker) .arena-team-picker-grid,
.modal:has(.shopx) .shopx-grid { max-height: min(56vh, 620px); }
.modal:has(.team-manager-modal) .tm-pokemon-card { min-height: 200px; }
.modal:has(.arena-team-picker) .arena-team-choice { min-height: 148px; }
.modal:has(.shopx) .shopx { max-height: none; }
.modal:has(.shopx) .shopx-card { min-height: 148px; }
.modal:has(.pkmn-detail) .pkmn-detail,
.modal:has(.pokemon-center-modal) .pokemon-center-modal,
.modal:has(.profile-modal.pf) .profile-modal.pf { max-height: none; min-height: 0; }
.modal:has(.pkmn-detail) .pkmn-detail-columns { grid-template-columns: minmax(0, 1.15fr) minmax(300px, .85fr); }

@media (max-width: 760px) {
  .modal-backdrop { place-items: start center; }
  .modal {
    --modal-pad: .9rem;
    width: calc(100vw - .8rem);
    max-width: none;
    max-height: calc(100dvh - .8rem);
    border-radius: 18px;
  }
  .modal:has(.team-manager-modal), .modal:has(.arena-team-picker),
  .modal:has(.season-pass-modal), .modal:has(.dungeon-modal),
  .modal:has(.pokemon-center-modal), .modal:has(.pkmn-detail),
  .modal:has(.profile-modal.pf), .modal:has(.pf),
  .modal:has(.crev-modal), .modal:has(.crev2), .modal:has(.day-preview.wide),
  .modal:has(.tut-modal), .modal:has(.report-wrap), .modal:has(.event-view),
  .modal:has(.settings-modal), .modal:has(.nature-npc-modal),
  .modal:has(.nature-choice-modal), .modal:has(.dex-scan), .modal:has(.shopx),
  .modal:has(.trade-modal-v2), .modal:has(.bag-redesign), .modal:has(.gen3-tutorial) {
    width: calc(100vw - .8rem);
    max-width: none;
  }
  .modal .actions { justify-content: stretch; }
  .modal .actions .btn { flex: 1 1 9rem; }
  .modal:has(.team-manager-modal) .tm-pool-redesign,
  .modal:has(.arena-team-picker) .arena-team-picker-grid,
  .modal:has(.shopx) .shopx-grid { max-height: 48dvh; }
  .modal:has(.team-manager-modal) .tm-pokemon-card { min-height: 166px; }
  .modal:has(.shopx) .shopx-card { min-height: 126px; }
  .modal:has(.pkmn-detail) .pkmn-detail-columns { grid-template-columns: 1fr; }
}
@media (max-width: 430px) {
  .modal {
    --modal-pad: .75rem;
    width: calc(100vw - .5rem);
    max-height: calc(100dvh - .5rem);
    border-radius: 16px;
  }
  .modal h3 { font-size: 1.25rem; }
  .modal .actions .btn { flex-basis: 100%; }
}

/* ═════════════════════════════════════════════════════════════
   SISTEMA GLOBAL DE MODAIS · leitura ampla e responsiva
   A camada fica no fim do arquivo para corrigir os limites legados dos
   módulos sem obrigar cada aba a reinventar largura, rolagem e rodapé.
   ═════════════════════════════════════════════════════════════ */
.modal-backdrop {
  display: grid;
  place-items: center;
  padding: max(.8rem, env(safe-area-inset-top, 0px)) max(.8rem, env(safe-area-inset-right, 0px)) max(.8rem, env(safe-area-inset-bottom, 0px)) max(.8rem, env(safe-area-inset-left, 0px));
}
.modal {
  --modal-pad: clamp(1rem, 2.4vw, 1.7rem);
  display: flex;
  flex-direction: column;
  width: min(900px, calc(100vw - 1.6rem));
  max-width: 900px;
  max-height: min(92dvh, 1100px);
  min-height: 0;
  padding: var(--modal-pad);
  border-radius: 20px;
  overflow-x: hidden;
  overflow-y: auto;
  scrollbar-gutter: stable;
  scrollbar-color: var(--accent) transparent;
}
.modal > #modal-content {
  display: block;
  width: 100%;
  min-width: 0;
  max-width: none;
}
.modal > #modal-content > * { min-width: 0; max-width: 100%; }
.modal h1, .modal h2, .modal h3, .modal h4 { overflow-wrap: anywhere; line-height: 1.16; }
.modal h3 { margin-bottom: 1.15rem; font-size: clamp(1.2rem, 2.5vw, 1.7rem); }
.modal p, .modal label, .modal small, .modal span, .modal strong { overflow-wrap: anywhere; }
.modal .field { gap: .4rem; margin-bottom: .95rem; }
.modal .field label { font-size: .86rem; }
.modal :is(input, select, textarea) { min-width: 0; max-width: 100%; }
.modal textarea { min-height: 118px; line-height: 1.5; }
.modal .actions {
  bottom: calc(-1 * var(--modal-pad));
  margin-inline: calc(-1 * var(--modal-pad));
  margin-top: 1.15rem;
  margin-bottom: calc(-1 * var(--modal-pad));
  padding: .85rem var(--modal-pad) calc(.85rem + env(safe-area-inset-bottom, 0px));
  background: linear-gradient(180deg, color-mix(in srgb, var(--panel) 72%, transparent), var(--panel) 32%);
}
.modal .actions .btn { min-height: 38px; }

/* Janelas de conteúdo rico e acompanhamento: precisam de espaço horizontal
   para tabelas, respostas e relatórios não quebrarem palavra por palavra. */
.modal:has(.team-manager-modal),
.modal:has(.arena-team-picker),
.modal:has(.season-pass-modal),
.modal:has(.dungeon-modal),
.modal:has(.pokemon-center-modal),
.modal:has(.pkmn-detail),
.modal:has(.profile-modal.pf),
.modal:has(.crev-modal),
.modal:has(.crev2),
.modal:has(.report-wrap),
.modal:has(.event-view),
.modal:has(.cinema-private-modal),
.modal:has(.cinema-screen-help-modal),
.modal:has(.cinema-private-result) {
  width: min(1080px, calc(100vw - 1.4rem));
  max-width: 1080px;
}
.modal:has(.team-manager-modal) { width: min(1160px, calc(100vw - 1.2rem)); max-width: 1160px; }
.modal:has(.arena-team-picker) { width: min(1100px, calc(100vw - 1.2rem)); max-width: 1100px; }
.modal:has(.season-pass-modal), .modal:has(.dungeon-modal) { width: min(1180px, calc(100vw - 1.2rem)); max-width: 1180px; }
.modal:has(.pkmn-detail) { width: min(1120px, calc(100vw - 1.2rem)); max-width: 1120px; }
.modal:has(.profile-modal.pf) { width: min(1120px, calc(100vw - 1.2rem)); max-width: 1120px; }
.modal:has(.crev-modal), .modal:has(.crev2) { width: min(1100px, calc(100vw - 1.2rem)); max-width: 1100px; }
.modal:has(.report-wrap), .modal:has(.event-view) { width: min(980px, calc(100vw - 1.2rem)); max-width: 980px; }

/* O detalhe de Pokémon e o Centro Pokémon usam painéis paralelos; a altura
   flexível evita que o rodapé fique escondido atrás da janela. */
.modal:has(.pkmn-detail) > #modal-content,
.modal:has(.pokemon-center-modal) > #modal-content,
.modal:has(.profile-modal.pf) > #modal-content { min-height: 0; }
.pkmn-detail, .pokemon-center-modal, .profile-modal.pf { max-height: none; min-height: 0; }
.pkmn-detail-columns { grid-template-columns: minmax(0, 1.15fr) minmax(300px, .85fr); }

/* Formulários de criação e edição ficam confortáveis sem virar uma tela
   estreita no desktop. */
.modal:has(.settings-modal) { width: min(720px, calc(100vw - 1.2rem)); max-width: 720px; }
.modal:has(.nature-npc-modal), .modal:has(.nature-choice-modal) { width: min(820px, calc(100vw - 1.2rem)); max-width: 820px; }
.modal:has(.dex-scan) { width: min(460px, calc(100vw - 1.2rem)); max-width: 460px; }
.modal:has(.shopx) { width: min(1120px, calc(100vw - 1.2rem)); max-width: 1120px; }
.modal:has(.trade-modal-v2) { width: min(1240px, calc(100vw - 1.2rem)); max-width: 1240px; }
.modal:has(.bag-redesign) { width: min(1280px, calc(100vw - 1.2rem)); max-width: 1280px; }
.modal:has(.gen3-tutorial) { width: min(1220px, calc(100vw - 1.2rem)); max-width: 1220px; }

/* Listas e grades recebem mais área para não apresentar só metade dos itens. */
.modal:has(.team-manager-modal) .tm-pool-redesign,
.modal:has(.arena-team-picker) .arena-team-picker-grid,
.modal:has(.shopx) .shopx-grid { max-height: min(56vh, 620px); }
.modal:has(.team-manager-modal) .tm-team-redesign { gap: .7rem; }
.modal:has(.team-manager-modal) .tm-pokemon-card { min-height: 200px; }
.modal:has(.arena-team-picker) .arena-team-choice { min-height: 148px; }
.modal:has(.shopx) .shopx { max-height: none; }
.modal:has(.shopx) .shopx-card { min-height: 148px; }

@media (max-width: 760px) {
  .modal-backdrop { place-items: start center; }
  .modal {
    --modal-pad: .9rem;
    width: calc(100vw - .8rem);
    max-width: none;
    max-height: calc(100dvh - .8rem);
    border-radius: 18px;
  }
  .modal:has(.team-manager-modal),
  .modal:has(.arena-team-picker),
  .modal:has(.season-pass-modal),
  .modal:has(.dungeon-modal),
  .modal:has(.pokemon-center-modal),
  .modal:has(.pkmn-detail),
  .modal:has(.profile-modal.pf),
  .modal:has(.crev-modal),
  .modal:has(.crev2),
  .modal:has(.report-wrap),
  .modal:has(.event-view),
  .modal:has(.cinema-private-modal),
  .modal:has(.cinema-screen-help-modal),
  .modal:has(.cinema-private-result),
  .modal:has(.settings-modal),
  .modal:has(.nature-npc-modal),
  .modal:has(.nature-choice-modal),
  .modal:has(.dex-scan),
  .modal:has(.shopx),
  .modal:has(.trade-modal-v2),
  .modal:has(.bag-redesign),
  .modal:has(.gen3-tutorial) {
    width: calc(100vw - .8rem);
    max-width: none;
  }
  .modal .actions { justify-content: stretch; }
  .modal .actions .btn { flex: 1 1 9rem; }
  .pkmn-detail-columns { grid-template-columns: 1fr; }
  .modal:has(.team-manager-modal) .tm-pool-redesign,
  .modal:has(.arena-team-picker) .arena-team-picker-grid,
  .modal:has(.shopx) .shopx-grid { max-height: 48dvh; }
  .modal:has(.team-manager-modal) .tm-pokemon-card { min-height: 166px; }
  .modal:has(.shopx) .shopx-card { min-height: 126px; }
}

@media (max-width: 430px) {
  .modal {
    --modal-pad: .75rem;
    width: calc(100vw - .5rem);
    max-height: calc(100dvh - .5rem);
    border-radius: 16px;
  }
  .modal h3 { font-size: 1.25rem; }
  .modal .actions .btn { flex-basis: 100%; }
}

/* Pokébag — painel amplo, informação sem cortes e sem Nº da Pokédex nos
   cards de inventário. O número continua disponível apenas nas telas que
   são realmente uma Pokédex/consulta técnica. */
.modal:has(.bag-redesign) {
  width: min(1280px, calc(100vw - 1.2rem));
  max-width: 1280px;
  max-height: 94vh;
  padding: 1.25rem;
  overflow: hidden;
}
.modal:has(.bag-redesign) > .bag-redesign {
  max-height: calc(94vh - 2.5rem);
  padding-right: .35rem;
  scrollbar-width: thin;
}
.bag-redesign { gap: 1.05rem; }
.bag-redesign .bag-pokemon-card .bag-pokemon-level { order: 4; }
.bag-redesign .bag-pokemon-held { white-space: normal; overflow-wrap: anywhere; }
.tc-bag .bag-pokemon-level { color: rgba(233,243,255,.74); font-size: .58rem; line-height: 1.1; }
.bag-redesign-hero { padding: .1rem .1rem .35rem; }
.bag-redesign-title h3 { font-size: clamp(1.55rem, 3vw, 2.25rem); }
.bag-redesign-title p { max-width: 68ch; font-size: .92rem; }
.bag-redesign-panel { padding: 1rem; border-radius: 20px; }
.bag-redesign-section-head { margin-bottom: .9rem; }
.bag-redesign-section-head h4 { font-size: 1.1rem; }
.bag-redesign-section-head p { max-width: 64ch; }
.bag-redesign-team-grid { gap: .7rem; }
.bag-redesign-team-grid .bag-pokemon-card,
.bag-redesign-team-grid .bag-team-slot {
  min-height: 218px;
}
.bag-redesign-team-grid .bag-pokemon-card {
  padding: .7rem .55rem .65rem;
  gap: .28rem;
  border-radius: 17px;
  background: linear-gradient(155deg, rgba(38, 58, 96, .94), rgba(18, 31, 58, .95));
}
.bag-redesign-team-grid .bag-pokemon-card:hover,
.bag-redesign-team-grid .bag-pokemon-card:focus-visible,
.bag-redesign-team-grid .bag-pokemon-card.active {
  border-color: var(--accent);
  box-shadow: 0 0 0 2px rgba(255, 203, 5, .18), 0 10px 20px rgba(3, 7, 18, .22);
}
.bag-redesign-team-grid .bag-pokemon-name {
  display: -webkit-box;
  min-height: 2.35em;
  color: var(--text);
  font-family: var(--font-display);
  font-size: .95rem;
  line-height: 1.15;
  white-space: normal;
  overflow-wrap: anywhere;
  text-overflow: clip;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
}
.bag-redesign-team-grid .bag-pokemon-sprite {
  width: 104px;
  height: 104px;
  flex: 0 0 104px;
}
.bag-pokemon-level {
  color: var(--community-soft, #c9d7ee);
  font-size: .72rem;
  font-weight: 800;
  line-height: 1.15;
}
.bag-redesign-team-grid .bag-pokemon-xp { width: calc(100% - .6rem); height: 7px; margin-top: .15rem; }
.bag-redesign-team-grid .bag-pokemon-xp-label { font-size: .58rem; }
.bag-redesign-team-grid .bag-pokemon-held {
  max-width: 100%;
  color: var(--accent);
  font-size: .62rem;
  line-height: 1.2;
  white-space: normal;
  overflow-wrap: anywhere;
}
.bag-redesign-team-grid .bag-team-slot { gap: .35rem; }
.bag-redesign-team-grid .bag-team-slot-plus { width: 2.65rem; height: 2.65rem; }
.bag-redesign-team-grid .bag-team-slot strong { font-size: .76rem; }
.bag-redesign-team-grid .bag-team-slot small { font-size: .64rem; }
.bag-redesign-collection-grid { max-height: 360px; gap: .65rem; }
.bag-redesign-collection-grid .bag-pokemon-card {
  min-height: 188px;
  padding: .6rem .45rem;
  gap: .24rem;
}
.bag-redesign-collection-grid .bag-pokemon-name {
  display: -webkit-box;
  min-height: 2.2em;
  white-space: normal;
  text-overflow: clip;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
}
.bag-redesign-collection-grid .bag-pokemon-sprite { width: 88px; height: 88px; }
.bag-redesign-collection-grid .bag-pokemon-held { white-space: normal; overflow-wrap: anywhere; }

@media (max-width: 860px) {
  .modal:has(.bag-redesign) { width: min(1000px, calc(100vw - 1rem)); }
  .bag-redesign-team-grid .bag-pokemon-card,
  .bag-redesign-team-grid .bag-team-slot { min-height: 190px; }
  .bag-redesign-team-grid .bag-pokemon-sprite { width: 82px; height: 82px; flex-basis: 82px; }
}
@media (max-width: 620px) {
  .modal:has(.bag-redesign) {
    width: calc(100vw - .55rem);
    max-height: 96vh;
    padding: .75rem;
  }
  .modal:has(.bag-redesign) > .bag-redesign { max-height: calc(96vh - 1.5rem); }
  .bag-redesign { gap: .75rem; }
  .bag-redesign-panel { padding: .75rem; border-radius: 17px; }
  .bag-redesign-team-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .45rem; }
  .bag-redesign-team-grid .bag-pokemon-card,
  .bag-redesign-team-grid .bag-team-slot { min-height: 184px; }
  .bag-redesign-team-grid .bag-pokemon-name { font-size: .78rem; }
  .bag-redesign-team-grid .bag-pokemon-sprite { width: 72px; height: 72px; flex-basis: 72px; }
  .bag-redesign-team-grid .bag-pokemon-xp-label { font-size: .5rem; }
  .bag-redesign-collection-grid { max-height: 330px; grid-template-columns: repeat(2, minmax(0, 1fr)); padding-inline: .6rem; }
  .bag-redesign-collection-grid .bag-pokemon-card { min-height: 166px; }
  .bag-redesign-collection-grid .bag-pokemon-sprite { width: 68px; height: 68px; }
  .bag-pokemon-level { font-size: .64rem; }
}

/* Campos e placar do Campeonato Red. */
.arena-head-actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: .45rem; }
.arena-form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .7rem; }
.arena-check-row { display: flex; align-items: flex-start; gap: .55rem; margin: .75rem 0; padding: .7rem .8rem; border: 1px solid color-mix(in srgb, var(--accent) 30%, var(--border)); border-radius: 12px; color: var(--text); background: color-mix(in srgb, var(--accent) 7%, var(--panel)); font-size: .78rem; line-height: 1.35; }
.arena-check-row input { accent-color: var(--accent); margin-top: .13rem; }
.arena-next-match { display: grid; grid-template-columns: auto minmax(0,1fr) auto; align-items: center; gap: .7rem; margin: .8rem 0 1rem; padding: .75rem .85rem; border: 1px solid color-mix(in srgb, var(--accent) 34%, var(--border)); border-radius: 15px; background: linear-gradient(110deg, color-mix(in srgb, var(--accent) 12%, var(--panel)), var(--panel)); box-shadow: 0 8px 20px rgba(0,0,0,.12); }
.arena-next-match-kicker { color: var(--accent); font-size: .62rem; font-weight: 900; letter-spacing: .08em; white-space: nowrap; }
.arena-next-match-main { min-width: 0; }
.arena-next-match-main strong, .arena-next-match-main span { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.arena-next-match-state { padding: .35rem .5rem; border: 1px solid var(--border); border-radius: 999px; color: var(--muted); background: color-mix(in srgb, var(--panel-2) 80%, transparent); font-size: .64rem; font-weight: 800; white-space: nowrap; }
.arena-next-match-state.live { border-color: rgba(255,82,82,.5); color: #ffb3b3; background: rgba(220,48,48,.15); }
.arena-event-panel, .arena-reward-panel { margin: .8rem 0; padding: .8rem .9rem; border: 1px solid var(--border); border-radius: 16px; background: linear-gradient(135deg, color-mix(in srgb, var(--panel-2) 84%, transparent), var(--panel)); }
.arena-event-panel-head { display: flex; align-items: center; justify-content: space-between; gap: .6rem; }
.arena-event-panel-head strong, .arena-event-panel-head span { display: block; }
.arena-event-live-tag { color: #83e0ac; font-size: .66rem; font-weight: 800; white-space: nowrap; }
.arena-event-stats { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: .45rem; margin-top: .7rem; }
.arena-event-stats > div { padding: .5rem .45rem; border-radius: 11px; background: color-mix(in srgb, var(--panel) 78%, transparent); text-align: center; }
.arena-event-stats strong, .arena-event-stats span { display: block; }
.arena-event-stats strong { color: var(--text); font-size: 1.05rem; }
.arena-event-stats span { margin-top: .12rem; color: var(--muted); font-size: .62rem; }
.arena-reward-panel { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: .75rem; border-color: color-mix(in srgb, var(--accent) 28%, var(--border)); background: linear-gradient(110deg, color-mix(in srgb, var(--accent) 8%, var(--panel)), var(--panel)); }
.arena-reward-art { display: grid; place-items: center; width: 52px; height: 52px; border-radius: 14px; background: rgba(255,203,5,.1); }
.arena-reward-sprite { width: 42px; height: 42px; object-fit: contain; image-rendering: pixelated; }
.arena-reward-copy { min-width: 0; }
.arena-reward-copy strong, .arena-reward-copy span { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.arena-reward-pills { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: .3rem; }
.arena-reward-pills span { padding: .32rem .45rem; border: 1px solid var(--border); border-radius: 999px; color: var(--text); background: color-mix(in srgb, var(--panel-2) 80%, transparent); font-size: .65rem; white-space: nowrap; }
.arena-online-dot { margin-right: .25rem; color: #7786a3; font-size: .58rem; }
.arena-online-dot.is-online { color: #46dc85; text-shadow: 0 0 8px rgba(70,220,133,.5); }
.arena-part-online { margin-left: .2rem; color: #68df9a; font-size: .62rem; }
.bm-live-state { width: 100%; padding: .32rem .45rem; border: 1px solid rgba(255,92,92,.38); border-radius: 8px; color: #ffb5b5; background: rgba(220,48,48,.12); font-size: .64rem; font-weight: 800; text-align: center; }
.bm-score { display: inline-flex; justify-content: center; padding: .23rem .45rem; border: 1px solid rgba(255,203,5,.32); border-radius: 999px; color: #ffdc70; background: rgba(255,203,5,.08); font-size: .67rem; font-weight: 800; }
.bm-games { max-width: 100%; overflow: hidden; color: #acc0e5; font-size: .65rem; text-overflow: ellipsis; white-space: nowrap; }
.arena-start-match { width: 100%; }
@media (max-width: 620px) { .arena-head-actions { width: 100%; justify-content: stretch; } .arena-head-actions .btn { flex: 1; } .arena-form-grid { grid-template-columns: 1fr; } .arena-next-match { grid-template-columns: 1fr; gap: .35rem; } .arena-next-match-state { justify-self: start; } .arena-event-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); } .arena-reward-panel { grid-template-columns: auto minmax(0, 1fr); } .arena-reward-pills { grid-column: 1 / -1; justify-content: flex-start; } }

/* Campeonato Red — palco público da batalha em andamento. */
.arena-live-overlay {
  position: fixed; z-index: 1200; right: clamp(.65rem, 2vw, 1.5rem); bottom: clamp(.65rem, 2vw, 1.5rem);
  width: min(620px, calc(100vw - 1.3rem)); color: #f7fbff; overflow: hidden;
  border: 1px solid rgba(255,255,255,.18); border-radius: 20px;
  background: linear-gradient(145deg, rgba(18,35,70,.98), rgba(8,15,34,.98));
  box-shadow: 0 22px 70px rgba(0,0,0,.48), 0 0 0 1px rgba(255,203,5,.12) inset;
  backdrop-filter: blur(18px); animation: arena-live-in .28s ease-out;
}
.arena-live-overlay.is-finished { border-color: rgba(255,203,5,.62); }
.arena-live-head { display: flex; align-items: flex-start; justify-content: space-between; gap: .8rem; padding: .85rem 1rem .65rem; background: linear-gradient(90deg, rgba(227,53,13,.26), rgba(255,203,5,.08), transparent); }
.arena-live-title { display: block; font-size: .95rem; letter-spacing: .02em; }
.arena-live-sub { display: block; margin-top: .18rem; color: #b7c8e9; font-size: .72rem; }
.arena-live-tools { display: flex; gap: .3rem; }
.arena-live-tools button { width: 28px; height: 28px; padding: 0; border: 1px solid rgba(255,255,255,.18); border-radius: 8px; color: #fff; background: rgba(255,255,255,.08); cursor: pointer; }
.arena-live-tools button:hover { background: rgba(255,255,255,.18); }
.arena-live-status { display: block; padding: .25rem 1rem .5rem; color: #ffdb62; font-size: .75rem; font-weight: 800; text-transform: uppercase; letter-spacing: .06em; }
.arena-live-score { margin: 0 1rem .45rem; color: #dbe7ff; font-size: .72rem; font-weight: 800; text-align: center; letter-spacing: .04em; }
.arena-live-stage { display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: .65rem; padding: .25rem 1rem .75rem; }
.arena-live-side { min-width: 0; padding: .65rem; border: 1px solid rgba(255,255,255,.13); border-radius: 14px; background: rgba(255,255,255,.055); text-align: center; }
.arena-live-trainer { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: .8rem; }
.arena-live-mon { display: grid; place-items: center; min-height: 108px; }
.arena-live-sprite { width: 105px; height: 105px; object-fit: contain; image-rendering: pixelated; filter: drop-shadow(0 9px 8px rgba(0,0,0,.35)); }
.arena-live-empty { color: #8fa4c6; font-size: .7rem; }
.arena-live-hp { height: 7px; margin-top: .1rem; overflow: hidden; border-radius: 999px; background: rgba(0,0,0,.38); }
.arena-live-hp-fill { display: block; width: 100%; height: 100%; border-radius: inherit; background: linear-gradient(90deg, #42d77d, #b5ec55); transition: width .35s ease, background .35s ease; }
.arena-live-mon-meta { display: block; min-height: 1.1em; margin-top: .35rem; overflow: hidden; color: #b8c9e5; font-size: .68rem; text-overflow: ellipsis; white-space: nowrap; }
.arena-live-vs { display: grid; place-items: center; width: 38px; height: 38px; border: 1px solid rgba(255,203,5,.48); border-radius: 50%; color: #ffdb62; background: rgba(255,203,5,.1); font-size: .7rem; font-weight: 900; }
.arena-live-log { margin: 0 1rem .9rem; padding: .62rem .75rem; overflow: hidden; border: 1px solid rgba(255,255,255,.11); border-radius: 10px; color: #f1f5ff; background: rgba(0,0,0,.24); font-size: .78rem; text-overflow: ellipsis; white-space: nowrap; }
.arena-live-overlay.is-collapsed .arena-live-status, .arena-live-overlay.is-collapsed .arena-live-score, .arena-live-overlay.is-collapsed .arena-live-stage, .arena-live-overlay.is-collapsed .arena-live-log { display: none; }
.arena-live-overlay.is-collapsed { width: min(320px, calc(100vw - 1.3rem)); }
@keyframes arena-live-in { from { opacity: 0; transform: translateY(14px) scale(.98); } to { opacity: 1; transform: none; } }
@media (max-width: 540px) {
  .arena-live-overlay { right: .55rem; bottom: .55rem; border-radius: 16px; }
  .arena-live-head { padding: .72rem .78rem .5rem; }
  .arena-live-stage { gap: .35rem; padding-inline: .55rem; }
  .arena-live-side { padding: .45rem .35rem; }
  .arena-live-mon { min-height: 82px; }
  .arena-live-sprite { width: 78px; height: 78px; }
  .arena-live-log { margin-inline: .55rem; }
}

/* Várias transmissões simultâneas: um dock único evita que os cards se
   sobreponham e permite fechar/recolher cada batalha separadamente. */
.arena-live-dock { position: fixed; z-index: 1200; right: clamp(.55rem, 1.6vw, 1.35rem); bottom: clamp(.55rem, 1.6vw, 1.35rem); display: grid; gap: .45rem; width: min(1000px, calc(100vw - 1.1rem)); max-height: min(78vh, 760px); padding: .5rem; border: 1px solid rgba(255,255,255,.16); border-radius: 20px; background: rgba(5,12,29,.86); box-shadow: 0 24px 80px rgba(0,0,0,.45); backdrop-filter: blur(18px); pointer-events: none; }
.arena-live-dock-head { display: flex; align-items: center; justify-content: space-between; gap: .6rem; padding: .15rem .2rem .3rem; color: #f7fbff; pointer-events: auto; }
.arena-live-dock-head > div { display: grid; gap: .1rem; }
.arena-live-dock-head strong { font-size: .78rem; }
.arena-live-dock-head span { color: #a8bddf; font-size: .58rem; }
.arena-live-dock-close { padding: .3rem .45rem; border: 1px solid rgba(255,255,255,.16); border-radius: 8px; color: #d6e2f7; background: rgba(255,255,255,.07); cursor: pointer; font: 800 .58rem var(--font-mono); }
.arena-live-dock-close:hover { border-color: rgba(255,203,5,.6); color: #ffdf77; }
.arena-live-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .5rem; min-width: 0; max-height: min(70vh, 680px); overflow: auto; pointer-events: auto; scrollbar-color: #ffcb05 transparent; }
.arena-live-overlay.arena-live-card { position: relative; right: auto; bottom: auto; width: auto; max-width: none; min-width: 0; border-radius: 16px; box-shadow: 0 12px 30px rgba(0,0,0,.3); pointer-events: auto; }
.arena-live-card .arena-live-head { padding: .62rem .7rem .48rem; }
.arena-live-card .arena-live-title { font-size: .76rem; }
.arena-live-card .arena-live-sub { font-size: .6rem; }
.arena-live-card .arena-live-status { padding: .2rem .7rem .35rem; font-size: .62rem; }
.arena-live-card .arena-live-score { margin-inline: .7rem; font-size: .6rem; }
.arena-live-card .arena-live-stage { gap: .35rem; padding: .2rem .7rem .55rem; }
.arena-live-card .arena-live-side { padding: .4rem; border-radius: 11px; }
.arena-live-card .arena-live-mon { min-height: 78px; }
.arena-live-card .arena-live-sprite { width: 76px; height: 76px; }
.arena-live-card .arena-live-trainer { font-size: .68rem; }
.arena-live-card .arena-live-mon-meta { font-size: .58rem; }
.arena-live-card .arena-live-vs { width: 30px; height: 30px; font-size: .58rem; }
.arena-live-card .arena-live-log { margin: 0 .7rem .65rem; padding: .45rem .55rem; font-size: .62rem; }
.arena-live-card.is-collapsed { width: auto; }
.arena-live-card.is-collapsed .arena-live-status, .arena-live-card.is-collapsed .arena-live-score, .arena-live-card.is-collapsed .arena-live-stage, .arena-live-card.is-collapsed .arena-live-log { display: none; }
@media (max-width: 720px) {
  .arena-live-grid { grid-template-columns: 1fr; }
  .arena-live-dock { max-height: 82vh; }
}
@media (max-width: 540px) {
  .arena-live-dock { right: .35rem; bottom: .35rem; width: calc(100vw - .7rem); padding: .38rem; border-radius: 16px; }
  .arena-live-grid { max-height: 72vh; }
}

/* Resultado público da Arena: efeito curto, sem áudio em loop e com uma única
   instância por eventId recebido do servidor. O card fica legível no mobile e
   o fundo deixa a batalha/portal ainda visível atrás da celebração. */
.arena-result-overlay { position: fixed; z-index: 1300; inset: 0; display: grid; place-items: center; padding: max(1rem, env(safe-area-inset-top)) max(1rem, env(safe-area-inset-right)) max(1rem, env(safe-area-inset-bottom)) max(1rem, env(safe-area-inset-left)); overflow: hidden; pointer-events: none; isolation: isolate; background: radial-gradient(circle at 50% 44%, rgba(12,25,56,.78), rgba(4,8,22,.54) 46%, rgba(4,8,22,.18) 75%, transparent); animation: arena-result-in .34s ease-out both; }
.arena-result-overlay.is-leaving { animation: arena-result-out .42s ease-in both; }
.arena-result-overlay.game-loss, .arena-result-overlay.series-loss, .arena-result-overlay.champion-loss { background: radial-gradient(circle at 50% 44%, rgba(96,29,47,.75), rgba(20,9,26,.59) 46%, rgba(4,8,22,.15) 76%, transparent); }
.arena-result-overlay.game-win, .arena-result-overlay.series-win, .arena-result-overlay.champion-win { background: radial-gradient(circle at 50% 44%, rgba(17,73,78,.74), rgba(4,22,39,.55) 46%, rgba(4,8,22,.12) 76%, transparent); }
.arena-result-overlay.champion-win { background: radial-gradient(circle at 50% 43%, rgba(104,75,10,.76), rgba(29,30,45,.59) 43%, rgba(4,8,22,.12) 78%, transparent); }
.arena-result-glow { position: absolute; z-index: -1; width: min(70vw, 720px); aspect-ratio: 1; border-radius: 50%; background: radial-gradient(circle, rgba(255,216,88,.22), transparent 66%); filter: blur(10px); animation: arena-result-pulse 2.2s ease-in-out infinite; }
.arena-result-overlay.game-loss .arena-result-glow, .arena-result-overlay.series-loss .arena-result-glow, .arena-result-overlay.champion-loss .arena-result-glow { background: radial-gradient(circle, rgba(242,75,111,.22), transparent 67%); }
.arena-result-card { position: relative; display: flex; flex-direction: column; align-items: center; width: min(100%, 600px); min-height: 250px; padding: 5.25rem clamp(1.1rem, 5vw, 2.7rem) 1.55rem; border: 1px solid rgba(255,255,255,.27); border-radius: 30px; background: linear-gradient(145deg, rgba(18,37,72,.94), rgba(10,17,38,.92)); box-shadow: 0 28px 90px rgba(0,0,0,.5), inset 0 1px 0 rgba(255,255,255,.16); text-align: center; transform: translateY(.65rem) scale(.94); animation: arena-result-card-in .72s cubic-bezier(.2,1.22,.38,1) .04s both; }
.arena-result-overlay.game-win .arena-result-card, .arena-result-overlay.series-win .arena-result-card, .arena-result-overlay.champion-win .arena-result-card { border-color: rgba(255,224,105,.46); }
.arena-result-overlay.game-loss .arena-result-card, .arena-result-overlay.series-loss .arena-result-card, .arena-result-overlay.champion-loss .arena-result-card { border-color: rgba(247,105,128,.42); }
.arena-result-seal { position: absolute; top: -2.8rem; left: 50%; display: grid; width: 6.2rem; height: 6.2rem; place-items: center; transform: translateX(-50%); filter: drop-shadow(0 14px 22px rgba(0,0,0,.46)); animation: arena-result-bounce .8s cubic-bezier(.2,1.5,.45,1) .1s both; }
.arena-result-seal-ring { position: absolute; inset: 0; border: 2px solid rgba(255,224,105,.82); border-radius: 50%; background: radial-gradient(circle at 35% 25%, rgba(255,255,255,.24), rgba(255,213,73,.17) 42%, rgba(37,31,24,.9) 100%); box-shadow: 0 0 0 8px rgba(255,214,77,.09), 0 0 34px rgba(255,213,65,.43); }
.arena-result-overlay.game-loss .arena-result-seal-ring, .arena-result-overlay.series-loss .arena-result-seal-ring, .arena-result-overlay.champion-loss .arena-result-seal-ring { border-color: rgba(255,125,150,.75); background: radial-gradient(circle at 35% 25%, rgba(255,255,255,.2), rgba(221,65,99,.16) 42%, rgba(38,19,31,.92) 100%); box-shadow: 0 0 0 8px rgba(233,74,112,.09), 0 0 34px rgba(231,70,110,.33); }
.arena-result-seal-icon { position: relative; z-index: 1; font-size: clamp(2.8rem, 9vw, 4.3rem); line-height: 1; }
.arena-result-audience { margin-bottom: .55rem; color: #a9c9ec; font-size: .64rem; font-weight: 800; letter-spacing: .16em; text-transform: uppercase; }
.arena-result-kicker { color: #ffdb64; font-size: clamp(.68rem, 2vw, .86rem); font-weight: 900; letter-spacing: .2em; text-transform: uppercase; }
.arena-result-title { max-width: 100%; margin-top: .45rem; color: #fff; font-size: clamp(1.25rem, 4vw, 2.25rem); line-height: 1.12; text-shadow: 0 4px 20px rgba(0,0,0,.55); }
.arena-result-winner { display: flex; flex-wrap: wrap; justify-content: center; gap: .35rem .6rem; margin-top: 1.1rem; padding: .45rem .9rem; border: 1px solid rgba(255,255,255,.14); border-radius: 999px; background: rgba(255,255,255,.07); color: #bcd3f3; font-size: .7rem; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; }
.arena-result-winner strong { color: #fff3ae; font-size: .8rem; }
.arena-result-score { max-width: 100%; margin-top: 1rem; color: #d3e0ff; font-size: clamp(.68rem, 1.8vw, .84rem); line-height: 1.35; }
.arena-result-particles { position: absolute; inset: 0; z-index: 1; pointer-events: none; }
.arena-result-particles i { position: absolute; left: 50%; top: 50%; width: calc(7px * var(--size)); height: calc(18px * var(--size)); border-radius: 3px; background: hsl(var(--h), 90%, 66%); box-shadow: 0 0 9px hsl(var(--h), 90%, 66%); transform: rotate(var(--r)) translateY(-2rem); animation: arena-particle 2.05s cubic-bezier(.15,.75,.35,1) var(--delay) both; }
.arena-result-overlay.champion-win .arena-result-particles i, .arena-result-overlay.champion-view .arena-result-particles i { animation-duration: 3.3s; }
@keyframes arena-result-in { from { opacity: 0; } to { opacity: 1; } }
@keyframes arena-result-out { from { opacity: 1; } to { opacity: 0; } }
@keyframes arena-result-card-in { 0% { opacity: 0; transform: translateY(1.1rem) scale(.82); } 70% { opacity: 1; transform: translateY(-.24rem) scale(1.015); } 100% { transform: translateY(0) scale(1); } }
@keyframes arena-result-bounce { 0% { opacity: 0; transform: translateX(-50%) translateY(1rem) scale(.45) rotate(-14deg); } 65% { opacity: 1; transform: translateX(-50%) translateY(-.25rem) scale(1.12) rotate(4deg); } 100% { transform: translateX(-50%) translateY(0) scale(1) rotate(0); } }
@keyframes arena-result-pulse { 0%, 100% { opacity: .58; transform: scale(.86); } 50% { opacity: .95; transform: scale(1.08); } }
@keyframes arena-particle { 0% { opacity: 0; transform: rotate(var(--r)) translateY(-1rem) scale(.4); } 18% { opacity: 1; } 100% { opacity: 0; transform: rotate(var(--r)) translateY(-19rem) translateX(var(--x)) rotate(390deg); } }
@media (prefers-reduced-motion: reduce) { .arena-result-overlay, .arena-result-card, .arena-result-seal, .arena-result-glow, .arena-result-particles i { animation-duration: .01ms !important; animation-iteration-count: 1 !important; } }
@media (max-width: 560px) { .arena-result-card { min-height: 220px; padding-top: 4.8rem; border-radius: 23px; } .arena-result-seal { top: -2.45rem; width: 5.4rem; height: 5.4rem; } .arena-result-winner { border-radius: 16px; } .arena-result-title { max-width: 94vw; } .arena-result-score { max-width: 92vw; } }

/* ═══════════════════════════════════════════════════════════════
   POLIMENTO GLOBAL · navegação, modais e acessibilidade
   ═══════════════════════════════════════════════════════════════ */
html, body { max-width: 100%; overflow-x: hidden; }
img, svg, video, canvas { max-width: 100%; }
.app-view, .layout, .tab-panel, .admin-content { min-width: 0; }
.tab-panel { width: 100%; }
.tab-panel.hidden { display: none !important; }
.nav-btn[aria-current="page"] { position: relative; }
.nav-btn[aria-current="page"]::after { position: absolute; right: 14%; bottom: 3px; left: 14%; height: 2px; border-radius: 999px; background: var(--accent); content: ''; opacity: .9; }
.nav-btn.active[aria-current="page"]::after { background: rgba(255,255,255,.85); }
.nav-btn:focus-visible, .nav-toggle:focus-visible, .music-btn:focus-visible { outline: 3px solid color-mix(in srgb, var(--accent) 72%, transparent); outline-offset: 2px; }

/* Todos os modais preservam a área de ações quando o conteúdo é comprido. */
.modal {
  display: flex; flex-direction: column; width: min(100%, 700px);
  max-height: min(88vh, 920px); padding: clamp(.85rem, 2vw, 1.5rem);
}
.modal > #modal-content { min-width: 0; width: 100%; }
.modal .actions {
  position: sticky; bottom: calc(-1 * clamp(.85rem, 2vw, 1.5rem)); z-index: 2;
  margin-inline: calc(-1 * clamp(.85rem, 2vw, 1.5rem)); margin-bottom: calc(-1 * clamp(.85rem, 2vw, 1.5rem));
  padding: .7rem clamp(.85rem, 2vw, 1.5rem) calc(.7rem + env(safe-area-inset-bottom, 0px));
  border-top: 1px solid var(--border); background: color-mix(in srgb, var(--panel) 94%, transparent);
}
.modal-backdrop { padding: max(.6rem, env(safe-area-inset-top, 0px)) max(.6rem, env(safe-area-inset-right, 0px)) max(.6rem, env(safe-area-inset-bottom, 0px)) max(.6rem, env(safe-area-inset-left, 0px)); }
.modal :is(input, textarea, select, button) { max-width: 100%; }
.modal textarea { min-height: 92px; resize: vertical; }
.scroll-top-btn {
  position: fixed; right: max(1rem, env(safe-area-inset-right, 0px)); bottom: max(1rem, env(safe-area-inset-bottom, 0px)); z-index: 35;
  display: grid; place-items: center; width: 42px; height: 42px; border: 1px solid color-mix(in srgb, var(--accent) 55%, var(--border)); border-radius: 50%;
  color: #3a2600; background: linear-gradient(180deg, var(--accent-2), var(--accent)); box-shadow: 0 8px 18px rgba(3,7,18,.28); cursor: pointer; font: 900 1.2rem var(--font-display);
  transition: transform .16s ease, filter .16s ease;
}
.scroll-top-btn:hover { transform: translateY(-2px); filter: brightness(1.06); }
.scroll-top-btn:focus-visible { outline: 3px solid color-mix(in srgb, var(--accent) 70%, transparent); outline-offset: 2px; }
body.modal-open .scroll-top-btn { display: none !important; }
@media (max-width: 520px) { .scroll-top-btn { right: .65rem; bottom: max(.65rem, env(safe-area-inset-bottom, 0px)); width: 38px; height: 38px; } }

/* Menu do topo: nenhum nome ou badge é esmagado quando o usuário aumenta a fonte. */
.topbar-title { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.topbar-right { min-width: 0; }
.user-chip { max-width: min(27vw, 230px); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
@media (max-width: 760px) {
  .layout { padding: 1rem .78rem calc(3.5rem + env(safe-area-inset-bottom, 0px)); }
  .topbar { padding: .55rem .72rem; }
  .topbar-title { font-size: .88rem; }
  .topbar-right { min-width: 0; }
  .user-chip { max-width: 42vw; font-size: .72rem; padding: .32rem .5rem; }
  .topbar-right #logout-btn { padding: .38rem .65rem; font-size: .7rem; }
  .topbar-nav { max-height: min(70vh, 520px); overflow-y: auto; overscroll-behavior: contain; }
  .topbar-nav .nav-btn { min-height: 42px; }
}
@media (max-width: 390px) {
  .topbar-right { justify-content: space-between; }
  .user-chip { max-width: 35vw; }
  .topbar-right #logout-btn { padding-inline: .52rem; }
}

@media (max-width: 760px) {
  .topbar-action-btn { width: 38px; height: 38px; padding: .35rem; }
}

/* Toque e teclado recebem o mesmo feedback, sem aumentar o tamanho dos botões. */
button, [role="button"], summary { -webkit-tap-highlight-color: transparent; }
button:focus-visible, [role="button"]:focus-visible, summary:focus-visible { outline: 3px solid color-mix(in srgb, var(--accent) 65%, transparent); outline-offset: 2px; }
.card, .activity-card, .ann-card, .cal-day, .admin-panel-card, .admin-tool-card { min-width: 0; }

@media (max-height: 700px) and (min-width: 601px) {
  .modal-backdrop { align-items: start; }
  .modal { margin-block: .5rem; max-height: calc(100vh - 1rem); }
}
@media (prefers-reduced-motion: reduce) {
  .act-hero .ah-eevee, .treinos-hero-sprite, .nav-dot, .ann-urgent { animation: none !important; }
  .tab-panel { animation: none !important; }
}

/* ═══════════════════════════════════════════════════════════════
   HUBS RESTANTES · redesign integrado das abas
   Cabeçalhos, filtros e cards usam a mesma linguagem visual sem
   depender de texto escuro sobre fundos claros.
   ═══════════════════════════════════════════════════════════════ */
#tab-atividades, #tab-treinos, #tab-comunidade, #tab-avisos, #tab-calendario, #tab-admin {
  gap: clamp(.75rem, 1.5vw, 1.15rem);
  min-width: 0;
}

/* Atividades — Central de missões */
#tab-atividades { max-width: 1180px; margin-inline: auto; }
.act-hero {
  grid-template-columns: auto minmax(0, 1fr) auto auto;
  gap: .9rem;
  margin-top: 0;
  padding: clamp(1rem, 2.2vw, 1.45rem);
  border: 1px solid color-mix(in srgb, var(--brand-2) 55%, var(--border));
  background:
    radial-gradient(330px 180px at 0% 0%, color-mix(in srgb, var(--brand-2) 35%, transparent), transparent 72%),
    radial-gradient(260px 180px at 100% 100%, color-mix(in srgb, var(--accent) 22%, transparent), transparent 75%),
    linear-gradient(135deg, color-mix(in srgb, var(--brand) 94%, #0c1837), #182f5e 60%, #173d62);
  box-shadow: 0 18px 38px rgba(3,7,18,.25), inset 0 1px 0 rgba(255,255,255,.2);
}
.act-hero .ah-mascot { width: 106px; height: 106px; }
.act-hero .ah-eevee { width: 100px; height: 100px; }
.ah-companions { position: relative; z-index: 1; display: flex; align-items: end; align-self: end; min-width: 104px; height: 72px; margin-left: -.7rem; }
.ah-companion { width: 54px; height: 54px; object-fit: contain; image-rendering: pixelated; filter: drop-shadow(0 4px 4px rgba(0,0,0,.35)); }
.ah-companion + .ah-companion { margin-left: -18px; }
.ah-companion:nth-child(2) { width: 62px; height: 62px; transform: translateY(-5px); }
.ah-companion:nth-child(3) { width: 48px; height: 48px; transform: translateY(3px); }
.activities-toolbar {
  display: grid; gap: .7rem; padding: .85rem 1rem;
  border: 1px solid var(--border); border-radius: 18px;
  background: linear-gradient(145deg, color-mix(in srgb, var(--panel) 96%, #09162d), var(--panel-2));
  box-shadow: 0 10px 24px rgba(3,7,18,.12);
}
.activities-toolbar-heading, .activities-toolbar-controls { display: flex; align-items: center; justify-content: space-between; gap: .7rem; flex-wrap: wrap; }
.activities-toolbar-heading strong { display: block; margin-top: .12rem; color: var(--text); font-size: .9rem; }
.activities-toolbar-hint { color: var(--muted); font-size: .66rem; }
.activities-toolbar-controls { justify-content: flex-start; }
.activities-search-input, .activities-week-filter {
  min-height: 38px; color: var(--text); background: var(--bg); border: 1px solid var(--border); border-radius: 11px; font: inherit; font-size: .76rem;
}
.activities-search-input { width: min(300px, 100%); padding: .45rem .7rem; }
.activities-week-filter { padding: .45rem .65rem; }
.activities-status-filters { display: flex; flex-wrap: wrap; gap: .3rem; }
.act-filter {
  display: inline-flex; align-items: center; gap: .35rem; min-height: 32px; padding: .28rem .5rem;
  border: 1px solid var(--border); border-radius: 999px; color: var(--muted); background: var(--panel); cursor: pointer; font: 800 .64rem var(--font);
}
.act-filter:hover, .act-filter.is-active { color: var(--text); border-color: var(--brand-2); background: color-mix(in srgb, var(--brand-2) 14%, var(--panel)); }
.act-filter.is-active { box-shadow: 0 0 0 2px color-mix(in srgb, var(--brand-2) 16%, transparent); }
.act-filter-count { min-width: 1.25rem; padding: .08rem .24rem; border-radius: 999px; color: var(--text); background: color-mix(in srgb, var(--border) 75%, transparent); font: 800 .57rem var(--font-mono); text-align: center; }
.activity-card {
  padding: 0; border-radius: 18px; background: linear-gradient(145deg, var(--panel), color-mix(in srgb, var(--panel-2) 88%, transparent));
  box-shadow: 0 8px 20px rgba(3,7,18,.11); overflow: hidden;
}
.activity-card::before { width: 5px; opacity: 1; }
.activity-card .ac-head { min-height: 84px; padding: .8rem 1rem .8rem 1.1rem; }
.activity-card .ac-mon { width: 66px; height: 66px; border-radius: 16px; background: radial-gradient(circle at 50% 30%, color-mix(in srgb, var(--brand-2) 20%, var(--panel-2)), var(--panel)); }
.activity-card .ac-mon-sprite { width: 60px; height: 60px; }
.activity-card .ac-head-txt h3 { color: var(--text); font-size: clamp(.92rem, 2vw, 1.15rem); }
.activity-card .ac-body { margin: 0; padding: .9rem 1.1rem 1.1rem 1.1rem; border-top: 1px solid var(--border); background: color-mix(in srgb, var(--bg) 30%, transparent); }
.activity-card.collapsed .ac-body { display: none; }
.activities-no-results { display: grid; justify-items: center; gap: .28rem; padding: 2.4rem 1rem; border: 1px dashed var(--border); border-radius: 18px; text-align: center; background: var(--panel); }
.activities-empty-sprite { width: 82px; height: 82px; object-fit: contain; image-rendering: pixelated; opacity: .9; filter: drop-shadow(0 5px 5px rgba(0,0,0,.25)); }

/* Modal grande da entrega, sem perder o modo foco no celular. */
.af-shell { width: min(1040px, calc(100vw - 2rem)); height: min(92vh, 900px); border-radius: 24px; background: linear-gradient(145deg, var(--panel), var(--bg)); border-color: color-mix(in srgb, var(--brand-2) 42%, var(--border)); }
.af-head { padding: 1.15rem 1.35rem .85rem; background: linear-gradient(90deg, color-mix(in srgb, var(--brand-2) 12%, transparent), transparent); }
.af-body { padding: 1.25rem 1.35rem calc(1.7rem + env(safe-area-inset-bottom, 0px)); }
.af-brief, .submission-area { max-width: 880px; margin-inline: auto; }
.af-brief .md-content { font-size: .98rem; line-height: 1.65; }

/* Treinos — painel de progresso mais claro e catálogo com sprite. */
#tab-treinos { max-width: 1220px; margin-inline: auto; }
.treinos-hero {
  position: relative; isolation: isolate; display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: .95rem; overflow: hidden;
  padding: 1rem 1.15rem; border: 1px solid color-mix(in srgb, var(--t-electric) 55%, var(--border)); border-radius: 22px;
  background: radial-gradient(360px 200px at 0% 0%, color-mix(in srgb, var(--t-electric) 20%, transparent), transparent 70%), linear-gradient(135deg, var(--panel), color-mix(in srgb, var(--brand-2) 17%, var(--panel-2)));
  box-shadow: 0 14px 30px rgba(3,7,18,.16);
}
.treinos-hero::after { content: '⚡'; position: absolute; z-index: -1; right: 8%; top: -20px; color: color-mix(in srgb, var(--accent) 25%, transparent); font-size: 8rem; transform: rotate(12deg); }
.treinos-hero-art { position: relative; display: grid; place-items: center; width: 112px; height: 96px; }
.treinos-hero-sprite { width: 88px; height: 88px; object-fit: contain; image-rendering: pixelated; filter: drop-shadow(0 7px 6px rgba(0,0,0,.28)); }
.treinos-hero-sprite.mini { position: absolute; right: 0; bottom: -3px; width: 50px; height: 50px; }
.treinos-hero-copy h1 { margin: .1rem 0 .25rem; font-size: clamp(1.35rem, 3vw, 1.9rem); }
.treinos-hero-lead { max-width: 58ch; margin: 0; color: var(--muted); line-height: 1.4; }
.treinos-hero-chips { display: flex; flex-wrap: wrap; gap: .32rem; margin-top: .65rem; }
.treinos-hero-chips span, .community-hero-chips span, .avisos-hero-chips span { padding: .25rem .48rem; border: 1px solid var(--border); border-radius: 999px; color: var(--muted); background: color-mix(in srgb, var(--panel-2) 75%, transparent); font: 800 .62rem var(--font); }
.treinos-hero-count, .community-hero-badge, .avisos-hero-badge { display: grid; justify-items: center; gap: .14rem; min-width: 90px; padding: .65rem .55rem; border: 1px solid color-mix(in srgb, var(--accent) 42%, var(--border)); border-radius: 15px; background: color-mix(in srgb, var(--accent) 8%, var(--panel)); text-align: center; }
.treinos-hero-count strong, .community-hero-badge strong, .avisos-hero-badge strong { color: var(--accent); font: 900 1.55rem var(--font-display); }
.treinos-hero-count span, .community-hero-badge span, .avisos-hero-badge span { color: var(--muted); font-size: .57rem; font-weight: 800; text-transform: uppercase; }
.gcard-ico { display: grid; place-items: center; }
.gcard-sprite { width: 56px; height: 56px; object-fit: contain; image-rendering: pixelated; filter: drop-shadow(0 3px 3px rgba(0,0,0,.3)); }

/* Comunidade — cabeçalho social + Pokédex existente. */
#tab-comunidade, #tab-avisos { max-width: 1180px; margin-inline: auto; }
.community-hero, .avisos-hero {
  display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: .95rem; overflow: hidden; position: relative; isolation: isolate;
  padding: 1rem 1.15rem; border: 1px solid color-mix(in srgb, var(--brand-2) 44%, var(--border)); border-radius: 22px;
  background: radial-gradient(360px 190px at 0% 0%, color-mix(in srgb, var(--brand-2) 22%, transparent), transparent 70%), linear-gradient(135deg, var(--panel), var(--panel-2)); box-shadow: 0 14px 30px rgba(3,7,18,.14);
}
.avisos-hero { border-color: color-mix(in srgb, var(--t-psychic) 45%, var(--border)); background: radial-gradient(360px 190px at 0% 0%, color-mix(in srgb, var(--t-psychic) 19%, transparent), transparent 70%), linear-gradient(135deg, var(--panel), var(--panel-2)); }
.community-hero-art, .avisos-hero-art { position: relative; display: grid; place-items: center; width: 105px; height: 92px; }
.community-hero-sprite, .avisos-hero-sprite { width: 84px; height: 84px; object-fit: contain; image-rendering: pixelated; filter: drop-shadow(0 7px 6px rgba(0,0,0,.28)); }
.community-hero-sprite.mini, .avisos-hero-sprite.mini { position: absolute; right: -2px; bottom: -2px; width: 48px; height: 48px; }
.community-hero-copy h1, .avisos-hero-copy h1 { margin: .1rem 0 .25rem; font-size: clamp(1.35rem, 3vw, 1.9rem); }
.community-hero-lead, .avisos-hero-lead { margin: 0; color: var(--muted); line-height: 1.4; }
.community-hero-chips, .avisos-hero-chips { display: flex; flex-wrap: wrap; gap: .32rem; margin-top: .65rem; }
.community-hero-badge, .avisos-hero-badge { min-width: 95px; }
.avisos-hero-badge strong { color: var(--t-psychic); }
.community-hero + .community-list, .avisos-hero + .section-head { margin-top: .1rem; }
.avisos-context-head { display: flex; align-items: center; justify-content: space-between; gap: .8rem; flex-wrap: wrap; padding: .1rem .1rem 0; }
.avisos-context-copy { display: grid; gap: .15rem; min-width: 0; }
.avisos-context-copy .small { line-height: 1.35; }
.dex-device { box-shadow: 0 18px 38px rgba(3,7,18,.2), inset 0 2px 0 rgba(255,255,255,.28), inset 0 -6px 14px rgba(0,0,0,.25); }
.avisos-toolbar { padding: .7rem; border: 1px solid var(--border); border-radius: 15px; background: color-mix(in srgb, var(--panel) 90%, transparent); }
.announcements-list { display: grid; gap: .2rem; }

/* Calendário — resumo visual sem tirar espaço da grade. */
.calendar-summary {
  display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: .7rem;
  margin: -.35rem 0 .85rem; padding: .65rem .8rem; border: 1px solid var(--border); border-radius: 15px;
  background: linear-gradient(145deg, color-mix(in srgb, var(--panel) 92%, transparent), var(--panel-2));
}
.calendar-summary-art { position: relative; display: grid; place-items: center; width: 62px; height: 50px; }
.calendar-summary-sprite { width: 52px; height: 52px; object-fit: contain; image-rendering: pixelated; filter: drop-shadow(0 3px 3px rgba(0,0,0,.28)); }
.calendar-summary-sprite.mini { position: absolute; right: -2px; bottom: -5px; width: 29px; height: 29px; }
.calendar-summary-copy { display: grid; gap: .12rem; min-width: 0; }
.calendar-summary-copy strong { overflow: hidden; color: var(--text); font-size: .83rem; text-overflow: ellipsis; white-space: nowrap; }
.calendar-summary-copy .small { line-height: 1.3; }
.calendar-summary-metrics { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: .28rem; }
.calendar-summary-metrics span { padding: .22rem .4rem; border: 1px solid var(--border); border-radius: 999px; color: var(--muted); font: 800 .59rem var(--font); white-space: nowrap; }

/* Admin — entrada visual comum às outras centrais. */
.admin-hero {
  display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: center; gap: .85rem; margin-bottom: .85rem; padding: .82rem .95rem;
  border: 1px solid color-mix(in srgb, var(--t-psychic) 35%, var(--border)); border-radius: 18px;
  background: radial-gradient(280px 150px at 0% 0%, color-mix(in srgb, var(--t-psychic) 16%, transparent), transparent 70%), linear-gradient(145deg, var(--panel), var(--panel-2));
}
.admin-hero-art { position: relative; display: grid; place-items: center; width: 78px; height: 67px; }
.admin-hero-sprite { width: 64px; height: 64px; object-fit: contain; image-rendering: pixelated; filter: drop-shadow(0 5px 4px rgba(0,0,0,.3)); }
.admin-hero-sprite.mini { position: absolute; right: -3px; bottom: -2px; width: 32px; height: 32px; }
.admin-hero-copy h1 { margin: .1rem 0 .2rem; color: var(--text); font-size: clamp(1.1rem, 2.3vw, 1.55rem); }
.admin-hero-lead { margin: 0; color: var(--muted); font-size: .73rem; line-height: 1.35; }
.admin-hero-chips { display: flex; flex-wrap: wrap; gap: .28rem; margin-top: .5rem; }
.admin-hero-chips span { padding: .2rem .4rem; border: 1px solid var(--border); border-radius: 999px; color: var(--muted); background: color-mix(in srgb, var(--panel-2) 76%, transparent); font: 800 .57rem var(--font); }

@media (max-width: 620px) {
  .calendar-summary { grid-template-columns: auto minmax(0, 1fr); }
  .calendar-summary-metrics { grid-column: 1 / -1; justify-content: flex-start; }
  .admin-hero { padding: .7rem; }
  .admin-hero-art { width: 62px; height: 58px; }
  .admin-hero-sprite { width: 55px; height: 55px; }
}

@media (max-width: 760px) {
  .act-hero, .treinos-hero, .community-hero, .avisos-hero { grid-template-columns: auto minmax(0, 1fr); }
  .ah-companions { display: none; }
  .act-hero .ah-stats, .treinos-hero-count, .community-hero-badge, .avisos-hero-badge { grid-column: 1 / -1; justify-self: start; }
  .activities-toolbar-controls { align-items: stretch; flex-direction: column; }
  .activities-search-input, .activities-week-filter { width: 100%; }
  .activities-status-filters { overflow-x: auto; flex-wrap: nowrap; padding-bottom: .15rem; }
}
@media (max-width: 520px) {
  .act-hero, .treinos-hero, .community-hero, .avisos-hero { padding: .8rem; border-radius: 17px; }
  .act-hero .ah-mascot, .community-hero-art, .avisos-hero-art { width: 76px; height: 72px; }
  .act-hero .ah-eevee, .community-hero-sprite, .avisos-hero-sprite { width: 68px; height: 68px; }
  .activity-card .ac-head { align-items: flex-start; padding: .7rem .72rem .7rem .85rem; }
  .activity-card .ac-mon { width: 54px; height: 54px; }
  .activity-card .ac-mon-sprite { width: 50px; height: 50px; }
  .activity-card .ac-head-right { align-items: flex-end; flex-direction: column; gap: .25rem; }
  .activity-card .sub-status { font-size: .56rem; padding: .18rem .35rem; white-space: normal; text-align: right; }
  .activity-card .ac-body { padding: .78rem .82rem .9rem; }
  .af-shell { width: 100%; height: 100%; border-radius: 0; }
  .af-head { padding-inline: .85rem; }
  .af-body { padding-inline: .85rem; }
  .treinos-hero-art { width: 78px; height: 72px; }
  .treinos-hero-sprite { width: 66px; height: 66px; }
  .treinos-hero-sprite.mini { width: 38px; height: 38px; }
  .treinos-hero-copy h1, .community-hero-copy h1, .avisos-hero-copy h1 { font-size: 1.25rem; }
  .treinos-hero-lead, .community-hero-lead, .avisos-hero-lead { font-size: .76rem; }
}

/* Atividades — cabeçalho compacto e legível. O foco fica nas entregas, não
   em uma área decorativa ocupando metade do painel. */
.act-hero {
  grid-template-columns: 104px minmax(0, 1fr) auto;
  align-items: center;
  gap: clamp(.85rem, 2vw, 1.25rem);
  min-height: 174px;
  padding: clamp(1rem, 2.5vw, 1.4rem);
  color: var(--text);
  border: 1px solid color-mix(in srgb, var(--brand-2) 48%, var(--border));
  border-radius: 24px;
  background:
    radial-gradient(260px 170px at 0% 0%, color-mix(in srgb, var(--brand-2) 22%, transparent), transparent 72%),
    radial-gradient(250px 170px at 100% 100%, color-mix(in srgb, var(--accent) 12%, transparent), transparent 76%),
    linear-gradient(135deg, color-mix(in srgb, var(--panel) 96%, #0b1831), var(--panel-2));
  box-shadow: 0 16px 34px rgba(3, 7, 18, .2), inset 0 1px 0 rgba(255,255,255,.12);
}
.act-hero .ah-glow {
  right: -66px;
  top: -78px;
  width: 190px;
  height: 190px;
  border-width: 10px;
  opacity: .23;
}
.act-hero .ah-mascot {
  width: 104px;
  height: 124px;
  border: 1px solid color-mix(in srgb, var(--brand-2) 35%, var(--border));
  border-radius: 20px;
  background: linear-gradient(160deg, color-mix(in srgb, var(--brand-2) 15%, var(--panel-2)), var(--panel));
  box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 8px 18px rgba(3,7,18,.16);
}
.act-hero .ah-eevee { width: 96px; height: 96px; filter: drop-shadow(0 6px 5px rgba(0,0,0,.35)); }
.act-hero .ah-mascot-shadow { bottom: 12px; width: 58px; background: rgba(0,0,0,.34); }
.act-hero .ah-main { min-width: 0; }
.act-hero .eyebrow { color: var(--brand-2); font-size: .68rem; }
.act-hero .ah-title { margin: .2rem 0 .3rem; color: var(--text); font-size: clamp(1.25rem, 2.8vw, 1.7rem); text-shadow: none; }
.act-hero .ah-sub { max-width: 56ch; margin: 0 0 .8rem; color: var(--muted); opacity: 1; }
.act-hero .ah-prog-top { margin-bottom: .36rem; }
.act-hero .ah-prog-lbl { color: var(--muted); font-size: .66rem; }
.act-hero .ah-prog-pct { color: var(--text); font-size: .95rem; }
.act-hero .ah-bar { height: 9px; background: color-mix(in srgb, var(--bg) 82%, #000); border: 1px solid var(--border); box-shadow: inset 0 1px 3px rgba(0,0,0,.3); }
.act-hero .ah-fill { background: linear-gradient(90deg, var(--brand-2), var(--accent)); box-shadow: 0 0 12px color-mix(in srgb, var(--brand-2) 42%, transparent); }
.act-hero .ah-badges { margin-top: .7rem; }
.act-hero .ah-badge { width: 23px; height: 23px; color: var(--muted); background: var(--panel-2); border-color: var(--border); box-shadow: none; }
.act-hero .ah-badge.won { color: #4d3500; background: linear-gradient(#ffe99a, #f2b92f); border-color: #ffe99a; box-shadow: 0 2px 7px rgba(0,0,0,.2); }
.act-hero .ah-badge.sent { color: var(--brand-2); background: color-mix(in srgb, var(--brand-2) 15%, var(--panel-2)); border-color: color-mix(in srgb, var(--brand-2) 38%, var(--border)); }
.act-hero .ah-badge.redo { color: var(--deadline); background: color-mix(in srgb, var(--deadline) 13%, var(--panel-2)); border-color: color-mix(in srgb, var(--deadline) 42%, var(--border)); }
.act-hero .ah-stats { display: grid; grid-template-columns: repeat(3, minmax(68px, 1fr)); gap: .45rem; }
.act-hero .ah-stat { min-width: 74px; padding: .62rem .48rem; border: 1px solid var(--border); border-radius: 14px; background: color-mix(in srgb, var(--panel-2) 88%, transparent); box-shadow: inset 0 1px 0 rgba(255,255,255,.06); }
.act-hero .ah-stat b { color: var(--text); font-size: 1.35rem; }
.act-hero .ah-stat span { color: var(--muted); font-size: .58rem; }
.act-hero .ah-stat.todo b { color: var(--accent); }
.act-hero .ah-stat.sent b { color: var(--brand-2); }
.act-hero .ah-stat.won b { color: var(--t-grass, #57c973); }
.activities-toolbar { margin-top: .9rem; }

@media (max-width: 760px) {
  .act-hero { grid-template-columns: 82px minmax(0, 1fr); min-height: 0; }
  .act-hero .ah-mascot { width: 82px; height: 96px; }
  .act-hero .ah-eevee { width: 76px; height: 76px; }
  .act-hero .ah-stats { grid-column: 1 / -1; width: 100%; }
}
@media (max-width: 460px) {
  .act-hero { gap: .7rem; padding: .85rem; border-radius: 19px; }
  .act-hero .ah-mascot { width: 70px; height: 82px; border-radius: 15px; }
  .act-hero .ah-eevee { width: 64px; height: 64px; }
  .act-hero .ah-mascot-shadow { bottom: 8px; width: 42px; }
  .act-hero .ah-title { font-size: 1.15rem; }
  .act-hero .ah-sub { font-size: .74rem; }
  .act-hero .ah-stat { min-width: 0; padding-inline: .3rem; }
}

/* ══ 💱 Trocas · redesign completo ═══════════════════════════════════════ */
.modal:has(.trade-modal-v2) {
  width: min(1180px, calc(100vw - 1.4rem));
  max-width: none;
  max-height: calc(100dvh - 1.4rem);
  padding: 0;
  overflow: hidden;
  border: 1px solid color-mix(in srgb, var(--brand-2) 45%, var(--border));
  background: transparent;
}
.trade-modal-v2 {
  box-sizing: border-box;
  display: grid;
  gap: 1rem;
  max-height: calc(100dvh - 1.4rem);
  overflow-y: auto;
  padding: clamp(.85rem, 2.3vw, 1.45rem);
  color: var(--text);
  background:
    radial-gradient(700px 360px at 0% 0%, color-mix(in srgb, var(--brand-2) 18%, transparent), transparent 68%),
    radial-gradient(700px 420px at 100% 100%, color-mix(in srgb, var(--royal) 15%, transparent), transparent 70%),
    linear-gradient(145deg, color-mix(in srgb, var(--panel) 98%, transparent), var(--bg-2));
  scrollbar-gutter: stable;
}
.trade-v2-hero {
  display: grid;
  grid-template-columns: 74px minmax(0, 1fr) auto;
  align-items: center;
  gap: 1rem;
  min-width: 0;
  padding: clamp(1rem, 2.2vw, 1.35rem);
  border: 1px solid color-mix(in srgb, var(--brand-2) 46%, var(--border));
  border-radius: 22px;
  background: linear-gradient(135deg, color-mix(in srgb, var(--brand-2) 21%, var(--panel)), color-mix(in srgb, var(--royal) 14%, var(--panel)));
  box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 14px 35px rgba(2,6,23,.16);
}
.trade-v2-hero-icon {
  display: grid;
  place-items: center;
  width: 74px;
  height: 74px;
  border: 1px solid color-mix(in srgb, var(--accent) 50%, var(--border));
  border-radius: 20px;
  background: color-mix(in srgb, var(--accent) 14%, var(--panel));
  font-size: 2.5rem;
  box-shadow: 0 12px 26px rgba(0,0,0,.18);
}
.trade-v2-hero-sprite { width: 58px; height: 58px; object-fit: contain; image-rendering: pixelated; filter: drop-shadow(0 5px 5px rgba(0,0,0,.22)); }
.trade-v2-hero-copy { min-width: 0; }
.trade-v2-kicker {
  display: block;
  color: var(--accent);
  font: 800 .62rem var(--font-mono);
  letter-spacing: .14em;
  text-transform: uppercase;
}
.trade-v2-hero h2, .trade-v2-section-head h3, .trade-v2-review-head h3 { margin: .22rem 0 0; color: var(--text); line-height: 1.08; }
.trade-v2-hero h2 { font-size: clamp(1.35rem, 3vw, 2rem); letter-spacing: -.035em; }
.trade-v2-hero p { margin: .45rem 0 0; color: var(--muted); font-size: .84rem; line-height: 1.45; }
.trade-v2-close {
  display: grid;
  place-items: center;
  width: 38px;
  height: 38px;
  border: 1px solid var(--border);
  border-radius: 12px;
  color: var(--text);
  background: color-mix(in srgb, var(--panel) 70%, transparent);
  cursor: pointer;
  font-size: 1.55rem;
  line-height: 1;
}
.trade-v2-close:hover { border-color: var(--accent); color: var(--accent); transform: translateY(-1px); }
.trade-v2-stats { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: .65rem; }
.trade-v2-stat {
  display: grid;
  gap: .2rem;
  min-width: 0;
  padding: .72rem .8rem;
  border: 1px solid var(--border);
  border-radius: 15px;
  background: color-mix(in srgb, var(--panel) 83%, transparent);
}
.trade-v2-stat strong { color: var(--text); font: 900 1.25rem var(--font-display); }
.trade-v2-stat span { color: var(--muted); font-size: .68rem; line-height: 1.25; }
.trade-v2-rules {
  display: flex;
  align-items: flex-start;
  gap: .65rem;
  padding: .72rem .85rem;
  border: 1px solid color-mix(in srgb, var(--accent) 42%, var(--border));
  border-radius: 14px;
  color: var(--muted);
  background: color-mix(in srgb, var(--accent) 8%, var(--panel));
}
.trade-v2-rules > span { flex: 0 0 auto; font-size: 1.15rem; }
.trade-v2-rules p { margin: 0; font-size: .76rem; line-height: 1.48; }
.trade-v2-card { min-width: 0; padding: clamp(.85rem, 2vw, 1.15rem); border: 1px solid var(--border); border-radius: 20px; background: color-mix(in srgb, var(--panel) 88%, transparent); box-shadow: 0 10px 25px rgba(2,6,23,.11); }
.trade-v2-section-head, .trade-v2-review-head { display: flex; align-items: flex-end; justify-content: space-between; gap: .8rem; min-width: 0; }
.trade-v2-section-head h3, .trade-v2-review-head h3 { font-size: clamp(1rem, 2vw, 1.22rem); }
.trade-v2-step { flex: 0 0 auto; color: var(--muted); font: 800 .68rem var(--font-mono); }
.trade-v2-partner-tools { display: flex; align-items: center; gap: .65rem; margin-top: .85rem; }
.trade-v2-search {
  box-sizing: border-box;
  width: 100%;
  min-width: 0;
  padding: .68rem .78rem;
  border: 1px solid var(--border);
  border-radius: 11px;
  color: var(--text);
  background: color-mix(in srgb, var(--bg-2) 82%, var(--panel));
  outline: none;
}
.trade-v2-search:focus { border-color: var(--brand-2); box-shadow: 0 0 0 3px color-mix(in srgb, var(--brand-2) 18%, transparent); }
.trade-v2-partner-tools > .trade-v2-search { max-width: 390px; }
.trade-v2-partners { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: .55rem; margin-top: .65rem; }
.trade-v2-partner {
  display: grid;
  grid-template-columns: 36px minmax(0, 1fr) auto;
  align-items: center;
  gap: .55rem;
  min-width: 0;
  padding: .62rem .68rem;
  border: 1px solid var(--border);
  border-radius: 13px;
  color: var(--text);
  text-align: left;
  background: color-mix(in srgb, var(--panel-2) 80%, transparent);
  cursor: pointer;
}
.trade-v2-partner:hover, .trade-v2-partner.is-selected { border-color: var(--brand-2); background: color-mix(in srgb, var(--brand-2) 14%, var(--panel)); }
.trade-v2-partner-avatar { display: grid; place-items: center; width: 36px; height: 36px; border-radius: 11px; background: color-mix(in srgb, var(--brand-2) 18%, transparent); font-size: 1.1rem; }
.trade-v2-partner-info { display: grid; min-width: 0; }
.trade-v2-partner-info strong, .trade-v2-partner-info small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.trade-v2-partner-info strong { font-size: .78rem; }
.trade-v2-partner-info small { margin-top: .16rem; color: var(--muted); font-size: .64rem; }
.trade-v2-partner-check { color: var(--accent); font-weight: 900; }
.trade-v2-exchange { display: grid; gap: .9rem; margin-top: 1.25rem; padding-top: 1.05rem; border-top: 1px solid color-mix(in srgb, var(--border) 75%, transparent); }
.trade-v2-pick-grid { display: grid; grid-template-columns: minmax(0, 1fr) 38px minmax(0, 1fr); align-items: stretch; gap: .6rem; }
.trade-v2-pick-panel { min-width: 0; padding: .75rem; border: 1px solid var(--border); border-radius: 16px; background: color-mix(in srgb, var(--bg-2) 48%, var(--panel)); }
.trade-v2-pick-head { display: flex; align-items: flex-end; justify-content: space-between; gap: .5rem; min-width: 0; margin-bottom: .65rem; }
.trade-v2-pick-head > div { display: grid; min-width: 0; }
.trade-v2-pick-head strong { overflow: hidden; color: var(--text); font-size: .82rem; text-overflow: ellipsis; white-space: nowrap; }
.trade-v2-side-label { display: block; color: var(--muted); font: 800 .62rem var(--font-mono); letter-spacing: .04em; text-transform: uppercase; }
.trade-v2-pick-count { flex: 0 0 auto; color: var(--muted); font-size: .64rem; }
.trade-v2-mon-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(135px, 1fr)); gap: .5rem; margin-top: .65rem; max-height: 310px; overflow-y: auto; padding: .12rem; scrollbar-gutter: stable; }
.trade-v2-mon {
  display: grid;
  grid-template-rows: auto 74px auto auto auto;
  align-content: start;
  gap: .2rem;
  min-width: 0;
  min-height: 167px;
  padding: .5rem;
  border: 1px solid var(--border);
  border-radius: 14px;
  color: var(--text);
  text-align: left;
  background: linear-gradient(150deg, color-mix(in srgb, var(--panel) 92%, transparent), color-mix(in srgb, var(--bg-2) 75%, transparent));
}
button.trade-v2-mon { width: 100%; cursor: pointer; font: inherit; }
.trade-v2-mon.is-pickable:hover, .trade-v2-mon.is-selected { border-color: var(--accent); background: color-mix(in srgb, var(--accent) 11%, var(--panel)); box-shadow: 0 0 0 2px color-mix(in srgb, var(--accent) 17%, transparent); }
.trade-v2-mon.is-compact { grid-template-rows: auto 62px auto auto auto; min-height: 142px; padding: .42rem; }
.trade-v2-mon-top { display: flex; align-items: center; justify-content: space-between; gap: .25rem; min-width: 0; }
.trade-v2-mon-kind { overflow: hidden; color: var(--muted); font-size: .55rem; text-overflow: ellipsis; white-space: nowrap; }
.trade-v2-shiny { flex: 0 0 auto; color: var(--accent); font: 900 .52rem var(--font-mono); }
.trade-v2-mon-art { display: grid; place-items: center; min-width: 0; }
.trade-v2-sprite { width: 74px; height: 74px; object-fit: contain; image-rendering: pixelated; filter: drop-shadow(0 5px 6px rgba(0,0,0,.18)); }
.trade-v2-mon.is-compact .trade-v2-sprite { width: 62px; height: 62px; }
.trade-v2-mon-name { overflow: hidden; color: var(--text); font-size: .76rem; text-overflow: ellipsis; white-space: nowrap; }
.trade-v2-mon-meta { display: flex; align-items: center; flex-wrap: wrap; gap: .25rem .42rem; min-width: 0; color: var(--muted); font-size: .61rem; }
.trade-v2-held { display: inline-flex; align-items: center; gap: .14rem; max-width: 100%; overflow: hidden; }
.trade-v2-held span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.trade-v2-held-img { width: 15px; height: 15px; object-fit: contain; image-rendering: pixelated; }
.trade-v2-evolution { overflow: hidden; color: var(--call); font-size: .6rem; font-weight: 800; text-overflow: ellipsis; white-space: nowrap; }
.trade-v2-between { display: grid; place-items: center; align-self: center; width: 38px; height: 38px; border: 1px solid color-mix(in srgb, var(--accent) 55%, var(--border)); border-radius: 50%; color: var(--accent); background: color-mix(in srgb, var(--accent) 11%, var(--panel)); font-size: 1.25rem; }
.trade-v2-review { display: grid; gap: .7rem; padding: .9rem; border: 1px solid color-mix(in srgb, var(--brand-2) 43%, var(--border)); border-radius: 17px; background: linear-gradient(135deg, color-mix(in srgb, var(--brand-2) 10%, var(--panel)), color-mix(in srgb, var(--royal) 8%, var(--panel))); }
.trade-v2-mode { flex: 0 0 auto; padding: .35rem .5rem; border: 1px solid var(--border); border-radius: 999px; color: var(--muted); font-size: .6rem; font-weight: 800; }
.trade-v2-mode.individual { color: var(--call); border-color: color-mix(in srgb, var(--call) 45%, var(--border)); }
.trade-v2-review-pair { display: grid; grid-template-columns: minmax(0, 1fr) 34px minmax(0, 1fr); align-items: center; gap: .55rem; }
.trade-v2-review-pair > .trade-v2-mon { min-width: 0; }
.trade-v2-review-arrow, .trade-v2-proposal-arrow { display: grid; place-items: center; color: var(--accent); font-size: 1.2rem; font-weight: 900; }
.trade-v2-review-placeholder { display: grid; place-items: center; min-height: 145px; padding: .7rem; border: 1px dashed var(--border); border-radius: 14px; color: var(--muted); font-size: .75rem; text-align: center; }
.trade-v2-review-note { margin: 0; color: var(--muted); font-size: .7rem; line-height: 1.4; }
.trade-v2-submit { width: 100%; min-height: 43px; }
.trade-v2-submit:disabled { cursor: not-allowed; opacity: .52; }
.trade-v2-filter-bar { display: flex; flex-wrap: wrap; gap: .4rem; margin: .8rem 0; }
.trade-v2-filter { padding: .48rem .68rem; border: 1px solid var(--border); border-radius: 999px; color: var(--muted); background: color-mix(in srgb, var(--panel-2) 78%, transparent); cursor: pointer; font-size: .68rem; font-weight: 800; }
.trade-v2-filter:hover, .trade-v2-filter.is-active { border-color: var(--brand-2); color: var(--text); background: color-mix(in srgb, var(--brand-2) 17%, var(--panel)); }
.trade-v2-proposal { display: grid; gap: .55rem; margin-top: .65rem; padding: .78rem; border: 1px solid var(--border); border-radius: 16px; background: color-mix(in srgb, var(--bg-2) 54%, var(--panel)); }
.trade-v2-proposal.is-resolved { opacity: .78; }
.trade-v2-proposal-head { display: flex; align-items: center; justify-content: space-between; gap: .6rem; }
.trade-v2-proposal-head > div { display: grid; min-width: 0; }
.trade-v2-proposal-head strong { overflow: hidden; color: var(--text); font-size: .85rem; text-overflow: ellipsis; white-space: nowrap; }
.trade-v2-status { flex: 0 0 auto; padding: .3rem .48rem; border: 1px solid var(--border); border-radius: 999px; color: var(--muted); font-size: .6rem; font-weight: 900; }
.trade-v2-status.pending { color: var(--accent); border-color: color-mix(in srgb, var(--accent) 48%, var(--border)); }
.trade-v2-status.accepted { color: var(--call); border-color: color-mix(in srgb, var(--call) 48%, var(--border)); }
.trade-v2-status.declined, .trade-v2-status.cancelled { color: var(--muted); }
.trade-v2-proposal-date { color: var(--muted); font-size: .62rem; }
.trade-v2-proposal-pair { display: grid; grid-template-columns: minmax(0, 1fr) 34px minmax(0, 1fr); align-items: center; gap: .55rem; }
.trade-v2-proposal-side { display: grid; gap: .3rem; min-width: 0; }
.trade-v2-proposal-side > .trade-v2-mon { width: 100%; box-sizing: border-box; }
.trade-v2-proposal-actions { justify-content: flex-end; }
.trade-v2-actions { display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; }
.trade-v2-footer { display: flex; align-items: center; justify-content: space-between; gap: .75rem; padding-top: .15rem; }
.trade-v2-empty, .trade-v2-error, .trade-v2-loading { display: grid; justify-items: center; gap: .45rem; padding: 2rem 1rem; text-align: center; }
.trade-v2-empty-small { padding: 1.5rem .8rem; }
.trade-v2-empty strong, .trade-v2-error h3 { color: var(--text); }
.trade-v2-empty p, .trade-v2-error p { max-width: 52ch; margin: 0; line-height: 1.5; }
.trade-v2-empty-icon { display: grid; place-items: center; width: 54px; height: 54px; border: 1px solid color-mix(in srgb, var(--brand-2) 40%, var(--border)); border-radius: 17px; background: color-mix(in srgb, var(--brand-2) 12%, transparent); font-size: 1.7rem; }
.trade-v2-inline-empty { grid-column: 1 / -1; padding: 1rem .5rem; color: var(--muted); font-size: .72rem; text-align: center; }
.trade-v2-loading-orb { display: grid; place-items: center; width: 64px; height: 64px; border: 1px solid color-mix(in srgb, var(--accent) 50%, var(--border)); border-radius: 20px; background: color-mix(in srgb, var(--accent) 12%, var(--panel)); font-size: 2rem; animation: tradeV2Pulse 1.4s ease-in-out infinite; }
@keyframes tradeV2Pulse { 50% { transform: translateY(-4px) scale(1.04); box-shadow: 0 12px 28px color-mix(in srgb, var(--accent) 22%, transparent); } }
@media (max-width: 760px) {
  .modal:has(.trade-modal-v2) { width: calc(100vw - .6rem); max-height: calc(100dvh - .6rem); }
  .trade-modal-v2 { max-height: calc(100dvh - .6rem); padding: .65rem; gap: .75rem; }
  .trade-v2-hero { grid-template-columns: 52px minmax(0, 1fr) 34px; gap: .65rem; border-radius: 17px; }
  .trade-v2-hero-icon { width: 52px; height: 52px; border-radius: 15px; font-size: 1.8rem; }
  .trade-v2-hero-sprite { width: 44px; height: 44px; }
  .trade-v2-hero p { font-size: .74rem; }
  .trade-v2-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .trade-v2-partner-tools { align-items: stretch; flex-direction: column; }
  .trade-v2-partner-tools > .trade-v2-search { max-width: none; }
  .trade-v2-pick-grid { grid-template-columns: 1fr; }
  .trade-v2-between { justify-self: center; transform: rotate(90deg); }
  .trade-v2-mon-grid { max-height: 245px; }
  .trade-v2-review-pair, .trade-v2-proposal-pair { grid-template-columns: minmax(0, 1fr); }
  .trade-v2-review-arrow, .trade-v2-proposal-arrow { transform: rotate(90deg); }
  .trade-v2-review-placeholder { min-height: 94px; }
  .trade-v2-footer { align-items: stretch; flex-direction: column; }
  .trade-v2-footer .btn { width: 100%; }
}
@media (max-width: 430px) {
  .trade-v2-hero { grid-template-columns: 44px minmax(0, 1fr) 32px; padding: .78rem; }
  .trade-v2-hero-icon { width: 44px; height: 44px; font-size: 1.45rem; }
  .trade-v2-hero-sprite { width: 37px; height: 37px; }
  .trade-v2-hero h2 { font-size: 1.2rem; }
  .trade-v2-hero p { display: none; }
  .trade-v2-stat { padding: .58rem; }
  .trade-v2-stat strong { font-size: 1.05rem; }
  .trade-v2-mon-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .trade-v2-proposal-actions .btn { flex: 1 1 100%; }
}

/* Rótulos de seção: sem o contorno/sombreamento escuro do tema pixel. */
.eyebrow,
#tab-mentoria .archive-heading .eyebrow,
#tab-mentoria .section-intro-row .eyebrow {
  text-shadow: none !important;
  -webkit-text-stroke: 0 !important;
  filter: none !important;
}

/* ═════════════════════════════════════════════════════════════
   CENTRO POKÉMON · modal completo
   ═════════════════════════════════════════════════════════════ */
.modal:has(.pokemon-center-modal) { width: min(960px, calc(100vw - 1rem)); max-width: 960px; padding: 0; overflow: hidden; }
.pokemon-center-modal { display: grid; gap: .85rem; max-height: 88vh; overflow-y: auto; padding: 1.05rem; color: var(--text); scrollbar-color: var(--accent) transparent; }
.pc-hero { display: grid; grid-template-columns: minmax(0, 1fr) minmax(210px, .52fr); align-items: center; gap: 1rem; min-height: 176px; padding: 1rem 1.05rem; overflow: hidden; border: 1px solid color-mix(in srgb, #ff5d8f 48%, var(--border)); border-radius: 22px; background: radial-gradient(380px 180px at 0% 0%, color-mix(in srgb, #ff5d8f 22%, transparent), transparent 72%), radial-gradient(260px 180px at 100% 100%, color-mix(in srgb, var(--lens) 15%, transparent), transparent 72%), linear-gradient(135deg, color-mix(in srgb, #ff5d8f 12%, var(--panel)), var(--panel-2)); }
.pc-hero-copy { min-width: 0; }
.pc-hero-copy h3 { margin: .22rem 0 .18rem; color: var(--text); font-size: clamp(1.35rem, 3vw, 2rem); line-height: 1.05; }
.pc-hero-copy p { max-width: 48ch; margin: 0; color: var(--muted); line-height: 1.45; }
.pc-status-badge { display: inline-flex; margin-top: .75rem; padding: .32rem .55rem; border: 1px solid var(--border); border-radius: 999px; font: 900 .55rem var(--font-mono); letter-spacing: .06em; }
.pc-status-badge.ready { border-color: color-mix(in srgb, var(--call) 55%, var(--border)); color: var(--call); background: color-mix(in srgb, var(--call) 10%, transparent); }
.pc-status-badge.needs-care { border-color: color-mix(in srgb, #ffb347 60%, var(--border)); color: #ffcf75; background: color-mix(in srgb, #ffb347 12%, transparent); }
.pc-hero-figure { display: grid; place-items: end center; min-width: 0; align-self: stretch; overflow: hidden; }
.pc-hero-figure .nurse-figure { min-height: 156px; transform: translateY(.35rem); }
.pc-hero-figure .nurse-joy { height: 142px; }
.pc-hero-figure .nurse-chansey { width: 96px; height: 96px; }
.pc-section-head { display: flex; align-items: end; justify-content: space-between; gap: .75rem; padding: .15rem .1rem 0; }
.pc-section-head h4 { margin: .18rem 0 0; color: var(--text); font-size: 1.05rem; }
.pc-section-head > .small { max-width: 34ch; text-align: right; }
.pc-summary-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: .5rem; }
.pc-summary-card { display: grid; grid-template-columns: 30px 1fr; grid-template-rows: auto auto; grid-template-areas: 'icon value' 'icon label'; align-items: center; min-width: 0; column-gap: .4rem; padding: .58rem .65rem; border: 1px solid var(--border); border-radius: 14px; background: color-mix(in srgb, var(--panel-2) 78%, transparent); }
.pc-summary-card > span { grid-area: icon; font-size: 1.25rem; }
.pc-summary-card strong { grid-area: value; color: var(--text); font-size: 1.08rem; line-height: 1; }
.pc-summary-card small { grid-area: label; overflow: hidden; color: var(--muted); font-size: .58rem; text-overflow: ellipsis; white-space: nowrap; }
.pc-summary-card.healthy { border-color: color-mix(in srgb, var(--call) 38%, var(--border)); }
.pc-summary-card.alert { border-color: color-mix(in srgb, #ffb347 52%, var(--border)); }
.pc-summary-card.danger { border-color: color-mix(in srgb, #ff6b6b 56%, var(--border)); }
.pc-team-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .55rem; }
.pc-mon-card { display: grid; grid-template-columns: 74px minmax(0, 1fr); grid-template-rows: auto auto auto 6px auto; grid-template-areas: 'top top' 'sprite name' 'sprite hp' 'sprite bar' 'sprite foot'; align-items: center; column-gap: .6rem; min-width: 0; min-height: 142px; padding: .62rem; border: 1px solid var(--border); border-radius: 16px; color: var(--text); background: linear-gradient(145deg, var(--panel), color-mix(in srgb, var(--panel-2) 80%, transparent)); cursor: pointer; font: inherit; text-align: left; transition: transform .15s ease, border-color .15s ease, background .15s ease, box-shadow .15s ease; }
.pc-mon-card:hover, .pc-mon-card:focus-visible { outline: none; border-color: var(--brand-2); background: linear-gradient(145deg, color-mix(in srgb, var(--brand-2) 10%, var(--panel)), var(--panel-2)); box-shadow: 0 8px 18px rgba(0,0,0,.18); transform: translateY(-1px); }
.pc-mon-card.healthy { border-color: color-mix(in srgb, var(--call) 36%, var(--border)); }
.pc-mon-card.hurt, .pc-mon-card.condition { border-color: color-mix(in srgb, #ffb347 52%, var(--border)); }
.pc-mon-card.fainted { border-color: color-mix(in srgb, #ff6b6b 52%, var(--border)); background: linear-gradient(145deg, color-mix(in srgb, #ff6b6b 8%, var(--panel)), var(--panel)); }
.pc-mon-card.shiny .pc-mon-name-line strong { color: #ffda58; }
.pc-mon-card-top { grid-area: top; display: flex; align-items: center; justify-content: space-between; gap: .4rem; min-width: 0; margin-bottom: .18rem; }
.pc-slot-number { color: var(--muted); font: 800 .58rem var(--font-mono); }
.pc-condition-pill { display: inline-flex; align-items: center; gap: .18rem; max-width: 100%; padding: .15rem .32rem; border: 1px solid var(--border); border-radius: 999px; color: var(--muted); font: 800 .5rem var(--font-mono); white-space: nowrap; }
.pc-mon-card.healthy .pc-condition-pill { color: var(--call); border-color: color-mix(in srgb, var(--call) 42%, var(--border)); }
.pc-mon-card.hurt .pc-condition-pill, .pc-mon-card.condition .pc-condition-pill { color: #ffcf75; border-color: color-mix(in srgb, #ffb347 48%, var(--border)); }
.pc-mon-card.fainted .pc-condition-pill { color: #ff8e8e; border-color: color-mix(in srgb, #ff6b6b 52%, var(--border)); }
.pc-mon-sprite { grid-area: sprite; display: grid; place-items: center; width: 74px; height: 74px; }
.pc-mon-img { width: 72px; height: 72px; object-fit: contain; image-rendering: pixelated; filter: drop-shadow(0 4px 4px rgba(0,0,0,.22)); }
.pc-mon-sprite.is-shiny .pc-mon-img { filter: drop-shadow(0 0 8px rgba(255,218,88,.45)) drop-shadow(0 4px 4px rgba(0,0,0,.22)); }
.pc-mon-name-line { grid-area: name; display: flex; align-items: baseline; justify-content: space-between; gap: .35rem; min-width: 0; }
.pc-mon-name-line strong { overflow: hidden; color: var(--text); font-size: .78rem; text-overflow: ellipsis; white-space: nowrap; }
.pc-mon-name-line .small { flex: 0 0 auto; font-size: .58rem; }
.pc-hp-line { grid-area: hp; display: flex; justify-content: space-between; gap: .4rem; margin-top: .28rem; }
.pc-hp-line .small:last-child { color: var(--text); font-variant-numeric: tabular-nums; }
.pc-hp-track { grid-area: bar; align-self: center; height: 6px; overflow: hidden; border: 1px solid var(--border); border-radius: 999px; background: var(--bg); }
.pc-hp-fill { display: block; height: 100%; border-radius: inherit; background: var(--call); transition: width .25s ease; }
.pc-hp-fill.hurt, .pc-hp-fill.condition { background: #ffb347; }
.pc-hp-fill.fainted { background: #ff6b6b; }
.pc-mon-footer { grid-area: foot; display: flex; align-items: center; justify-content: space-between; gap: .35rem; min-width: 0; margin-top: .28rem; }
.pc-mon-footer > .small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pc-held-mini { display: grid; place-items: center; flex: 0 0 auto; width: 22px; height: 22px; border: 1px solid var(--border); border-radius: 7px; background: var(--panel-2); }
.pc-held-mini-img { width: 18px; height: 18px; object-fit: contain; image-rendering: pixelated; }
.pc-empty-team { grid-column: 1 / -1; display: grid; justify-items: center; gap: .22rem; padding: 1.25rem; border: 1px dashed var(--border); border-radius: 15px; text-align: center; }
.pc-empty-team-icon { font-size: 1.8rem; }
.pc-empty-team strong { color: var(--text); }
.pc-empty-team p { margin: 0; }
.pc-note { display: flex; align-items: flex-start; gap: .45rem; padding: .62rem .7rem; border-left: 3px solid var(--lens); border-radius: 0 11px 11px 0; background: color-mix(in srgb, var(--lens) 7%, var(--panel)); }
.pc-note > span:first-child { flex: 0 0 auto; }
.pc-note .small { line-height: 1.4; }
.pc-actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: .45rem; padding-top: .1rem; }
.pc-actions .btn { min-width: 0; }

@media (max-width: 820px) {
  .pc-hero { grid-template-columns: minmax(0, 1fr) 180px; }
  .pc-team-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 560px) {
  .modal:has(.pokemon-center-modal) { width: calc(100vw - .65rem); }
  .pokemon-center-modal { max-height: 91vh; gap: .7rem; padding: .72rem; }
  .pc-hero { grid-template-columns: 1fr; min-height: 0; padding: .8rem; }
  .pc-hero-figure { min-height: 112px; }
  .pc-hero-figure .nurse-figure { min-height: 112px; transform: none; }
  .pc-hero-figure .nurse-joy { height: 108px; }
  .pc-hero-figure .nurse-chansey { width: 76px; height: 76px; }
  .pc-section-head { align-items: flex-start; flex-direction: column; gap: .3rem; }
  .pc-section-head > .small { max-width: none; text-align: left; }
  .pc-summary-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .pc-team-grid { grid-template-columns: 1fr; }
  .pc-mon-card { min-height: 132px; }
  .pc-actions { justify-content: stretch; }
  .pc-actions .btn { flex: 1 1 100%; }
}

/* Níveis do treinador: coluna vertical, com leitura clara e sem sobreposição. */
.tc-photo {
  display: flex !important;
  flex-direction: column !important;
  align-items: center !important;
  gap: .48rem !important;
  min-width: 116px !important;
  min-height: 0 !important;
}
.tc-level-stack {
  display: grid;
  justify-items: center;
  gap: .34rem;
  width: 100%;
}
.tc-mentorship-lvl,
.tc-lvl {
  position: static !important;
  inset: auto;
  transform: none;
  min-width: 84px !important;
  padding: .27rem .5rem .3rem !important;
  border-width: 1.5px;
  border-radius: 10px;
  line-height: 1;
  box-shadow: 0 3px 8px rgba(0,0,0,.24);
  text-align: center;
}
.tc-mentorship-lvl small,
.tc-lvl small { font-size: .45rem; letter-spacing: .08em; }
.tc-mentorship-lvl b,
.tc-lvl b { font-size: .72rem; }
.tc-mentorship-lvl { color: #062b3b; background: linear-gradient(135deg, #b4f5ff, #53c4e7); }
.tc-lvl { color: #4a2c00; background: linear-gradient(135deg, #ffe27a, #ffb020); }
@media (max-width: 620px) {
  .tc-photo { min-width: 91px !important; gap: .38rem !important; }
  .tc-level-stack { gap: .27rem; }
  .tc-mentorship-lvl,
  .tc-lvl { min-width: 76px !important; padding-inline: .34rem !important; }
}
@media (max-width: 380px) {
  .bt-enemy-mon { width: 88px; height: 88px; }
  .bt-player-mon { width: 108px; height: 108px; }
  .bt-hpbox { width: 132px; }
}

/* ══ Batalha: time de 6, status e mochila ══════════════════ */
.bt-side { display: flex; flex-direction: column; gap: .3rem; }
.bt-boxwrap { display: flex; }
.bt-enemy-row .bt-side { align-items: flex-start; }
.bt-player-row .bt-side { align-items: flex-end; }
.bt-team-dots { display: flex; gap: 4px; padding: 0 .2rem; }
.bt-dot {
  width: 11px; height: 11px; border-radius: 50%;
  background: radial-gradient(circle at 50% 40%, #fff 0 32%, #cfe3ff 33%, #3b6ea5 100%);
  border: 1.5px solid #12122a; box-shadow: 0 1px 2px rgba(0,0,0,.35);
}
.bt-dot.dead { background: #4a4a5a; opacity: .5; }
.bt-dot.active { box-shadow: 0 0 0 2px var(--accent); }
.bt-status { display: none; }
.bt-status.on {
  display: inline-block; font-size: .58rem; font-weight: 900; letter-spacing: .03em;
  color: #fff; padding: 1px 5px; border-radius: 4px; margin-left: .3rem; vertical-align: middle;
}
.bt-status.st-psn { background: #a040a0; } .bt-status.st-brn { background: #e3350d; }
.bt-status.st-par { background: #d4a017; } .bt-status.st-slp { background: #6a6a8a; }
.bt-status.st-frz { background: #4d90d5; }
.bt-menu.bt-team { grid-template-columns: repeat(2, 1fr); }
.bt-team-item {
  display: flex; align-items: center; gap: .5rem; text-align: left; cursor: pointer;
  border: 2px solid #12122a; background: var(--panel); color: var(--text);
  border-radius: 10px; padding: .4rem .55rem; transition: transform var(--dur-fast);
}
.bt-team-item:hover:not([disabled]) { transform: translateY(-1px); }
.bt-team-item[disabled] { opacity: .45; cursor: not-allowed; }
.bt-team-item.active { border-color: var(--accent); }
.bt-team-item.dead { filter: grayscale(1); }
.bt-team-mon { width: 40px; height: 40px; image-rendering: pixelated; flex: 0 0 auto; }
.bt-team-info { display: flex; flex-direction: column; min-width: 0; }
.bt-team-nm { font-family: var(--font-pixel); font-weight: 400; font-size: .58rem; letter-spacing: -.5px; }
.bt-team-hp { font-size: .72rem; color: var(--muted); }
.bt-menu.bt-bag { grid-template-columns: repeat(2, 1fr); }
.bt-item {
  display: flex; align-items: center; gap: .5rem; cursor: pointer;
  border: 2px solid #12122a; background: #f7f4e7; color: #2b2b2b;
  border-radius: 10px; padding: .55rem .7rem; font-family: var(--font-display); font-weight: 800; font-size: .9rem;
  box-shadow: 0 3px 0 rgba(0,0,0,.22);
}
.bt-item[disabled] { opacity: .45; cursor: not-allowed; }
.bt-item .bi-qty { margin-left: auto; font-size: .82rem; color: #6a5a2a; }
.bt-item .pokeball { width: 20px; height: 20px; }
@media (max-width: 560px) {
  .bt-team-nm { font-size: .78rem; }
}

/* Botão de música dentro da cena (mutar/ativar) */
.bt-music {
  position: absolute; top: .5rem; right: .5rem; z-index: 4;
  width: 34px; height: 34px; border-radius: 50%; cursor: pointer;
  border: 2px solid rgba(0,0,0,.45); background: rgba(255,255,255,.82); color: #222;
  font-size: 1rem; line-height: 1; display: grid; place-items: center;
  box-shadow: 0 2px 5px rgba(0,0,0,.3); transition: transform var(--dur-fast), background var(--dur);
}
.bt-music:hover { transform: scale(1.08); }
.bt-music.on { background: var(--accent); }

/* Tela de resultado (vitória / captura / derrota) */
.bt-result {
  display: flex; flex-direction: column; align-items: center; gap: .7rem; text-align: center;
  padding: 1.6rem 1.2rem; border-radius: var(--radius); margin-top: .4rem;
  animation: rise .4s ease both;
}
.bt-result.win { background: radial-gradient(120% 100% at 50% 0%, color-mix(in srgb, var(--accent) 22%, var(--panel)), var(--panel)); border: 2px solid var(--accent); }
.bt-result.lose { background: var(--panel); border: 2px solid var(--border); }
.btr-banner {
  font-family: var(--font-pixel); font-weight: 400; letter-spacing: 0;
  font-size: clamp(1.1rem, 4.5vw, 1.8rem);
}
.bt-result.win .btr-banner { color: var(--accent); text-shadow: 0 2px 0 rgba(0,0,0,.25); }
.bt-result.lose .btr-banner { color: var(--muted); }
.btr-ico { font-size: 3rem; }
.btr-mon { width: 132px; height: 132px; image-rendering: pixelated; animation: btPop .5s ease both; }
.btr-mon.shiny { filter: drop-shadow(0 0 10px var(--accent)); }
@keyframes btPop { from { transform: scale(.3); opacity: 0; } to { transform: scale(1); opacity: 1; } }
.btr-sub { color: var(--text); font-size: 1rem; }
.btr-rewards { display: flex; gap: .6rem; flex-wrap: wrap; justify-content: center; }
.btr-reward {
  font-family: var(--font-display); font-weight: 800; font-size: .95rem;
  padding: .35rem .8rem; border-radius: 999px; border: 1px solid var(--border); background: var(--bg);
}
.btr-reward.xp { color: var(--lens); }
.btr-reward.coin { color: var(--accent); }

/* ══ 🏥 Centro Pokémon / Enfermeira (pós-batalha) ═════════════ */
.nurse-card {
  display: flex; flex-direction: column; align-items: center; gap: .7rem; text-align: center;
  padding: 1.6rem 1.2rem; border-radius: var(--radius); margin-top: .4rem;
  background: radial-gradient(120% 100% at 50% 0%, color-mix(in srgb, #ff5d8f 20%, var(--panel)), var(--panel));
  border: 2px solid #ff5d8f; animation: rise .4s ease both;
}
.nurse-face { position: relative; width: 78px; height: 78px; display: grid; place-items: center; }
.nurse-emoji { font-size: 3.2rem; line-height: 1; animation: btPop .5s ease both; }
.nurse-heart { font-size: 1.3rem; animation: nursePulse 1.1s ease-in-out infinite; }
/* Figura: Nurse Joy + Chansey lado a lado */
.nurse-figure { position: relative; display: flex; align-items: flex-end; justify-content: center; gap: .6rem; min-height: 150px; }
.nurse-joy { height: 150px; image-rendering: pixelated; animation: btPop .5s ease both; }
.nurse-figure .nurse-emoji { font-size: 5rem; }
.nurse-chansey { width: 104px; height: 104px; image-rendering: pixelated; object-fit: contain; animation: nurseBob 1.4s ease-in-out infinite; }
.nurse-figure .nurse-heart { position: absolute; top: 0; left: 50%; transform: translateX(-50%); }
@keyframes nurseBob { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-5px); } }
@keyframes nursePulse { 0%,100% { transform: scale(1); } 50% { transform: scale(1.25); } }
.nurse-title { font-family: var(--font-pixel); font-weight: 400; font-size: clamp(1rem, 3.6vw, 1.35rem); color: #ff5d8f; }
.nurse-say { color: var(--text); font-size: 1rem; max-width: 34ch; }
.nurse-roster { display: flex; gap: .5rem; flex-wrap: wrap; justify-content: center; margin: .2rem 0 .4rem; }
.nurse-mon {
  position: relative; width: 56px; display: flex; flex-direction: column; align-items: center;
  padding: .25rem; border-radius: 10px; border: 1px solid var(--border); background: var(--bg);
}
.nurse-mon.hurt { border-color: #f0a020; }
.nurse-mon.fainted { border-color: var(--border); opacity: .55; filter: grayscale(.7); }
.nurse-mon-img { width: 40px; height: 40px; image-rendering: pixelated; object-fit: contain; }
.nurse-mon-hp { font-family: var(--font-display); font-weight: 800; font-size: .68rem; color: var(--muted); }
.nurse-gate .nurse-face { margin-bottom: .2rem; }

/* ══ Efeitos de batalha: impacto no sprite + mensagem flutuante ══ */
.bt-mon.bt-hit { animation: btHit .5s ease; }
@keyframes btHit {
  0% { transform: translateX(0); filter: none; }
  15% { transform: translateX(-7px); filter: brightness(2.4) sepia(1) hue-rotate(-40deg) saturate(4); }
  30% { transform: translateX(6px); filter: brightness(1.8) sepia(1) hue-rotate(-40deg) saturate(3); }
  45% { transform: translateX(-5px); filter: none; opacity: .4; }
  60% { opacity: 1; } 75% { transform: translateX(3px); } 100% { transform: translateX(0); }
}
.bt-fx-banner {
  position: absolute; left: 50%; top: 14%; transform: translateX(-50%);
  z-index: 6; max-width: 84%; text-align: center; pointer-events: none;
  padding: .35rem .8rem; border-radius: 999px;
  background: rgba(15,18,32,.86); color: #fff; border: 2px solid var(--accent);
  font-family: var(--font-display); font-weight: 800; font-size: .92rem;
  box-shadow: 0 6px 18px rgba(0,0,0,.35); animation: fxBanner 1.8s ease both;
}
@keyframes fxBanner {
  0% { opacity: 0; transform: translate(-50%, -10px) scale(.9); }
  12% { opacity: 1; transform: translate(-50%, 0) scale(1); }
  82% { opacity: 1; } 100% { opacity: 0; transform: translate(-50%, -6px); }
}

/* ══ 💬 Chat da batalha PvP — tudo DENTRO do jogo, estilo Fire Red ══ */
/* Linha de mensagem (1 linha, sempre a última) colada na caixa de HP. */
.bt-chatline {
  max-width: 240px; margin-top: .25rem; padding: .25rem .5rem;
  display: none; align-items: baseline; gap: .35rem;
  background: #f8f8f0; color: #202020; border: 2px solid #2038a0; border-radius: 8px;
  box-shadow: inset 0 0 0 2px #6890f0;
  font-family: var(--font-pixel); font-size: .62rem; line-height: 1.2;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.bt-chatline.show { display: flex; animation: chatPop .28s ease; }
@keyframes chatPop { from { opacity: 0; transform: translateY(-4px); } to { opacity: 1; transform: none; } }
.bt-chatline .btc-who { flex: 0 0 auto; color: #d03020; text-transform: uppercase; }
.bt-chatline.me .btc-who { color: #2038a0; }
.bt-chatline .btc-txt { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
/* Histórico do chat (embaixo, dentro do jogo) — até ~4 linhas, depois rola. */
.bt-chatlog {
  flex: 1 1 100%; margin-top: .3rem; font-family: var(--font-pixel); font-size: .62rem; line-height: 1.5;
  max-height: 6em; overflow-y: auto; padding: .35rem .5rem;
  background: #f8f8f0; color: #202020; border: 3px solid #2038a0; border-radius: 8px; box-shadow: inset 0 0 0 2px #6890f0;
}
.bt-chatlog:empty { display: none; }
.btcl-row { display: flex; gap: .35rem; }
.btcl-who { flex: 0 0 auto; color: #d03020; text-transform: uppercase; }
.btcl-row.me .btcl-who { color: #2038a0; }
.btcl-txt { word-break: break-word; }
/* Barra de digitar — logo abaixo das opções, dentro da caixa de diálogo. */
.bt-chat-row { flex: 1 1 100%; display: flex; gap: .4rem; margin-top: .2rem; }
.bt-chat-input {
  flex: 1 1 auto; min-width: 0; padding: .5rem .65rem; color: #202020;
  font-family: var(--font-pixel); font-size: .66rem;
  background: #f8f8f0; border: 3px solid #6890f0; border-radius: 8px;
}
.bt-chat-input::placeholder { color: #909090; }
.bt-chat-send {
  flex: 0 0 auto; width: 44px; cursor: pointer; color: #f8f8f0; font-size: 1rem; font-weight: 800;
  background: #2038a0; border: 3px solid #6890f0; border-radius: 8px;
}
.bt-chat-send:active { transform: translateY(1px); }

/* Centro Pokémon (modal aberto pelo cartão de treinador) */
.pkmn-center { display: flex; flex-direction: column; align-items: center; gap: .6rem; text-align: center; padding: .4rem .2rem; }
.pc-nurse { position: relative; width: 84px; height: 84px; display: grid; place-items: center; }
.pc-nurse-face { font-size: 3.4rem; line-height: 1; }
.pc-heart { position: absolute; top: 0; right: -2px; font-size: 1.4rem; animation: nursePulse 1.1s ease-in-out infinite; }
.pkmn-center h3 { margin: 0; color: #ff5d8f; }
.tc-action-btn.tca-center .tca-ico { filter: drop-shadow(0 0 4px rgba(255,93,143,.5)); }

/* ══ 🎒 Bag (mochila de itens) ═════════════════════════════ */
.bag-modal { max-height: 78vh; overflow-y: auto; padding-right: .2rem; }
.bag-modal .eyebrow { display: block; margin: .8rem 0 .3rem; }
.bag-grid { display: grid; gap: .45rem; }
.bag-item { display: flex; align-items: center; gap: .7rem; border: 1px solid var(--border); border-radius: 10px; padding: .5rem .7rem; background: var(--panel); }
.bag-ico { width: 36px; height: 36px; flex: 0 0 auto; object-fit: contain; image-rendering: pixelated; }
.bag-info { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; }
.bag-info strong { font-size: .92rem; }
.bag-qty { font-family: var(--font-display); font-weight: 800; color: var(--accent); }
.candy-opt { position: relative; }
.rc-lv { position: absolute; bottom: 2px; right: 4px; font-size: .62rem; font-weight: 800; color: var(--accent); background: rgba(0,0,0,.5); border-radius: 4px; padding: 0 3px; }
.contest-modal { display: flex; flex-direction: column; gap: .55rem; }
.contest-modal label { display: grid; gap: .25rem; }
.contest-result { display: grid; gap: .35rem; max-height: 220px; overflow: auto; }
.contest-result-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: .25rem .6rem; align-items: center; padding: .5rem .65rem; border: 1px solid var(--border); border-radius: 10px; background: var(--panel); color: var(--text); }
.contest-result-row.won { border-color: color-mix(in srgb, var(--t-grass) 60%, var(--border)); background: color-mix(in srgb, var(--t-grass) 9%, var(--panel)); }
.contest-result-row.lost { opacity: .82; }
.contest-result-row .small { grid-column: 1 / -1; color: var(--muted); }
.national-dex-modal { display: flex; flex-direction: column; gap: .55rem; }
.dex-filter { display: flex; align-items: center; gap: .4rem; color: var(--text); font-size: .82rem; }
.national-dex-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(116px, 1fr)); gap: .4rem; max-height: 56vh; overflow: auto; padding: .15rem; }
.dex-entry { display: flex; flex-direction: column; align-items: center; gap: .1rem; min-width: 0; border: 1px solid var(--border); border-radius: 11px; padding: .42rem .25rem; background: var(--panel); color: var(--text); cursor: pointer; }
.dex-entry:hover, .dex-entry:focus-visible { border-color: var(--brand-2); transform: translateY(-1px); outline: none; }
.dex-entry.unknown { opacity: .58; filter: grayscale(.8); }
.dex-entry.seen { border-color: color-mix(in srgb, var(--brand-2) 45%, var(--border)); }
.dex-entry.caught { border-color: color-mix(in srgb, var(--t-grass) 50%, var(--border)); }
.dex-entry-sprite { width: 54px; height: 54px; object-fit: contain; image-rendering: pixelated; }
.dex-entry-number { font-size: .68rem; color: var(--muted); }
.dex-entry strong { max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: .75rem; }
.dex-entry.collective { cursor: default; }
.dex-entry.collective:hover { transform: none; }
.dex-collective-shiny { color: var(--accent); font-size: .68rem; font-weight: 800; }

/* Janela pública de manutenção: legível em desktop e mobile, sem depender
   do tema carregado pelo usuário. */
.portal-maintenance { min-height: 100vh; display: grid; place-items: center; align-content: center; gap: .75rem; padding: 2rem 1.2rem; text-align: center; color: var(--text); background: radial-gradient(circle at 50% 0%, color-mix(in srgb, var(--brand-2) 22%, transparent), transparent 42%), var(--bg); }
.portal-maintenance > * { max-width: 680px; }
.maintenance-orb { width: 76px; height: 76px; display: grid; place-items: center; border-radius: 24px; font-size: 2.2rem; background: linear-gradient(145deg, var(--brand-2), var(--accent)); box-shadow: 0 18px 50px color-mix(in srgb, var(--brand-2) 28%, transparent); animation: maintenance-pulse 2.2s ease-in-out infinite; }
.portal-maintenance h1 { margin: 0; font-family: var(--font-display); font-size: clamp(1.35rem, 4vw, 2.25rem); }
.portal-maintenance p { margin: 0; font-size: 1rem; }
.maintenance-time { border: 1px solid var(--border); border-radius: 999px; padding: .55rem .9rem; color: var(--accent); background: color-mix(in srgb, var(--panel) 90%, transparent); font-weight: 800; }
@keyframes maintenance-pulse { 50% { transform: rotate(8deg) scale(1.05); } }

/* Tutorial da expansão Gen III — tela de boas-vindas, não um alerta apertado. */
.modal:has(.gen3-tutorial) {
  width: min(1120px, calc(100vw - 2rem));
  max-width: none;
  max-height: calc(100dvh - 2rem);
  padding: 0;
  overflow: visible;
  border: 0;
  background: transparent;
  box-shadow: none;
}
.gen3-tutorial {
  box-sizing: border-box;
  width: 100%;
  max-height: calc(100dvh - 2rem);
  overflow: auto;
  display: grid;
  gap: clamp(1rem, 2vw, 1.45rem);
  padding: clamp(1.15rem, 3vw, 2.3rem);
  border: 1px solid color-mix(in srgb, var(--brand-2) 48%, var(--border));
  border-radius: 28px;
  color: var(--text);
  background:
    radial-gradient(700px 320px at 9% 0%, color-mix(in srgb, var(--brand-2) 18%, transparent), transparent 66%),
    radial-gradient(620px 340px at 100% 100%, color-mix(in srgb, var(--royal) 18%, transparent), transparent 66%),
    linear-gradient(145deg, color-mix(in srgb, var(--panel) 98%, transparent), var(--bg-2));
  box-shadow: 0 28px 90px rgba(0,0,0,.5), 0 0 0 1px rgba(255,255,255,.05) inset;
  scrollbar-gutter: stable;
}
.gen3-tutorial-hero {
  display: grid;
  grid-template-columns: 96px minmax(0, 1fr) auto;
  align-items: center;
  gap: clamp(.9rem, 2vw, 1.35rem);
  min-height: 145px;
  padding: clamp(1rem, 2.5vw, 1.5rem);
  border: 1px solid color-mix(in srgb, var(--brand-2) 45%, var(--border));
  border-radius: 22px;
  background: linear-gradient(125deg, color-mix(in srgb, var(--brand-2) 20%, var(--panel)), color-mix(in srgb, var(--royal) 13%, var(--panel)));
  box-shadow: inset 0 1px 0 rgba(255,255,255,.08);
}
.gen3-tutorial-logo-wrap {
  width: 96px;
  height: 96px;
  display: grid;
  place-items: center;
  overflow: hidden;
  border: 3px solid var(--accent);
  border-radius: 24px;
  background: #fff;
  box-shadow: 0 10px 22px rgba(0,0,0,.25), 0 0 0 5px color-mix(in srgb, var(--accent) 15%, transparent);
}
.gen3-tutorial-logo { width: 100%; height: 100%; object-fit: contain; image-rendering: auto; }
.gen3-tutorial-hero-copy { min-width: 0; }
.gen3-tutorial-status { display: block; margin-bottom: .35rem; color: var(--call); font: 800 .66rem var(--font-mono); letter-spacing: .14em; }
.gen3-tutorial-hero h2 { margin: 0; color: var(--text); font-size: clamp(1.55rem, 3.4vw, 2.65rem); line-height: 1.05; letter-spacing: -.035em; }
.gen3-tutorial-lead { max-width: 680px; margin: .7rem 0 0; color: var(--muted); font-size: clamp(.82rem, 1.4vw, 1rem); line-height: 1.55; }
.gen3-tutorial-release { display: grid; gap: .25rem; min-width: 112px; padding: .8rem .9rem; border: 1px solid color-mix(in srgb, var(--accent) 42%, var(--border)); border-radius: 15px; text-align: center; background: color-mix(in srgb, var(--accent) 8%, transparent); }
.gen3-tutorial-release strong { color: var(--accent); font: 900 1rem var(--font-display); letter-spacing: .08em; }
.gen3-tutorial-release span { color: var(--muted); font: 700 .58rem var(--font-mono); letter-spacing: .1em; }
.gen3-tutorial-section-head { display: flex; align-items: end; justify-content: space-between; gap: 1rem; padding: .2rem .15rem 0; }
.gen3-tutorial-section-head h3 { margin: .25rem 0 0; color: var(--text); font-size: clamp(1.05rem, 2vw, 1.45rem); }
.gen3-tutorial-section-head p { margin: 0; font-size: .8rem; }
.gen3-tutorial-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .85rem; }
.gen3-tutorial-card { display: grid; grid-template-columns: 52px minmax(0, 1fr); align-items: start; gap: .85rem; min-width: 0; min-height: 150px; padding: 1.05rem; border: 1px solid var(--border); border-radius: 17px; background: linear-gradient(145deg, color-mix(in srgb, var(--panel) 96%, transparent), color-mix(in srgb, var(--bg-2) 70%, transparent)); box-shadow: 0 8px 20px rgba(0,0,0,.12); }
.gen3-tutorial-card strong { display: block; color: var(--text); font-size: .95rem; line-height: 1.25; }
.gen3-tutorial-card p { margin: .45rem 0 0; color: var(--muted); font-size: .78rem; line-height: 1.55; }
.gen3-tutorial-icon { width: 52px; height: 52px; display: grid; place-items: center; flex: 0 0 52px; border: 1px solid color-mix(in srgb, var(--brand-2) 36%, var(--border)); border-radius: 15px; background: color-mix(in srgb, var(--brand-2) 13%, transparent); font-size: 1.65rem; box-shadow: inset 0 1px 0 rgba(255,255,255,.08); }
.gen3-tutorial-note { display: flex; align-items: center; gap: .8rem; padding: .95rem 1rem; border: 1px solid color-mix(in srgb, var(--accent) 46%, var(--border)); border-radius: 15px; background: color-mix(in srgb, var(--accent) 8%, var(--panel)); }
.gen3-tutorial-note-icon { display: grid; place-items: center; width: 34px; height: 34px; flex: 0 0 34px; border-radius: 10px; color: var(--accent); background: color-mix(in srgb, var(--accent) 15%, transparent); font-size: 1.1rem; }
.gen3-tutorial-note strong { display: block; margin-bottom: .15rem; color: var(--text); font-size: .85rem; }
.gen3-tutorial-note .small { display: block; color: var(--muted); line-height: 1.45; }
.gen3-tutorial-actions { display: flex; justify-content: flex-end; padding-top: .1rem; }
.gen3-tutorial-actions .btn { min-width: 245px; padding: .82rem 1.2rem; font-size: .82rem; }
.nature-choice-modal { display: grid; gap: .7rem; max-width: 520px; }
.nature-choice-preview { padding: .65rem .75rem; border: 1px solid var(--border); border-radius: 10px; color: var(--muted); background: var(--panel); }
@media (max-width: 620px) {
  .modal:has(.gen3-tutorial) { width: calc(100vw - .7rem); max-height: calc(100dvh - .7rem); }
  .gen3-tutorial { max-height: calc(100dvh - .7rem); padding: .85rem; border-radius: 20px; gap: 1rem; }
  .gen3-tutorial-hero { grid-template-columns: 68px minmax(0, 1fr); min-height: 0; padding: .9rem; border-radius: 17px; }
  .gen3-tutorial-logo-wrap { width: 68px; height: 68px; border-width: 2px; border-radius: 17px; }
  .gen3-tutorial-status { font-size: .55rem; letter-spacing: .08em; }
  .gen3-tutorial-hero h2 { font-size: 1.35rem; }
  .gen3-tutorial-lead { margin-top: .45rem; font-size: .76rem; }
  .gen3-tutorial-release { grid-column: 1 / -1; grid-template-columns: auto auto; justify-content: space-between; align-items: center; min-width: 0; padding: .55rem .7rem; }
  .gen3-tutorial-section-head { display: grid; gap: .25rem; }
  .gen3-tutorial-grid { grid-template-columns: 1fr; gap: .65rem; }
  .gen3-tutorial-card { min-height: 0; padding: .85rem; }
  .gen3-tutorial-card p { font-size: .75rem; }
  .gen3-tutorial-actions .btn { width: 100%; min-width: 0; }
  .portal-maintenance { padding: 1.3rem .85rem; }
}

/* Ícone de item na mochila da batalha (sprite real) */
.bt-item .bi-ico { width: 22px; height: 22px; image-rendering: pixelated; object-fit: contain; }

/* ══ Treinador na tela (encontro) ══════════════════════════ */
.trainer-npc {
  display: grid; place-items: center; overflow: visible;
  width: 86px; height: 104px;
}
.trainer-emoji {
  font-size: 3.4rem; filter: drop-shadow(0 3px 4px rgba(0,0,0,.4));
  animation: wild-bob 1.4s ease-in-out infinite;
}
/* Sprite de treinador (NPC do encontro) — mesmo estilo do avatar do cartão. */
.trainer-sprite {
  width: auto; height: 96px; max-width: 112px; object-fit: contain; image-rendering: pixelated;
  filter: drop-shadow(0 3px 5px rgba(0,0,0,.45)); animation: wild-bob 1.4s ease-in-out infinite;
}
@media (max-width: 560px) {
  .trainer-npc { width: 94px; height: 112px; }
  .trainer-sprite { height: 104px; max-width: 120px; }
}
/* (estilos de .enc-btn/.enc-battle ficam no bloco do encounter-dock acima) */

/* Subiu de nível na tela de resultado da batalha */
.btr-levelups { display: flex; flex-direction: column; gap: .2rem; align-items: center; margin-top: .3rem; }
.btr-lu-title { font-family: var(--font-display); font-weight: 800; color: var(--t-grass); font-size: .9rem; }
.btr-lu { font-size: .82rem; color: var(--text); }

/* ══ 🏟️ Ginásios (desafio de líderes) ══════════════════════ */
.gyms-modal { max-height: 78vh; overflow-y: auto; padding-right: .2rem; display: flex; flex-direction: column; gap: .5rem; }
.gym-card {
  display: flex; align-items: center; gap: .7rem; padding: .6rem .8rem;
  border: 1px solid var(--border); border-left: 4px solid var(--gcolor, var(--border)); border-radius: 12px; background: var(--panel);
}
.gym-card.locked { opacity: .6; }
.gym-card.won { border-color: var(--accent); box-shadow: 0 0 0 1px color-mix(in srgb, var(--accent) 40%, transparent); }
.gym-badge-ico { font-size: 1.9rem; width: 40px; text-align: center; flex: 0 0 auto; }
.gym-card-main { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: .15rem; }
.gym-card-main strong { font-family: var(--font-display); font-size: .95rem; }
.gym-team { display: flex; gap: .1rem; flex-wrap: wrap; }
.gym-team .gym-mon { width: 34px; height: 34px; image-rendering: pixelated; }
.gym-check { font-size: 1.5rem; }
.gym-lock { font-size: 1.2rem; opacity: .7; }
.gym-earned-wrap { display: flex; flex-direction: column; align-items: center; gap: .2rem; }
/* Desafio semanal de ginásio */
.gym-week-challenge { background: color-mix(in srgb, var(--brand) 10%, var(--panel-2)); border: 1px solid color-mix(in srgb, var(--brand) 35%, var(--border));
  border-radius: 12px; padding: .55rem .75rem; display: flex; flex-direction: column; gap: .4rem; }
.gym-week-challenge.done { border-color: var(--t-grass); background: color-mix(in srgb, var(--t-grass) 12%, var(--panel-2)); }
.gwc-head { display: flex; align-items: center; justify-content: space-between; gap: .4rem; }
.gwc-title { font-weight: 700; font-size: .9rem; }
.gwc-bar { height: 7px; background: var(--border); border-radius: 4px; overflow: hidden; }
.gwc-fill { height: 100%; background: var(--brand); border-radius: 4px; transition: width .4s ease; }

/* ── Interruptores globais de recursos (Admin ▸ Gestão) ──────────────── */
.feature-flags { margin-top: 1.25rem; }
.ff-grid { display: grid; gap: .6rem; margin-top: .6rem; }
.ff-item { display: flex; align-items: center; gap: .75rem; padding: .7rem .85rem; border: 1px solid var(--border);
  border-radius: 14px; background: var(--panel); cursor: pointer; }
.ff-item:hover { border-color: color-mix(in srgb, var(--brand) 45%, var(--border)); }
.ff-ico { font-size: 1.5rem; width: 34px; text-align: center; flex: 0 0 auto; }
.ff-txt { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: .1rem; }
.ff-txt strong { font-family: var(--font-display); font-size: .95rem; }
.ff-switch { position: relative; width: 48px; height: 28px; flex: 0 0 auto; }
.ff-check { position: absolute; opacity: 0; width: 100%; height: 100%; margin: 0; cursor: pointer; }
.ff-slider { position: absolute; inset: 0; background: var(--border); border-radius: 999px; transition: background .2s ease; }
.ff-slider::before { content: ''; position: absolute; top: 3px; left: 3px; width: 22px; height: 22px; border-radius: 50%;
  background: #fff; box-shadow: 0 1px 3px rgba(0,0,0,.35); transition: transform .2s ease; }
.ff-check:checked + .ff-slider { background: var(--t-grass, #4caf50); }
.ff-check:checked + .ff-slider::before { transform: translateX(20px); }
.ff-check:disabled + .ff-slider { opacity: .6; }

/* ── Pokédex dentro da batalha (mochila ▸ 📕) ────────────────────────── */
.btdex-tabs { display: flex; gap: .4rem; margin: .5rem 0 .7rem; }
.btdex-card { border: 1px solid var(--border); border-radius: 14px; padding: .8rem; background: var(--panel);
  display: flex; flex-direction: column; gap: .7rem; }
.btdex-head { display: flex; gap: .8rem; align-items: center; }
.btdex-mon { width: 84px; height: 84px; image-rendering: pixelated; flex: 0 0 auto;
  background: radial-gradient(circle at 50% 35%, var(--panel-2), var(--bg)); border-radius: 12px; border: 1px solid var(--border); }
.btdex-idn { display: flex; flex-direction: column; gap: .2rem; min-width: 0; }
.btdex-no { font-family: var(--font-pixel, monospace); font-size: .6rem; color: var(--muted); }
.btdex-nm { font-family: var(--font-display); font-size: 1.25rem; line-height: 1; }
.btdex-lv { font-size: .74rem; color: var(--muted); }
.btdex-types { display: flex; gap: .3rem; margin-top: .15rem; flex-wrap: wrap; }
.btdex-stats { display: grid; grid-template-columns: 1fr 1fr; gap: .3rem .8rem; }
.btdex-stat { display: grid; grid-template-columns: 3.6rem 2rem 1fr; align-items: center; gap: .3rem; }
.btdex-sl { font-size: .62rem; font-weight: 800; color: var(--muted); text-transform: uppercase; letter-spacing: .03em; }
.btdex-sv { font-size: .78rem; font-weight: 800; text-align: right; }
.btdex-sbar { height: 7px; background: var(--border); border-radius: 4px; overflow: hidden; }
.btdex-sfill { display: block; height: 100%; border-radius: 4px; background: linear-gradient(90deg, var(--brand), var(--accent)); }
.btdex-held { display: flex; align-items: center; gap: .55rem; min-width: 0; padding: .45rem .55rem; border: 1px solid color-mix(in srgb, var(--accent) 45%, var(--border)); border-radius: 10px; background: color-mix(in srgb, var(--accent) 8%, var(--panel-2)); }
.btdex-held > div { display: flex; min-width: 0; flex-direction: column; gap: .12rem; }
.btdex-held strong, .btdex-held span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.btdex-held-img { width: 30px; height: 30px; object-fit: contain; image-rendering: pixelated; }
.btdex-moves { display: flex; flex-direction: column; gap: .3rem; }
.btdex-ml { font-size: .62rem; font-weight: 800; color: var(--muted); text-transform: uppercase; letter-spacing: .03em; }
.btdex-mlist { display: flex; flex-wrap: wrap; gap: .3rem; }
.btdex-move { font-size: .68rem; font-weight: 700; padding: .2rem .5rem; border-radius: 999px;
  border: 1px solid var(--border); background: var(--panel-2); }
.bt-item.bt-dex { border-color: color-mix(in srgb, var(--accent) 45%, var(--border)); }

/* ── Tela de jogo/batalha: impedir seleção de texto e arraste acidental ── */
#game-view, #game-view * { -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; }
#game-view img { -webkit-user-drag: none; user-drag: none; }
/* Campos de texto dos jogos (respostas digitadas) continuam selecionáveis. */
#game-view input, #game-view textarea, #game-view [contenteditable="true"] {
  -webkit-user-select: text; -moz-user-select: text; -ms-user-select: text; user-select: text;
}

/* ═══════════════════════════════════════════════════════════════
   PROVA DE FORMATURA (#4) — card na Mentoria + modal da prova/revisão.
   ═══════════════════════════════════════════════════════════════ */
.grad-card { border: 2px dashed var(--accent); }
.grad-lead { margin: .4rem 0; }
.grad-feedback { margin: .3rem 0; font-style: italic; opacity: .9; }
.grad-badge { font-size: .72rem; font-weight: 800; padding: .12rem .5rem; border-radius: 999px; }
.grad-badge.ok { background: #d8f5dd; color: #1b7d33; }
.grad-badge.wait { background: #fff3cd; color: #8a6d00; }
.grad-badge.no { background: #ffe0e0; color: #b42318; }
.grad-review-row { display: flex; align-items: center; justify-content: space-between; gap: .6rem;
  padding: .4rem 0; border-top: 1px solid var(--border); }

.grad-exam { max-width: 640px; }
.grad-exam .modal-title { margin: 0 0 .3rem; }
.grad-part { margin-top: 1rem; }
.grad-prompt { margin: .3rem 0 .6rem; }
.grad-textarea { width: 100%; box-sizing: border-box; padding: .6rem .7rem; border-radius: 10px;
  border: 2px solid var(--border); background: var(--panel); color: inherit; font: inherit; resize: vertical; }
.grad-textarea:focus { outline: none; border-color: var(--accent); }
.grad-case { padding: .6rem .7rem; margin: .5rem 0; border-radius: 12px; background: var(--panel-2); }
.grad-case-q { margin: 0 0 .5rem; font-weight: 600; }
.grad-case.ok { background: #eafaee; }
.grad-case.no { background: #fdecec; }
.grad-opt { display: flex; align-items: center; gap: .5rem; padding: .35rem .4rem; border-radius: 8px;
  cursor: pointer; min-height: 40px; } /* min 40px: alvo de toque confortável no mobile */
.grad-opt:hover { background: color-mix(in srgb, var(--accent) 10%, transparent); }
.grad-opt input { width: 18px; height: 18px; flex: none; }
.grad-basetext { white-space: pre-wrap; padding: .6rem .7rem; border-radius: 10px;
  background: var(--panel-2); max-height: 240px; overflow: auto; }
.grad-actions { display: flex; gap: .6rem; margin-top: .8rem; }
.grad-actions .btn { flex: 1; }
@media (max-width: 560px) { .grad-actions { flex-direction: column; } }

/* ── Repetição espaçada: card + baralho de revisão ── */
.review-card { border: 2px dashed color-mix(in srgb, var(--accent) 55%, var(--border)); }
.review-deck { max-width: 520px; }
.review-statement { font-size: 1.05rem; font-weight: 700; margin: 1rem 0; line-height: 1.4; }
.review-vf-row { display: flex; gap: .6rem; }
.review-vf { flex: 1; min-height: 48px; font-weight: 800; }
.review-vf.picked { outline: 3px solid var(--accent); }
.review-fb { margin-top: .8rem; }
.review-verdict { font-weight: 800; margin: .2rem 0; }
.review-verdict.ok { color: #1b7d33; }
.review-verdict.no { color: #b42318; }

/* ═══════════════════════════════════════════════════════════════
   QA MOBILE (#6) — redes de segurança universais contra scroll
   horizontal. Regras genéricas (baixa especificidade): componentes com
   tamanho próprio continuam mandando; isto só evita o conteúdo estourar.
   ═══════════════════════════════════════════════════════════════ */
img, svg, video { max-width: 100%; height: auto; }
pre, code { max-width: 100%; overflow-x: auto; }
pre { white-space: pre-wrap; word-break: break-word; }
/* Tabelas largas (ex.: admin) rolam na horizontal em vez de empurrar a página. */
@media (max-width: 560px) {
  .admin-table { display: block; overflow-x: auto; -webkit-overflow-scrolling: touch; }
}
/* ── Cineminha: lobby "surpresa" (sessão criada, filme ainda escondido) ── */
.cinema-lobby-stage {
  display: grid; place-items: center; gap: 1rem; min-height: 260px; padding: 1.5rem 1rem;
  background: radial-gradient(ellipse at 50% -10%, rgba(227, 53, 13, .22), transparent 60%), #0d1521;
  overflow: hidden;
}
.cinema-lobby-reel { display: flex; gap: 1.1rem; font-size: 1.9rem; filter: drop-shadow(0 4px 10px rgba(0, 0, 0, .4)); animation: cinemaLobbyDrift 4.5s ease-in-out infinite; }
.cinema-lobby-reel span:nth-child(2n) { animation: cinemaLobbyBounce 2.2s ease-in-out infinite; }
.cinema-lobby-reel span:nth-child(2n + 1) { animation: cinemaLobbyBounce 2.2s ease-in-out infinite .35s; }
@keyframes cinemaLobbyBounce { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-8px); } }
@keyframes cinemaLobbyDrift { 0%, 100% { opacity: .9; } 50% { opacity: 1; } }
.cinema-lobby-reveal { display: grid; gap: .3rem; justify-items: center; text-align: center; padding: .9rem 1.2rem; border-radius: 14px; background: rgba(255, 255, 255, .05); border: 1px dashed rgba(255, 255, 255, .18); max-width: 420px; }
.cinema-lobby-reveal strong { color: #fff; font-size: 1.02rem; }
.cinema-lobby-reveal .muted.small { color: rgba(255, 255, 255, .6); }
.cinema-lobby-eyebrow { font-size: .68rem; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; color: rgba(255, 255, 255, .55); }
.cinema-lobby-reveal.is-admin { border-style: solid; border-color: color-mix(in srgb, var(--brand-2) 55%, transparent); background: color-mix(in srgb, var(--brand-2) 14%, rgba(255, 255, 255, .05)); }
.cinema-lobby-reveal.is-admin .cinema-lobby-eyebrow { color: color-mix(in srgb, var(--brand-2) 70%, #fff); }
.cinema-dock-lobby .cinema-dock-primary { background: #1b7d33; border-color: #1b7d33; }
.cinema-dock-danger { border-color: #b42318; }
.cinema-dock-danger:hover:not(:disabled) { background: color-mix(in srgb, #b42318 16%, var(--surface, var(--panel))); border-color: #b42318; }

/* ── Cineminha: sessão de vídeo sincronizada ── */
.cinema-host {
  max-width: 1100px; margin: 0 auto; padding: 1.1rem 1.1rem 1.6rem; border-radius: 22px;
  background:
    radial-gradient(ellipse 900px 260px at 15% 0%, color-mix(in srgb, var(--accent) 10%, transparent), transparent 60%),
    radial-gradient(ellipse 900px 260px at 100% 0%, color-mix(in srgb, var(--brand-2) 10%, transparent), transparent 60%),
    var(--panel-2);
  border: 1px solid var(--border);
}
.cinema-layout { display: grid; grid-template-columns: minmax(0, 1fr) minmax(250px, 310px); gap: 1rem; align-items: start; }
.cinema-main { min-width: 0; }
.cinema-screen-panel { display: grid; gap: .45rem; margin-bottom: .8rem; padding: .65rem; border: 1px solid var(--border); border-radius: 14px; background: var(--panel); }
.cinema-screen-panel.hidden { display: none; }
.cinema-screen-head { display: flex; align-items: center; justify-content: space-between; gap: .6rem; }
.cinema-screen-head strong { font-size: .84rem; }
.cinema-screen-status { color: var(--muted); font-size: .74rem; }
.cinema-screen-stage { position: relative; }
.cinema-screen-buffer {
  position: absolute; inset: 0; display: none; flex-direction: column; align-items: center; justify-content: center;
  gap: .6rem; background: rgba(5, 8, 13, .55); color: #fff; pointer-events: none; z-index: 1;
}
.cinema-screen-buffer.is-visible { display: flex; }
.cinema-screen-buffer-spinner {
  width: 2rem; height: 2rem; border-radius: 50%;
  border: 3px solid rgba(255, 255, 255, .25); border-top-color: var(--accent);
  animation: cinema-spin .8s linear infinite;
}
.cinema-screen-buffer-text { font-size: .8rem; font-weight: 700; }
@keyframes cinema-spin { to { transform: rotate(360deg); } }
.cinema-screen-video { display: block; width: 100%; max-height: 42vh; border-radius: 10px; background: #05080d; object-fit: contain; }
.cinema-screen-controls { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem; margin: .15rem 0 .8rem; padding: .65rem; border: 1px solid var(--border); border-radius: 14px; background: var(--panel); }
.cinema-screen-help { flex: 1 1 100%; color: var(--muted); font-size: .72rem; line-height: 1.35; }
.cinema-screen-quality-label { display: inline-flex; align-items: center; gap: .4rem; margin-left: auto; color: var(--muted); font-size: .75rem; font-weight: 700; }
.cinema-screen-quality { min-height: 2.25rem; padding: .35rem .55rem; border: 1px solid var(--border); border-radius: 9px; background: var(--surface, var(--panel)); color: var(--text); }

/* ── Dock de botões redondos estilo "controles de chamada" (Discord) ── */
.cinema-dock { display: flex; flex-wrap: wrap; align-items: center; gap: .55rem; }
.cinema-dock-btn {
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: .25rem; width: 4.4rem; padding: .45rem .3rem .4rem;
  border: 1px solid var(--border); border-radius: 12px;
  background: var(--surface, var(--panel)); color: var(--text);
  cursor: pointer; transition: background .15s ease, border-color .15s ease, transform .1s ease;
}
.cinema-dock-btn:hover:not(:disabled) { background: color-mix(in srgb, var(--accent) 12%, var(--surface, var(--panel))); border-color: color-mix(in srgb, var(--accent) 45%, var(--border)); transform: translateY(-1px); }
.cinema-dock-btn:active:not(:disabled) { transform: translateY(0); }
.cinema-dock-btn:disabled { opacity: .45; cursor: not-allowed; }
.cinema-dock-icon { font-size: 1.25rem; line-height: 1; }
.cinema-dock-label {
  font-size: .6rem; font-weight: 700; color: var(--muted); text-align: center; line-height: 1.15;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.cinema-dock-btn.is-active { background: color-mix(in srgb, var(--accent) 22%, var(--surface, var(--panel))); border-color: var(--accent); }
.cinema-dock-btn.is-active .cinema-dock-label { color: var(--text); }
/* Botão principal (compartilhar/parar): verde parado, vermelho ao vivo — igual ao "Compartilhar tela" do Discord. */
.cinema-dock-primary { background: #1b7d33; border-color: #1b7d33; }
.cinema-dock-primary .cinema-dock-icon, .cinema-dock-primary .cinema-dock-label { color: #fff; }
.cinema-dock-primary:hover:not(:disabled) { background: #17692b; border-color: #17692b; transform: translateY(-1px); }
.cinema-dock-primary.is-active { background: #b42318; border-color: #b42318; }
.cinema-dock-primary.is-active:hover:not(:disabled) { background: #96201a; border-color: #96201a; }
/* Dock flutuante sobre o vídeo do espectador — aparece só ao passar o mouse/tocar, como no Discord/Zoom. */
.cinema-dock-floating {
  position: absolute; left: 50%; bottom: .6rem; transform: translate(-50%, 0);
  gap: .35rem; padding: .35rem; border-radius: 14px;
  background: rgba(10, 14, 22, .72); backdrop-filter: blur(6px);
  border-color: rgba(255, 255, 255, .12);
  opacity: 0; pointer-events: none; transition: opacity .18s ease;
}
.cinema-screen-stage:hover .cinema-dock-floating,
.cinema-screen-stage:focus-within .cinema-dock-floating,
.cinema-dock-floating:has(:focus-visible) { opacity: 1; pointer-events: auto; }
.cinema-dock-floating .cinema-dock-btn { min-width: 2.8rem; padding: .3rem .35rem; background: transparent; border-color: transparent; }
.cinema-dock-floating .cinema-dock-icon { color: #fff; }
.cinema-dock-floating .cinema-dock-label { color: rgba(255, 255, 255, .75); }
.cinema-dock-floating .cinema-dock-btn:hover:not(:disabled) { background: rgba(255, 255, 255, .14); border-color: transparent; }
@media (hover: none) {
  /* Sem mouse (celular/tablet) não dá pra "passar por cima" — deixa sempre visível. */
  .cinema-dock-floating { opacity: 1; pointer-events: auto; }
}
.cinema-idle { display: grid; gap: .8rem; }
.cinema-idle .cinema-screen-panel { margin-bottom: 0; }

/* "Fullscreen falso" via CSS — position: fixed cobrindo a tela toda, sem
   depender da Fullscreen API nativa (inconsistente no mobile). Funciona
   igual pro player de filme (.cinema-stage) e pra tela compartilhada
   (.cinema-screen-panel), então a regra é compartilhada pelas duas. */
.cinema-stage.is-fake-fullscreen,
.cinema-screen-panel.is-fake-fullscreen {
  position: fixed; inset: 0; z-index: 2000; margin: 0; border: 0; border-radius: 0;
  background: #05080d; display: flex; flex-direction: column;
}
.cinema-screen-panel.is-fake-fullscreen { padding: 0; gap: 0; }
.cinema-stage.is-fake-fullscreen .cinema-video,
.cinema-screen-panel.is-fake-fullscreen .cinema-screen-stage { flex: 1; min-height: 0; }
.cinema-stage.is-fake-fullscreen .cinema-video { width: 100%; height: 100%; max-height: none; object-fit: contain; }
.cinema-screen-panel.is-fake-fullscreen .cinema-screen-video { width: 100%; height: 100%; max-height: none; }
.cinema-screen-panel.is-fake-fullscreen .cinema-screen-head { flex: 0 0 auto; background: rgba(5, 8, 13, .82); }
/* Trava o scroll da página por trás enquanto o fullscreen falso está aberto. */
body.cinema-fake-fullscreen-lock { overflow: hidden; }
.cinema-head {
  display: flex; align-items: center; gap: 1.1rem; flex-wrap: wrap;
  padding-bottom: 1.1rem; margin-bottom: 1.2rem;
  border-bottom: 2px solid transparent;
  border-image: linear-gradient(90deg, var(--accent), var(--brand-2), transparent) 1;
}
.cinema-head-badge {
  display: grid; place-items: center; flex: 0 0 auto; width: 3.2rem; height: 3.2rem;
  border-radius: 16px; font-size: 1.6rem;
  background: linear-gradient(155deg, var(--accent), var(--brand-2));
  box-shadow: 0 8px 18px color-mix(in srgb, var(--brand-2) 35%, transparent);
}
.cinema-head-copy { display: grid; gap: .1rem; min-width: 0; flex: 1 1 auto; }
.cinema-head h2 { margin: 0; font-size: 1.65rem; letter-spacing: .01em; }
.cinema-head .eyebrow { color: color-mix(in srgb, var(--accent) 75%, var(--muted)); }
.cinema-description { margin: .15rem 0 0; }
.cinema-status { display: inline-flex; align-items: center; gap: .35rem; padding: .45rem .75rem; border: 1px solid var(--border); border-radius: 999px; background: var(--panel); color: var(--text); font-weight: 800; white-space: nowrap; }
.cinema-head-right { display: flex; align-items: center; gap: .5rem; flex-wrap: wrap; justify-content: flex-end; }
.cinema-ping-badge { display: inline-flex; align-items: center; gap: .3rem; padding: .3rem .6rem; border-radius: 999px; font-size: .72rem; font-weight: 800; border: 1px solid var(--border); background: var(--panel); color: var(--muted); }
.cinema-ping-good { border-color: color-mix(in srgb, #1b7d33 55%, var(--border)); color: #1b7d33; }
.cinema-ping-medium { border-color: color-mix(in srgb, #b8860b 55%, var(--border)); color: #b8860b; }
.cinema-ping-bad { border-color: #b42318; color: #b42318; animation: cinema-ping-pulse 1.2s ease-in-out infinite; }
@keyframes cinema-ping-pulse { 50% { opacity: .55; } }
/* Pílula de status "acende" quando há sessão em andamento — some clima de "ao vivo" sem depender só do texto. */
.cinema-host:has(.cinema-stage:not(.cinema-lobby-stage)) .cinema-status { border-color: color-mix(in srgb, var(--brand-2) 55%, var(--border)); background: color-mix(in srgb, var(--brand-2) 10%, var(--panel)); }
.cinema-host:has(.cinema-lobby-stage) .cinema-status { border-color: color-mix(in srgb, #a855f7 45%, var(--border)); background: color-mix(in srgb, #a855f7 10%, var(--panel)); }
.cinema-stage { position: relative; overflow: hidden; border: 1px solid rgba(18, 35, 58, .18); border-radius: 18px; background: #0d1521; box-shadow: 0 14px 36px rgba(13, 25, 44, .2); }
.cinema-video { display: block; width: 100%; max-height: min(68vh, 720px); background: #05080d; aspect-ratio: 16 / 9; object-fit: contain; }
.cinema-stage-meta { display: flex; justify-content: space-between; align-items: center; gap: 1rem; padding: .75rem 1rem; color: #fff; }
.cinema-stage-copy { display: grid; gap: .1rem; min-width: 0; }
.cinema-stage-meta .muted { color: #aebbd0; }
.cinema-stage-meta .cinema-fullscreen { flex: 0 0 auto; background: rgba(255, 255, 255, .08); border-color: rgba(255, 255, 255, .22); }
.cinema-stage-meta .cinema-fullscreen .cinema-dock-icon { color: #fff; }
.cinema-stage-meta .cinema-fullscreen .cinema-dock-label { color: rgba(255, 255, 255, .78); }
.cinema-stage-meta .cinema-fullscreen:hover { background: rgba(255, 255, 255, .16); }
.cinema-floating-host { position: absolute; z-index: 2; top: .8rem; right: .8rem; left: .8rem; display: grid; justify-items: end; gap: .45rem; pointer-events: none; }
/* Toque pra ativar o som — o navegador não deixa dar autoplay com áudio sem
   um gesto, então isso substitui o antigo botão "Entrar sincronizado". */
.cinema-unmute-btn {
  position: absolute; left: 50%; bottom: 1rem; transform: translateX(-50%); z-index: 3;
  background: rgba(5, 8, 13, .78); border-color: rgba(255, 255, 255, .3);
  animation: cinema-unmute-pulse 1.6s ease-in-out infinite;
}
.cinema-unmute-btn .cinema-dock-icon { color: #fff; }
.cinema-unmute-btn .cinema-dock-label { color: rgba(255, 255, 255, .85); }
@keyframes cinema-unmute-pulse { 50% { box-shadow: 0 0 0 8px rgba(255, 255, 255, .06); } }
.cinema-floating-message { display: grid; gap: .08rem; max-width: min(430px, 86%); padding: .5rem .7rem; border: 1px solid rgba(255, 255, 255, .18); border-radius: 10px; background: rgba(10, 16, 28, .78); color: #fff; box-shadow: 0 8px 22px rgba(0, 0, 0, .28); backdrop-filter: blur(8px); animation: cinema-float-in .25s ease-out; }
.cinema-floating-message strong { color: #ffd86b; font-size: .75rem; }
.cinema-floating-message span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: .82rem; }
.cinema-floating-message.is-leaving { opacity: 0; transform: translateY(-8px); transition: opacity .35s ease, transform .35s ease; }
@keyframes cinema-float-in { from { opacity: 0; transform: translateY(-8px); } to { opacity: 1; transform: translateY(0); } }
.cinema-watch { margin-top: .8rem; }
.cinema-invite-button { margin: 0 0 1.25rem; }
.cinema-controls { display: flex; flex-wrap: wrap; gap: .55rem; margin: .8rem 0 1.25rem; }
.cinema-empty { display: grid; place-items: center; gap: .4rem; min-height: 170px; padding: 2rem 1.5rem; border: 1px dashed var(--border); border-radius: 18px; background: var(--panel); color: var(--muted); text-align: center; }
.cinema-empty-icon { font-size: 2.4rem; filter: grayscale(.15); opacity: .85; }
.cinema-empty strong { color: var(--text); font-size: 1.02rem; }
.cinema-empty .muted { max-width: 420px; }
.cinema-upload {
  display: flex; flex-wrap: wrap; align-items: end; gap: .7rem; margin: 1.2rem 0; padding: 1.1rem;
  border: 1.5px dashed color-mix(in srgb, var(--accent) 35%, var(--border)); border-radius: 16px;
  background: color-mix(in srgb, var(--accent) 4%, var(--panel));
  transition: border-color .15s ease, background .15s ease;
}
.cinema-upload:focus-within { border-color: var(--accent); background: color-mix(in srgb, var(--accent) 8%, var(--panel)); }
.cinema-upload-copy { display: grid; gap: .1rem; min-width: 190px; margin-right: auto; }
.cinema-upload-copy strong::before { content: '⬆️ '; }
.cinema-upload input { min-width: 190px; max-width: 100%; }
.cinema-title-input { padding: .65rem .75rem; border: 1px solid var(--border); border-radius: 10px; background: var(--panel-2); color: var(--text); }
.cinema-library { margin-top: 1.4rem; }
.cinema-library .eyebrow { color: color-mix(in srgb, var(--accent) 75%, var(--muted)); }
.cinema-media-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 1rem; margin-top: .8rem; }
.cinema-media-card {
  position: relative; display: grid; grid-template-rows: auto 1fr auto; gap: 0;
  border: 1px solid var(--border); border-radius: 16px; background: var(--panel);
  transition: transform .15s ease, box-shadow .15s ease, border-color .15s ease; overflow: hidden;
}
.cinema-media-card:hover { transform: translateY(-3px); box-shadow: 0 14px 30px rgba(0, 0, 0, .22); border-color: color-mix(in srgb, var(--accent) 40%, var(--border)); }
.cinema-media-icon {
  display: grid; place-items: center; aspect-ratio: 16 / 10; font-size: 2.4rem;
  background:
    repeating-linear-gradient(135deg, rgba(255, 255, 255, .04) 0 2px, transparent 2px 14px),
    linear-gradient(155deg, color-mix(in srgb, var(--accent) 35%, var(--panel-2)), color-mix(in srgb, var(--brand-2) 30%, #0d1521));
}
.cinema-media-info { display: grid; gap: .15rem; min-width: 0; padding: .8rem .9rem .5rem; }
.cinema-media-actions { grid-column: unset; display: flex; flex-wrap: wrap; gap: .4rem; padding: 0 .9rem .9rem; }
.cinema-media-card.is-active { border-color: #ee1515; box-shadow: 0 0 0 2px rgba(238, 21, 21, .12); }
.cinema-media-card.is-active::before {
  content: '● AGORA'; position: absolute; top: 0; right: 0; padding: .25rem .6rem .25rem .55rem;
  font-size: .64rem; font-weight: 800; letter-spacing: .03em; color: #fff;
  background: #ee1515; border-radius: 0 0 0 12px; z-index: 1;
}
.cinema-settings, .cinema-schedule-panel, .cinema-quiz-panel { display: grid; gap: .7rem; margin: 1rem 0; padding: .9rem 1rem; border: 1px solid var(--border); border-radius: 16px; background: var(--panel); }
.cinema-settings, .cinema-schedule-panel { border-top: 3px solid color-mix(in srgb, var(--accent) 55%, var(--border)); }
.cinema-settings { padding: 0; overflow: hidden; }
.cinema-settings summary {
  display: flex; align-items: center; gap: .6rem; padding: .8rem 1rem; cursor: pointer; list-style: none;
  color: var(--text);
}
.cinema-settings summary::-webkit-details-marker { display: none; }
.cinema-settings summary::after {
  content: '▾'; margin-left: auto; color: var(--muted); font-size: .85rem; transition: transform .15s ease;
}
.cinema-settings[open] summary::after { transform: rotate(180deg); }
.cinema-settings summary:hover { background: color-mix(in srgb, var(--accent) 6%, transparent); }
.cinema-settings-summary-icon { font-size: 1.15rem; }
.cinema-settings-summary-copy { display: grid; gap: .05rem; }
.cinema-settings-body { display: grid; gap: .7rem; padding: 0 1rem 1rem; }
.cinema-quiz-panel { border-top: 3px solid color-mix(in srgb, var(--brand-2) 55%, var(--border)); }
.cinema-settings-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: .6rem; }
.cinema-settings-grid label, .cinema-schedule-form { display: grid; gap: .25rem; color: var(--muted); font-size: .74rem; font-weight: 800; }
.cinema-setting-input, .cinema-quiz-input, .cinema-quiz-select, .cinema-quiz-reward { width: 100%; min-height: 38px; padding: .45rem .55rem; border: 1px solid var(--border); border-radius: 9px; background: var(--panel-2); color: var(--text); }
.cinema-settings-grid .check-label { display: flex; grid-template-columns: auto 1fr; align-items: center; gap: .45rem; padding-top: 1.35rem; }
.modal:has(.cinema-private-modal), .modal:has(.cinema-screen-help-modal), .modal:has(.cinema-private-result) { width: min(760px, calc(100vw - 1rem)); max-width: none; max-height: calc(100dvh - 1rem); padding: 1rem; overflow: hidden; }
.cinema-private-modal, .cinema-screen-help-modal, .cinema-private-result { width: 100%; max-height: calc(100dvh - 3rem); overflow-y: auto; padding-right: .25rem; }
.cinema-private-modal h3, .cinema-screen-help-modal h3 { margin-top: 0; }
.cinema-private-modal > p { margin-top: -.45rem; }
.cinema-private-field { display: grid; gap: .25rem; color: var(--muted); font-size: .74rem; font-weight: 800; }
.cinema-private-mode-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .55rem; margin: .85rem 0; }
.cinema-private-mode { display: flex; align-items: flex-start; gap: .55rem; min-height: 72px; padding: .75rem; border: 1px solid var(--border); border-radius: 12px; background: var(--panel-2); cursor: pointer; }
.cinema-private-mode:has(input:checked) { border-color: var(--accent); box-shadow: 0 0 0 2px color-mix(in srgb, var(--accent) 17%, transparent); }
.cinema-private-mode span { display: grid; gap: .18rem; }
.cinema-private-mode small { font-size: .72rem; line-height: 1.3; }
.cinema-private-mode input:disabled + span { opacity: .48; }
.cinema-private-panel, .cinema-private-external { display: grid; gap: .55rem; padding: .7rem; border: 1px solid var(--border); border-radius: 12px; background: color-mix(in srgb, var(--panel-2) 68%, var(--panel)); }
.cinema-private-panel > p, .cinema-private-external > p { margin: 0; }
.cinema-private-members { display: grid; gap: .35rem; max-height: 210px; overflow-y: auto; }
.cinema-private-member { display: flex; align-items: center; gap: .55rem; padding: .45rem .55rem; border: 1px solid var(--border); border-radius: 9px; background: var(--panel); cursor: pointer; }
.cinema-private-member > span { display: grid; gap: .1rem; min-width: 0; }
.cinema-private-member strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cinema-private-member small { font-size: .68rem; }
.cinema-private-rewards { display: grid; grid-template-columns: 1fr 1fr auto; gap: .55rem; align-items: end; margin-top: .75rem; }
.cinema-private-rewards .check-label { display: flex; align-items: center; gap: .4rem; min-height: 38px; color: var(--muted); font-size: .74rem; font-weight: 800; }
.cinema-private-warning { color: #a35d00; font-weight: 700; }
.cinema-private-modal .actions, .cinema-screen-help-modal .actions { display: flex; justify-content: flex-end; gap: .5rem; margin-top: 1rem; }
.cinema-screen-help-modal ol { display: grid; gap: .55rem; padding-left: 1.35rem; line-height: 1.45; }
.cinema-private-result { width: min(600px, 85vw); }
.cinema-private-link { width: 100%; min-height: 78px; resize: vertical; padding: .6rem; border: 1px solid var(--border); border-radius: 10px; background: var(--panel-2); color: var(--text); }
.cinema-schedule-form { grid-template-columns: minmax(0, 1.5fr) minmax(170px, 1fr) 100px auto; align-items: end; }
.cinema-schedule-list { display: grid; gap: .45rem; }
.cinema-schedule-row {
  display: flex; align-items: center; justify-content: space-between; gap: .7rem;
  padding: .6rem .75rem; border: 1px solid var(--border); border-left: 3px solid var(--accent);
  border-radius: 10px; background: var(--panel-2);
}
.cinema-schedule-row > div { display: grid; gap: .15rem; min-width: 0; }
.cinema-quiz-admin { display: grid; gap: .5rem; }
.cinema-quiz-option-inputs { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .45rem; }
.cinema-quiz-admin-row { display: flex; flex-wrap: wrap; gap: .45rem; align-items: center; }
.cinema-quiz-select { width: auto; }
.cinema-quiz-reward { width: 100px; }
.cinema-quiz-list { display: grid; gap: .35rem; }
.cinema-quiz-row { display: flex; align-items: center; justify-content: space-between; gap: .6rem; padding: .45rem .55rem; border: 1px solid var(--border); border-radius: 9px; }
.cinema-quiz-question { display: grid; gap: .2rem; margin-bottom: .55rem; }
.cinema-quiz-options { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .45rem; }
.cinema-quiz-option { text-align: left; }
.cinema-quiz-option.is-selected { border-color: var(--accent); background: color-mix(in srgb, var(--accent) 14%, var(--panel)); }
.cinema-quiz-result.ok { color: #198754; font-weight: 800; }
.cinema-quiz-result.bad { color: #d33; font-weight: 800; }
.cinema-report-modal { width: min(680px, 88vw); }
.cinema-report-modal h3 { margin-top: 0; }
.cinema-report-list { display: grid; gap: .4rem; max-height: 55vh; overflow-y: auto; }
.cinema-report-row { display: flex; align-items: center; justify-content: space-between; gap: .7rem; padding: .55rem .65rem; border: 1px solid var(--border); border-radius: 9px; background: var(--panel-2); }
/* ═════════ Terror de verdade — a aba inteira vira uma sala assombrada
   enquanto a sessão de terror estiver rolando. Técnicas: glitch RGB-split,
   scanlines VHS, vinheta com "gotas", fonte de horror (Creepster), palavras-
   susto piscando — inspirado em efeitos clássicos de CSS-only horror/VHS
   (glitch text, scanline overlay, ghost double-image flicker). ═════════ */
.cinema-theme-horror {
  --panel: #130a0f; --panel-2: #1d1116; --text: #ecdde1; --muted: #9c7783; --border: #3a121d;
  background: radial-gradient(ellipse at 50% -10%, rgba(130, 0, 26, .22), transparent 62%), #0b0709;
}
@media (prefers-reduced-motion: no-preference) {
  .cinema-theme-horror { animation: horror-flicker 7s steps(1) infinite; }
}
@keyframes horror-flicker {
  0%, 91%, 100% { filter: brightness(1); }
  92% { filter: brightness(.5); }
  93% { filter: brightness(1.12); }
  94% { filter: brightness(.35); }
  95% { filter: brightness(1); }
}
.cinema-theme-horror .eyebrow { color: #d68a97; }
.cinema-theme-horror .cinema-head-copy h2 {
  font-family: 'Creepster', var(--font-pixel), cursive;
  font-weight: 400; letter-spacing: .04em; font-size: clamp(1.5rem, 4vw, 2.1rem);
  color: #e6c8ce;
  text-shadow: 0 0 8px rgba(179, 0, 27, .7), 0 0 22px rgba(179, 0, 27, .35), 2px 0 rgba(255, 0, 60, .4), -2px 0 rgba(0, 200, 255, .22);
}
@media (prefers-reduced-motion: no-preference) {
  .cinema-theme-horror .cinema-head-copy h2 { animation: horror-title-wobble 3.4s ease-in-out infinite; }
}
@keyframes horror-title-wobble { 0%, 100% { transform: skewX(0deg); } 25% { transform: skewX(-1deg); } 75% { transform: skewX(1deg); } }
.cinema-theme-horror h3, .cinema-theme-horror strong {
  text-shadow: 0 0 10px rgba(179, 0, 27, .55), 1.5px 0 rgba(255, 0, 60, .35), -1.5px 0 rgba(0, 200, 255, .18);
}
.cinema-theme-horror .cinema-stage {
  position: relative; overflow: hidden;
  box-shadow: 0 0 45px rgba(120, 0, 20, .55), inset 0 0 80px rgba(0, 0, 0, .6);
}
/* Scanlines tipo fita VHS — listras finas deslizando pra baixo sem parar. */
.cinema-theme-horror .cinema-stage::before {
  content: ""; position: absolute; inset: 0; pointer-events: none; z-index: 2;
  background: repeating-linear-gradient(180deg, rgba(255, 255, 255, .045) 0, rgba(255, 255, 255, .045) 1px, transparent 2px, transparent 4px);
  mix-blend-mode: overlay;
}
@media (prefers-reduced-motion: no-preference) { .cinema-theme-horror .cinema-stage::before { animation: horror-scan 6s linear infinite; } }
/* Vinheta escura pulsante + "gotas" escuras pingando da borda de cima. */
.cinema-theme-horror .cinema-stage::after {
  content: ""; position: absolute; inset: -20%; pointer-events: none; z-index: 2;
  background:
    radial-gradient(circle 5px at 8% 21%, rgba(120, 0, 10, .55) 98%, transparent 100%),
    radial-gradient(circle 7px at 22% 24%, rgba(120, 0, 10, .5) 98%, transparent 100%),
    radial-gradient(circle 4px at 41% 20.5%, rgba(120, 0, 10, .5) 98%, transparent 100%),
    radial-gradient(circle 6px at 63% 23%, rgba(120, 0, 10, .5) 98%, transparent 100%),
    radial-gradient(circle 5px at 85% 20.5%, rgba(120, 0, 10, .5) 98%, transparent 100%),
    radial-gradient(ellipse at center, transparent 40%, rgba(0, 0, 0, .78) 100%);
}
@media (prefers-reduced-motion: no-preference) { .cinema-theme-horror .cinema-stage::after { animation: horror-vignette 5s ease-in-out infinite; } }
@keyframes horror-scan { from { background-position-y: 0; } to { background-position-y: 200px; } }
@keyframes horror-vignette { 0%, 100% { opacity: .72; } 50% { opacity: .92; } }
.cinema-theme-horror .cinema-theme-effect { filter: drop-shadow(0 0 14px rgba(179, 0, 27, .9)) drop-shadow(0 8px 18px rgba(0, 0, 0, .7)); }
/* Susto: dispara junto com o emoji flutuante (cinemaTriggerThemeEffect),
   em intervalo imprevisível — flash claro seguido de escurão + tremida. */
.cinema-theme-horror.horror-jumpscare { animation: horror-flash .42s ease, horror-flicker 7s steps(1) infinite; }
@keyframes horror-flash {
  0%   { filter: brightness(1); transform: translate(0, 0); }
  10%  { transform: translate(-6px, 2px); }
  16%  { filter: brightness(3.2) saturate(0) contrast(1.5); transform: translate(5px, -3px); }
  24%  { transform: translate(-3px, 3px); }
  34%  { filter: brightness(.32); transform: translate(2px, -2px); }
  100% { filter: brightness(1); transform: translate(0, 0); }
}
/* Palavra-susto: um flash de texto glitchado (RGB-split) no meio da tela. */
.horror-jumpscare-word {
  position: absolute; z-index: 4; top: 50%; left: 50%; transform: translate(-50%, -50%);
  font-family: 'Creepster', var(--font-pixel), cursive; font-weight: 400;
  font-size: clamp(1.5rem, 6.5vw, 3.2rem); text-align: center; letter-spacing: .04em;
  color: #ff2d3f; text-shadow: 3px 0 #00e5ff, -3px 0 #ff00aa, 0 0 24px rgba(255, 0, 40, .9);
  pointer-events: none; animation: horror-word-flash .6s steps(2) forwards;
}
@keyframes horror-word-flash {
  0% { opacity: 0; filter: blur(0); }
  15% { opacity: 1; }
  30% { opacity: .15; }
  45% { opacity: 1; filter: blur(.4px); }
  70% { opacity: .3; }
  100% { opacity: 0; }
}
.cinema-theme-horror .cinema-stage-meta { background: linear-gradient(90deg, #1d0812, #08070b); }
.cinema-theme-comedy .cinema-stage-meta { background: linear-gradient(90deg, #f6b73c, #ea5b35); }
.cinema-theme-classroom .cinema-stage-meta { background: linear-gradient(90deg, #124c68, #197b71); }
.cinema-theme-tournament .cinema-stage-meta { background: linear-gradient(90deg, #321269, #b33b15); }
.cinema-theme-event .cinema-stage-meta { background: linear-gradient(90deg, #7a236f, #c47c16); }
.cinema-theme-effect { position: absolute; z-index: 3; top: 35%; left: 50%; pointer-events: none; font-size: clamp(2.5rem, 8vw, 6rem); filter: drop-shadow(0 8px 18px rgba(0, 0, 0, .5)); animation: cinema-effect-pop 2.4s ease-out forwards; }
.cinema-effect-1 { animation-name: cinema-effect-drift; }
.cinema-effect-2 { animation-name: cinema-effect-shake; }
.cinema-effect-3 { animation-name: cinema-effect-fade; }
@keyframes cinema-effect-pop { 0% { opacity: 0; transform: translate(-50%, 15%) scale(.3) rotate(-12deg); } 18% { opacity: 1; transform: translate(-50%, 0) scale(1.1); } 100% { opacity: 0; transform: translate(-50%, -70%) scale(.85) rotate(12deg); } }
@keyframes cinema-effect-drift { 0% { opacity: 0; transform: translate(-50%, 20%) scale(.7); } 20% { opacity: 1; } 100% { opacity: 0; transform: translate(-50%, -100%) scale(1.3) rotate(18deg); } }
@keyframes cinema-effect-shake { 0%, 100% { opacity: 0; transform: translate(-50%, 0); } 15%, 35%, 55% { opacity: 1; transform: translate(calc(-50% - 8px), 0) rotate(-4deg); } 25%, 45% { transform: translate(calc(-50% + 8px), 0) rotate(4deg); } 100% { opacity: 0; transform: translate(-50%, -35%) scale(1.3); } }
@keyframes cinema-effect-fade { 0% { opacity: 0; transform: translate(-50%, 0) scale(1.5); } 30% { opacity: .9; } 100% { opacity: 0; transform: translate(-50%, -25%) scale(.7); } }
.cinema-media-info strong, .cinema-media-info span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cinema-selected { color: #16834c; font-size: .82rem; font-weight: 800; }
.cinema-chat-panel { min-width: 0; overflow: hidden; border: 1px solid var(--border); border-radius: 16px; background: var(--bg); box-shadow: 0 10px 28px rgba(13, 25, 44, .08); }
.cinema-chat-head {
  display: flex; align-items: center; justify-content: space-between; gap: .5rem; padding: .65rem .75rem;
  border-bottom: 1px solid var(--border);
  background: linear-gradient(90deg, color-mix(in srgb, var(--accent) 14%, var(--panel)), var(--panel));
}
.cinema-chat-head strong { font-size: .88rem; }
.cinema-chat-head-actions { display: flex; align-items: center; gap: .25rem; }
.cinema-floating-toggle { color: var(--muted); font-size: .7rem; }
.cinema-chat-body { display: grid; gap: .6rem; padding: .65rem; }
.cinema-chat-panel.is-collapsed .cinema-chat-body { display: none; }
.cinema-viewers { display: grid; gap: .45rem; padding-bottom: .65rem; border-bottom: 1px solid var(--border); }
.cinema-subhead { display: flex; align-items: center; justify-content: space-between; gap: .5rem; font-size: .82rem; }
.cinema-viewer-count { color: var(--muted); font-size: .75rem; }
.cinema-viewer-list { display: flex; flex-wrap: wrap; gap: .35rem; max-height: 100px; overflow-y: auto; }
.cinema-reactions { display: flex; align-items: center; gap: .2rem; padding-bottom: .55rem; border-bottom: 1px solid var(--border); }
.cinema-reaction-btn { display: grid; place-items: center; width: 30px; height: 28px; padding: 0; border: 1px solid transparent; border-radius: 8px; background: transparent; cursor: pointer; font-size: 1rem; transition: background .15s ease, transform .15s ease; }
.cinema-reaction-btn:hover { background: var(--panel-2); transform: translateY(-1px); }
.cinema-viewer-chip { display: inline-flex; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; padding: .25rem .45rem; border-radius: 999px; background: var(--panel-2); color: var(--text); font-size: .74rem; }
.cinema-viewer-chip:first-letter { color: #16834c; }
.cinema-chat-list { display: grid; gap: .4rem; min-height: 95px; max-height: 260px; overflow-y: auto; padding: .1rem .15rem .1rem .05rem; }
.cinema-chat-message { display: grid; gap: .12rem; max-width: 95%; padding: .4rem .5rem; border: 1px solid var(--border); border-radius: 10px 10px 10px 3px; background: color-mix(in srgb, var(--text) 4%, var(--panel)); }
.cinema-chat-message.mine { justify-self: end; border-radius: 10px 10px 3px 10px; background: color-mix(in srgb, var(--accent) 14%, var(--panel)); }
.cinema-chat-who { color: var(--muted); font-size: .68rem; }
.cinema-chat-text { color: var(--text); font-size: .84rem; overflow-wrap: anywhere; }
.cinema-chat-compose { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: .35rem; padding-top: .1rem; }
.cinema-chat-input { width: 100%; min-width: 0; height: 36px; padding: .4rem .55rem; border: 1px solid var(--border); border-radius: 8px; background: var(--panel); color: var(--text); font-size: .82rem; line-height: 1.2; }
.cinema-chat-input::placeholder { color: var(--muted); opacity: .85; }
.cinema-chat-input:focus { border-color: var(--brand-2); box-shadow: 0 0 0 2px rgba(227, 53, 13, .14); }
.cinema-chat-compose .btn { min-height: 36px; padding: .4rem .65rem; font-size: .78rem; }
.cinema-invite-search { min-width: 0; padding: .55rem .65rem; border: 1px solid var(--border); border-radius: 9px; background: var(--panel-2); color: var(--text); }

/* ── Sala de voz (mesh WebRTC, "cara de Pokédex") ─────────────────────── */
.voice-room-panel {
  display: grid; gap: .8rem; margin: 1rem 0; padding: .9rem 1rem 1.1rem;
  border: 1px solid var(--border); border-radius: 16px;
  background: linear-gradient(160deg, color-mix(in srgb, var(--brand-2, var(--accent)) 8%, var(--panel)), var(--panel) 55%);
  border-top: 3px solid color-mix(in srgb, var(--brand-2, var(--accent)) 55%, var(--border));
}
.voice-room-head { align-items: flex-start; }
.voice-room-head h3 { display: flex; align-items: center; gap: .4rem; margin: .1rem 0 0; }
.voice-room-head-right { display: flex; flex-direction: column; align-items: flex-end; gap: .3rem; }
.voice-room-leds { padding: .2rem .35rem; border-radius: 999px; background: rgba(0,0,0,.15); }
.voice-room-controls { display: flex; flex-wrap: wrap; gap: .4rem; }
.voice-room-controls.hidden { display: none; }
.voice-mic-btn.is-muted, .voice-deaf-btn.is-muted { border-color: color-mix(in srgb, #e3350d 55%, var(--border)); color: #e3350d; }
.voice-noise-btn.is-on { border-color: color-mix(in srgb, #16834c 55%, var(--border)); color: #16834c; }

/* Layout de duas colunas: lista de canais na lateral (tipo Discord) + a
   chamada atual do lado direito. */
.voice-room-body { display: flex; align-items: flex-start; gap: .8rem; }
.voice-channel-sidebar {
  flex: 0 0 200px; display: grid; gap: .2rem; align-content: start;
  padding: .6rem; border: 1px solid var(--border); border-radius: 12px;
  background: color-mix(in srgb, var(--text) 3%, var(--panel));
  max-height: 420px; overflow-y: auto;
}
.voice-channel-group-label { font-size: .64rem; font-weight: 900; letter-spacing: .04em; text-transform: uppercase; color: var(--muted); padding: .5rem .3rem .2rem; }
.voice-channel-group-label:first-child { padding-top: .1rem; }
.voice-channel-group { display: grid; gap: .1rem; }
.voice-channel-block + .voice-channel-block { margin-top: .1rem; }
.voice-channel-row { display: flex; align-items: center; gap: .1rem; border-radius: 8px; border: 1px solid transparent; }
.voice-channel-row.is-active { background: color-mix(in srgb, var(--brand-2, var(--accent)) 16%, var(--panel-2)); border-color: color-mix(in srgb, var(--brand-2, var(--accent)) 45%, var(--border)); }
.voice-channel-join, .voice-channel-toggle, .voice-private-row, .voice-channel-member {
  font: inherit; color: var(--text); background: transparent; border: none; cursor: pointer; text-align: left;
}
.voice-channel-join {
  display: flex; align-items: center; gap: .45rem; flex: 1; min-width: 0;
  padding: .45rem .5rem; border-radius: 8px; font-size: .82rem; font-weight: 700;
}
.voice-channel-join:hover { background: var(--panel-2); }
.voice-channel-toggle { flex: 0 0 auto; width: 26px; height: 26px; display: grid; place-items: center; border-radius: 8px; margin-right: .2rem; color: var(--muted); font-size: .7rem; }
.voice-channel-toggle:hover { background: var(--panel-2); color: var(--text); }
.voice-channel-icon { font-size: .95rem; }
.voice-channel-label { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.voice-channel-count { flex: 0 0 auto; min-width: 18px; height: 18px; padding: 0 5px; display: inline-grid; place-items: center; border-radius: 10px; background: #16834c; color: #fff; font-size: .66rem; font-weight: 800; }
.voice-channel-count.hidden { display: none; }
.voice-channel-members { display: grid; gap: .05rem; padding: .1rem 0 .3rem .5rem; }
.voice-channel-member { display: flex; align-items: center; gap: .4rem; padding: .28rem .4rem; border-radius: 7px; font-size: .74rem; }
.voice-channel-member:hover { background: var(--panel-2); }
.voice-channel-member-avatar { width: 20px; height: 20px; border-radius: 50%; image-rendering: pixelated; background: var(--panel-2); }
.voice-channel-member-name { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.voice-mic-off-mini { font-size: .68rem; }
.voice-private-list { display: grid; gap: .1rem; max-height: 180px; overflow-y: auto; }
.voice-private-row { display: flex; align-items: center; gap: .45rem; width: 100%; padding: .35rem .5rem; border-radius: 8px; }
.voice-private-row:hover { background: var(--panel-2); }
.voice-private-avatar { width: 24px; height: 24px; border-radius: 50%; image-rendering: pixelated; background: var(--panel-2); }
.voice-private-name { flex: 1; font-size: .78rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--text); }
.voice-private-call-icon { font-size: .8rem; opacity: .75; }

.voice-channel-main { flex: 1; min-width: 0; display: grid; gap: .7rem; }
.voice-current-head { display: flex; align-items: center; gap: .5rem; }
.voice-current-title { font-weight: 900; font-size: .92rem; }
.voice-empty-state { display: grid; justify-items: center; gap: .3rem; padding: 1.6rem 1rem; border: 1px dashed var(--border); border-radius: 12px; color: var(--muted); text-align: center; }
.voice-empty-icon { font-size: 1.6rem; }
@media (max-width: 720px) {
  .voice-room-body { flex-direction: column; }
  .voice-channel-sidebar { flex: 1 1 auto; width: 100%; max-height: 260px; }
}

/* Grade de "trainer cards" — cada participante é um Pokémon-avatar redondo,
   igual ao mosaico de bolinhas que o Discord mostra numa call de voz. */
.voice-room-list { display: grid; gap: .7rem; }
.voice-grid { display: flex; flex-wrap: wrap; gap: .9rem 1rem; }
.voice-tile { display: grid; justify-items: center; gap: .3rem; width: 78px; padding: 0; border: none; background: none; cursor: default; }
.voice-tile:not(.is-static) { cursor: pointer; }
.voice-tile:not(.is-static):hover .voice-avatar-ring { transform: translateY(-2px); }
.voice-tile-name { font-size: .68rem; font-weight: 800; max-width: 78px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--text); }
.voice-tile.is-muted-for-me .voice-avatar-ring { filter: grayscale(.85); opacity: .55; }
.voice-tile.is-muted-for-me .voice-tile-name { text-decoration: line-through; color: var(--muted); }

.voice-avatar-ring {
  position: relative; width: 60px; height: 60px; border-radius: 50%;
  display: grid; place-items: center; background: var(--panel-2);
  border: 3px solid var(--border); transition: border-color .2s ease, box-shadow .2s ease, transform .15s ease;
}
.voice-avatar-ring.role-admin  { border-color: var(--brand); }
.voice-avatar-ring.role-mentor { border-color: var(--topic, #4f8cff); }
.voice-avatar-ring.role-mentee { border-color: color-mix(in srgb, var(--muted) 55%, var(--border)); }
.voice-avatar-ring.is-self { box-shadow: 0 0 0 2px color-mix(in srgb, var(--accent) 45%, transparent); }
.voice-avatar-sprite, .voice-dock-avatar { width: 44px; height: 44px; image-rendering: pixelated; object-fit: contain; }
.voice-avatar-ring.is-speaking { animation: voice-speak-glow 1.1s ease-in-out infinite; }
@keyframes voice-speak-glow {
  0%, 100% { box-shadow: 0 0 0 3px rgba(74, 222, 128, .55), 0 0 10px rgba(74, 222, 128, .35); }
  50%      { box-shadow: 0 0 0 5px rgba(74, 222, 128, .8), 0 0 18px rgba(74, 222, 128, .6); }
}
.voice-mic-badge {
  position: absolute; right: -3px; bottom: -3px; width: 20px; height: 20px; border-radius: 50%;
  background: #e3350d; color: #fff; display: grid; place-items: center; font-size: .62rem;
  border: 2px solid var(--panel);
}

/* Painel de detalhe (volume + silenciar-pra-mim) — abre ao tocar num avatar,
   em vez de deixar um slider por pessoa sempre visível (fica limpo com 14). */
.voice-detail { display: grid; gap: .5rem; padding: .65rem .75rem; border: 1px solid var(--border); border-radius: 12px; background: var(--panel-2); }
.voice-detail-head { display: flex; align-items: center; justify-content: space-between; gap: .5rem; }
.voice-detail-head strong { margin-right: .4rem; }
.voice-detail-row { display: flex; align-items: center; gap: .6rem; }
.voice-vol-slider { flex: 1; accent-color: color-mix(in srgb, var(--brand-2, var(--accent)) 70%, var(--text)); }
.voice-mute-for-me { padding: .28rem .5rem; font-size: .7rem; justify-self: start; }
.voice-mute-for-me.is-active { border-color: color-mix(in srgb, #e3350d 55%, var(--border)); color: #e3350d; }

/* Pokébola desenhada em CSS reaproveitada como ícone de "sala"/"desligar". */
.pokeball.sm { width: 14px; height: 14px; border-width: 1px; }
.pokeball.sm .pb-btn { width: 5px; height: 5px; border-width: 1px; }

/* Dock flutuante: fica visível em qualquer aba enquanto a chamada durar,
   igual ao indicador de "conectado" do Discord. */
.voice-dock {
  position: fixed; right: 1rem; bottom: 1rem; z-index: 65;
  display: flex; align-items: center; gap: .35rem;
  padding: .35rem .5rem .35rem .35rem; border-radius: 999px; cursor: pointer;
  background: var(--panel); border: 1px solid var(--border); box-shadow: 0 4px 12px rgba(0,0,0,.25);
}
.voice-dock-avatar { width: 30px; height: 30px; border-radius: 50%; border: 2px solid var(--brand); background: var(--panel-2); }
.voice-dock-label { font-size: .72rem; font-weight: 800; color: var(--muted); padding: 0 .2rem; white-space: nowrap; }
.voice-dock-btn { width: 34px; height: 34px; padding: 0; border-radius: 50%; font-size: 1rem; line-height: 1; border: 1px solid var(--border); background: var(--panel-2); cursor: pointer; display: grid; place-items: center; }
.voice-dock-btn:hover { background: var(--panel); }
.voice-dock-leave { background: color-mix(in srgb, #e3350d 12%, var(--panel-2)); }
@media (max-width: 560px) { .voice-dock { right: .6rem; bottom: max(.6rem, env(safe-area-inset-bottom)); } .voice-dock-label { display: none; } }

/* ── Compartilhamento de tela dentro do canal (multi-transmissão) ───────── */
.voice-share-btn.is-on { border-color: color-mix(in srgb, #16834c 55%, var(--border)); color: #16834c; }
.voice-screen-badge-mini { font-size: .68rem; }
.voice-screen-grid { display: flex; flex-wrap: wrap; gap: .6rem; margin-bottom: .2rem; }
.voice-screen-grid.hidden { display: none; }
.voice-screen-tile {
  position: relative; width: 200px; aspect-ratio: 16 / 9; padding: 0; border: 1px solid var(--border); border-radius: 10px;
  overflow: hidden; background: #0b0b10; cursor: pointer;
}
.voice-screen-tile-video { width: 100%; height: 100%; object-fit: cover; display: block; background: #0b0b10; }
.voice-screen-tile-loading { position: absolute; inset: 0; display: grid; place-items: center; color: #cbd5e1; font-size: .74rem; font-weight: 700; background: rgba(0,0,0,.35); }
.voice-screen-tile-name {
  position: absolute; left: .35rem; bottom: .3rem; padding: .12rem .45rem; border-radius: 999px;
  background: rgba(0,0,0,.62); color: #fff; font-size: .68rem; font-weight: 800; max-width: calc(100% - 2.2rem);
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.voice-screen-tile-stop {
  position: absolute; right: .3rem; top: .3rem; width: 24px; height: 24px; border-radius: 50%; border: none;
  background: rgba(227, 53, 13, .85); color: #fff; font-size: .7rem; cursor: pointer; display: grid; place-items: center;
}

/* Tela cheia própria (overlay fixo) com navegação ←/→ entre transmissões. */
.voice-fullscreen-overlay { position: fixed; inset: 0; z-index: 1150; display: grid; grid-template-rows: auto 1fr; background: rgba(4, 6, 10, .96); }
.voice-fullscreen-head { display: flex; align-items: center; gap: .6rem; padding: .7rem 1rem; color: #fff; }
.voice-fullscreen-head strong { flex: 0 0 auto; }
.voice-fullscreen-head .muted { color: #9aa5b3; flex: 1; }
.voice-fullscreen-close { flex: 0 0 auto; }
.voice-fullscreen-stage { position: relative; display: grid; place-items: center; min-height: 0; padding: 0 3.2rem 1rem; }
.voice-fullscreen-video { max-width: 100%; max-height: 100%; width: auto; height: auto; border-radius: 8px; }
.voice-fullscreen-nav {
  position: absolute; top: 50%; transform: translateY(-50%); width: 48px; height: 48px; border-radius: 50%;
  border: 1px solid rgba(255,255,255,.25); background: rgba(255,255,255,.08); color: #fff; font-size: 1.1rem; cursor: pointer;
}
.voice-fullscreen-nav:hover { background: rgba(255,255,255,.18); }
.voice-fullscreen-prev { left: 1rem; }
.voice-fullscreen-next { right: 1rem; }
@media (max-width: 640px) {
  .voice-screen-tile { width: 42vw; }
  .voice-fullscreen-stage { padding: 0 .3rem 1rem; }
  .voice-fullscreen-nav { width: 38px; height: 38px; }
}

.cinema-invite-modal { min-width: min(520px, 85vw); }
.cinema-invite-modal > p { margin-top: -.5rem; }
.cinema-invite-list { display: grid; gap: .45rem; max-height: 55vh; overflow-y: auto; margin-top: .75rem; }
.cinema-invite-row { display: flex; align-items: center; justify-content: space-between; gap: .75rem; padding: .55rem .65rem; border: 1px solid var(--border); border-radius: 10px; background: var(--panel-2); }
.cinema-invite-person { display: grid; gap: .1rem; min-width: 0; }
.cinema-invite-person strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cinema-invite-prompt { position: fixed; z-index: 1200; inset: 0; display: grid; place-items: center; padding: 1rem; background: rgba(4, 9, 17, .72); backdrop-filter: blur(5px); }
.cinema-invite-card { width: min(480px, 100%); padding: 1.4rem; border: 1px solid var(--border); border-radius: 18px; background: var(--panel); color: var(--text); box-shadow: 0 24px 70px rgba(0, 0, 0, .3); }
.cinema-invite-card h2 { margin: .35rem 0 .5rem; }
.cinema-invite-card .actions { display: flex; justify-content: flex-end; gap: .55rem; margin-top: 1rem; }
@media (max-width: 680px) {
  .cinema-host { width: 100%; padding: .85rem .85rem 1.2rem; }
  .cinema-head { gap: .7rem; }
  .cinema-head-badge { width: 2.6rem; height: 2.6rem; font-size: 1.3rem; border-radius: 13px; }
  .cinema-head h2 { font-size: 1.3rem; }
  .cinema-status { order: 3; flex-basis: 100%; max-width: 100%; overflow: hidden; text-overflow: ellipsis; }
  .cinema-video { max-height: 52vh; }
  .cinema-layout { grid-template-columns: minmax(0, 1fr); }
  .cinema-screen-controls { align-items: stretch; }
  .cinema-dock { justify-content: space-between; }
  .cinema-dock:not(.cinema-dock-floating) .cinema-dock-btn { flex: 1 1 22%; }
  .cinema-screen-quality-label { width: 100%; margin-left: 0; justify-content: space-between; }
  .cinema-screen-quality { flex: 1; }
  .cinema-screen-head { align-items: flex-start; flex-wrap: wrap; }
  .cinema-settings-grid, .cinema-quiz-option-inputs, .cinema-quiz-options { grid-template-columns: minmax(0, 1fr); }
  .cinema-private-mode-grid, .cinema-private-rewards { grid-template-columns: minmax(0, 1fr); }
  .cinema-schedule-form { grid-template-columns: minmax(0, 1fr); }
  .cinema-schedule-row { align-items: flex-start; flex-direction: column; }
  .cinema-quiz-admin-row { align-items: stretch; flex-direction: column; }
  .cinema-quiz-select, .cinema-quiz-reward { width: 100%; }
  .cinema-stage-meta { align-items: flex-start; flex-direction: column; gap: .15rem; }
  .cinema-controls { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .cinema-controls .btn { width: 100%; min-height: 42px; }
  .cinema-watch { width: 100%; }
  .cinema-chat-panel { width: 100%; }
  .cinema-chat-list { min-height: 75px; max-height: 220px; }
  .cinema-invite-card .actions { flex-direction: column-reverse; }
  .cinema-invite-card .actions .btn { width: 100%; }
  .cinema-upload { align-items: stretch; flex-direction: column; }
  .cinema-upload .btn, .cinema-upload input { width: 100%; max-width: none; }
}

/* ── Cosméticos da Loja: identidade visual real, sem placeholders ── */
#user-avatar.frame-gold {
  border: 3px solid #f5c84b !important;
  box-shadow: 0 0 0 2px #6b4a18, 0 0 0 4px rgba(255, 215, 93, .48), 0 0 18px rgba(255, 203, 5, .72) !important;
  filter: saturate(1.12);
}
#user-avatar.frame-shiny {
  border: 3px solid #fff3a3 !important;
  box-shadow: 0 0 0 2px #7f54df, 0 0 0 4px rgba(94, 217, 255, .58), 0 0 20px rgba(255, 143, 230, .82) !important;
  animation: shiny-glow 2.2s ease-in-out infinite, cosmetic-rainbow 5s linear infinite;
}
@keyframes cosmetic-rainbow {
  0% { filter: hue-rotate(0deg) saturate(1.2); }
  50% { filter: hue-rotate(35deg) saturate(1.45); }
  100% { filter: hue-rotate(0deg) saturate(1.2); }
}
#user-name.name-fire {
  color: #ff8664 !important;
  text-shadow: 0 0 10px rgba(255, 86, 55, .68);
}
#user-name.name-water {
  color: #78d8ff !important;
  text-shadow: 0 0 10px rgba(63, 169, 245, .72);
}

.emote-badge {
  width: 56px;
  height: 56px;
  padding: 4px;
  border: 2px solid #f5c84b;
  background: radial-gradient(circle at 32% 24%, #315684, #101d38 70%);
  box-shadow: 0 4px 16px rgba(0, 0, 0, .45), 0 0 18px rgba(245, 200, 75, .34);
}
.emote-badge-visual,
.reaction-button-visual,
.ann-reaction-visual,
.react-float-visual {
  display: block;
  object-fit: contain;
  image-rendering: pixelated;
}
.emote-badge-visual { width: 46px; height: 46px; }
.reaction-button-visual,
.ann-reaction-visual { width: 25px; height: 25px; }
.react-float-visual { width: 50px; height: 50px; }
.react-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 2.1rem;
  min-height: 2rem;
}

/* Pré-visualizações da vitrine: cada cosmético comunica seu efeito. */
.shopx-cosmetic-preview {
  display: grid;
  place-items: center;
  width: 48px;
  height: 48px;
  font-family: var(--font-display);
  font-size: 1.45rem;
  font-weight: 900;
}
.shopx-frame-preview {
  border: 3px solid #f5c84b;
  border-radius: 50%;
  background: radial-gradient(circle, #304f7e 0 36%, #172844 37% 100%);
  color: #ffe58b;
  box-shadow: 0 0 0 2px #6b4a18, 0 0 14px rgba(245, 200, 75, .62);
}
.shopx-frame-preview.shiny {
  border-color: #fff0a0;
  background: linear-gradient(135deg, #ff8fcf, #8cecff 48%, #9f7cff);
  color: #fff;
  box-shadow: 0 0 0 2px #6244a8, 0 0 16px rgba(155, 224, 255, .8);
  animation: cosmetic-rainbow 5s linear infinite;
}
.shopx-name-preview {
  border: 1px solid rgba(255, 255, 255, .18);
  border-radius: 12px;
  background: #102344;
}
.shopx-name-preview.name-fire { color: #ff8664; text-shadow: 0 0 10px rgba(255, 86, 55, .68); }
.shopx-name-preview.name-water { color: #78d8ff; text-shadow: 0 0 10px rgba(63, 169, 245, .72); }
.shopx-cosmetic-sprite,
.shopx-theme-sprite {
  object-fit: contain;
  image-rendering: pixelated;
}

/* O selo do emote e a paleta de reações compartilhavam o mesmo canto.
   Ao comprar/equipar um emote, o selo ficava por cima dos botões e bloqueava
   os cliques. O selo é apenas indicador; a paleta continua interativa. */
.react-dock { z-index: 70; }
.emote-badge {
  left: 1rem;
  bottom: 4.75rem;
  z-index: 59;
  pointer-events: none;
}
@media (max-width: 560px) {
  .emote-badge { left: .6rem; bottom: 4.25rem; transform: scale(.9); transform-origin: bottom left; }
}

/* Molduras da loja também aparecem no Cartão de Treinador. */
.tc-badge.tc-frame-gold {
  border: 4px solid #f5c84b !important;
  background: radial-gradient(120% 90% at 50% 0%, rgba(255, 244, 174, .42), rgba(255, 180, 24, .14));
  box-shadow: 0 0 0 2px #6b4a18, 0 0 0 5px rgba(255, 215, 93, .42), 0 0 22px rgba(255, 203, 5, .72), inset 0 0 20px rgba(255, 247, 184, .28) !important;
}
.tc-badge.tc-frame-gold::after,
.tc-badge.tc-frame-shiny::after {
  position: absolute;
  top: 3px;
  right: 5px;
  z-index: 3;
  font-size: .85rem;
  line-height: 1;
  pointer-events: none;
}
.tc-badge.tc-frame-gold::after { content: '★'; color: #fff0a0; text-shadow: 0 1px 3px #6b4a18; }
.tc-badge.tc-frame-shiny {
  border: 4px solid #fff3a3 !important;
  background: linear-gradient(145deg, rgba(255, 143, 230, .3), rgba(140, 236, 255, .24) 48%, rgba(159, 124, 255, .3));
  box-shadow: 0 0 0 2px #6244a8, 0 0 0 5px rgba(94, 217, 255, .48), 0 0 24px rgba(255, 143, 230, .8), inset 0 0 20px rgba(255, 255, 255, .25) !important;
  animation: tc-frame-rainbow 5s linear infinite;
}
.tc-badge.tc-frame-shiny::after { content: '✦'; color: #fff; text-shadow: 0 0 7px #ff8fe6; }
@keyframes tc-frame-rainbow {
  0% { filter: hue-rotate(0deg) saturate(1.1); }
  50% { filter: hue-rotate(32deg) saturate(1.35); }
  100% { filter: hue-rotate(0deg) saturate(1.1); }
}

/* Redesign da lista de emojis: centralizada, maior e adaptável ao mobile. */
.react-dock {
  left: 1rem;
  bottom: max(1rem, env(safe-area-inset-bottom));
  width: min(460px, calc(100vw - 1rem));
  transform: none;
  flex-direction: column;
  align-items: flex-start;
  gap: .5rem;
  z-index: 70;
}
.react-panel {
  width: 100%;
  box-sizing: border-box;
  display: grid;
  gap: .55rem;
  padding: .72rem;
  border: 1px solid color-mix(in srgb, var(--accent) 45%, var(--border));
  border-radius: 20px;
  background: linear-gradient(145deg, color-mix(in srgb, var(--panel) 94%, var(--accent)), var(--panel-2));
  box-shadow: 0 14px 32px rgba(0, 0, 0, .38), 0 0 0 1px rgba(255,255,255,.06) inset;
}
.react-panel-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: .75rem;
  padding: 0 .2rem .15rem;
  color: var(--text);
  font-size: .76rem;
}
.react-panel-head span { color: var(--muted); font-size: .67rem; }
.react-panel-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(44px, 1fr));
  gap: .42rem;
  width: 100%;
}
.react-btn {
  width: 100%;
  min-width: 0;
  min-height: 46px;
  padding: .35rem;
  border: 1px solid color-mix(in srgb, var(--border) 72%, transparent);
  border-radius: 13px;
  background: color-mix(in srgb, var(--panel-2) 88%, #fff 12%);
  color: var(--text);
  box-shadow: 0 3px 8px rgba(0, 0, 0, .16);
}
.react-btn:hover,
.react-btn:focus-visible {
  border-color: var(--accent);
  background: color-mix(in srgb, var(--accent) 18%, var(--panel-2));
  transform: translateY(-2px) scale(1.04);
}
.react-btn.is-equipped {
  border-color: var(--accent);
  box-shadow: 0 0 0 2px color-mix(in srgb, var(--accent) 24%, transparent), 0 4px 12px rgba(0, 0, 0, .22);
}
.reaction-button-visual {
  display: grid;
  place-items: center;
  width: 32px;
  height: 32px;
  margin: auto;
  font-size: 1.45rem;
  line-height: 1;
}
.react-fab {
  width: 50px;
  height: 50px;
  border: 2px solid color-mix(in srgb, var(--accent) 70%, var(--border));
  background: linear-gradient(145deg, var(--panel-2), var(--panel));
  color: var(--text);
  box-shadow: 0 8px 20px rgba(0, 0, 0, .34), 0 0 0 4px color-mix(in srgb, var(--accent) 12%, transparent);
}
@media (max-width: 560px) {
  .react-dock { left: .6rem; bottom: max(.6rem, env(safe-area-inset-bottom)); width: calc(100vw - 1.2rem); }
  .react-panel { padding: .58rem; border-radius: 17px; }
  .react-panel-grid { grid-template-columns: repeat(auto-fit, minmax(40px, 1fr)); gap: .3rem; }
  .react-btn { min-height: 42px; border-radius: 11px; }
  .reaction-button-visual { width: 29px; height: 29px; font-size: 1.25rem; }
}

/* Reações dos avisos: compactas e independentes da paleta ao vivo. */
.ann-reacts {
  display: flex;
  align-items: center;
  justify-content: flex-start;
  flex-wrap: wrap;
  gap: .4rem;
  margin: .65rem 0 .15rem;
  padding-top: .55rem;
  border-top: 1px solid color-mix(in srgb, var(--border) 70%, transparent);
}
.ann-reacts .react-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: auto;
  min-width: 42px;
  min-height: 32px;
  padding: .28rem .5rem;
  border: 1px solid color-mix(in srgb, var(--border) 85%, transparent);
  border-radius: 999px;
  background: color-mix(in srgb, var(--panel-2) 78%, transparent);
  color: var(--text);
  box-shadow: none;
  font-size: .86rem;
  line-height: 1;
  transform: none;
}
.ann-reacts .react-btn:hover,
.ann-reacts .react-btn:focus-visible {
  border-color: var(--accent);
  background: color-mix(in srgb, var(--accent) 13%, var(--panel-2));
  transform: translateY(-1px);
}
.ann-reacts .react-btn.is-mine {
  border-color: var(--accent);
  background: color-mix(in srgb, var(--accent) 20%, var(--panel-2));
  box-shadow: 0 0 0 2px color-mix(in srgb, var(--accent) 14%, transparent);
}
.ann-reacts .ann-reaction-visual {
  display: grid;
  place-items: center;
  width: 21px;
  height: 21px;
  margin: 0;
  font-size: 1rem;
  line-height: 1;
}
.ann-reacts .ann-reaction-visual.reaction-sprite { image-rendering: pixelated; }
.ann-reacts .rc { margin-left: .25rem; color: var(--muted); font-size: .72rem; font-weight: 800; }
.ann-reacts .react-btn.is-mine .rc { color: var(--text); }
@media (max-width: 560px) {
  .ann-reacts { gap: .3rem; padding-top: .45rem; }
  .ann-reacts .react-btn { min-width: 38px; min-height: 30px; padding: .22rem .4rem; }
  .ann-reacts .ann-reaction-visual { width: 19px; height: 19px; }
}

/* ═════════════════════════════════════════════════════════════
   Central de presença / engajamento do portal
   ═════════════════════════════════════════════════════════════ */
.engagement-hub {
  margin: 1rem 0 1.2rem;
  padding: 1rem;
  border: 1px solid color-mix(in srgb, var(--accent) 34%, var(--border));
  border-radius: 20px;
  background: linear-gradient(145deg, color-mix(in srgb, var(--accent) 9%, var(--panel)), var(--panel));
  box-shadow: 0 12px 30px rgba(0, 0, 0, .15);
}
.engagement-loading,
.engagement-error { padding: .8rem; color: var(--muted); font-size: .86rem; }
.engagement-head,
.engagement-card-head,
.engagement-next,
.engagement-title-box {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: .8rem;
}
.engagement-head h2 { margin: .08rem 0 .1rem; font-size: 1.2rem; }
.engagement-head p { margin: 0; }
.engagement-head-actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: .4rem; }
.engagement-metrics {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: .5rem;
  margin: .85rem 0;
}
.engagement-metric {
  display: grid;
  grid-template-columns: auto 1fr;
  align-items: center;
  column-gap: .42rem;
  min-width: 0;
  padding: .62rem .68rem;
  border: 1px solid var(--border);
  border-radius: 13px;
  background: color-mix(in srgb, var(--panel-2) 76%, transparent);
}
.engagement-metric-icon { grid-row: span 2; font-size: 1.25rem; }
.engagement-metric strong { font-size: 1.05rem; line-height: 1.05; }
.engagement-metric .small { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.engagement-next {
  padding: .75rem .85rem;
  border: 1px solid color-mix(in srgb, var(--brand-2) 45%, var(--border));
  border-radius: 14px;
  background: color-mix(in srgb, var(--brand-2) 10%, var(--panel));
}
.engagement-next-copy { display: grid; gap: .12rem; min-width: 0; }
.engagement-next-copy strong { font-size: .95rem; }
.engagement-next-pill,
.engagement-count,
.engagement-ranking-toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: fit-content;
  padding: .3rem .55rem;
  border: 1px solid var(--border);
  border-radius: 999px;
  background: var(--panel-2);
  color: var(--muted);
  font-size: .74rem;
  font-weight: 800;
  white-space: nowrap;
}
.engagement-grid,
.engagement-social-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: .65rem;
  margin-top: .65rem;
}
.engagement-social-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.engagement-card {
  min-width: 0;
  padding: .82rem;
  border: 1px solid var(--border);
  border-radius: 15px;
  background: color-mix(in srgb, var(--panel-2) 58%, var(--panel));
}
.engagement-card h3 { display: inline; margin: 0; font-size: .96rem; }
.engagement-card p { margin: .4rem 0 .7rem; }
.engagement-card-icon { margin-right: .35rem; font-size: 1.15rem; }
.engagement-chest { display: flex; flex-direction: column; justify-content: space-between; }
.engagement-card-head > div:first-child { display: flex; align-items: center; min-width: 0; }
.engagement-achievements { display: grid; gap: .35rem; margin-top: .55rem; }
.engagement-achievement {
  display: grid;
  grid-template-columns: 30px 1fr;
  align-items: center;
  gap: .45rem;
  padding: .35rem .42rem;
  opacity: .56;
  border-radius: 10px;
}
.engagement-achievement.unlocked { opacity: 1; background: color-mix(in srgb, var(--accent) 9%, transparent); }
.engagement-achievement-icon { display: grid; place-items: center; font-size: 1.12rem; }
.engagement-achievement strong,
.engagement-achievement span { display: block; }
.engagement-achievement strong { font-size: .79rem; }
.engagement-achievement .small { font-size: .7rem; line-height: 1.2; }
.engagement-weekly-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: .35rem; }
.engagement-weekly-grid .engagement-metric { display: block; padding: .45rem; text-align: center; }
.engagement-weekly-grid .engagement-metric-icon { display: block; margin-bottom: .15rem; }
.engagement-weekly-grid .engagement-metric strong,
.engagement-weekly-grid .engagement-metric .small { display: block; }
.engagement-weekly-note { margin-bottom: 0 !important; }
.engagement-rank-list,
.engagement-recognition-list { display: grid; gap: .35rem; margin-top: .65rem; }
.engagement-rank-row,
.engagement-recognition-row {
  display: grid;
  grid-template-columns: 30px minmax(0, 1fr) auto;
  align-items: center;
  gap: .42rem;
  padding: .42rem .48rem;
  border-radius: 10px;
  background: color-mix(in srgb, var(--panel) 65%, transparent);
}
.engagement-rank-row.me { outline: 1px solid color-mix(in srgb, var(--accent) 60%, transparent); background: color-mix(in srgb, var(--accent) 10%, var(--panel)); }
.engagement-rank-pos { color: var(--accent); font-weight: 900; }
.engagement-rank-row strong,
.engagement-recognition-row strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: .8rem; }
.engagement-title-box { margin-top: .65rem; padding: .72rem .82rem; border: 1px dashed var(--border); border-radius: 14px; }
.engagement-title-box p { margin: .15rem 0 0; }
.engagement-title-select { min-width: 190px; max-width: 48%; }

@media (max-width: 900px) {
  .engagement-grid { grid-template-columns: 1fr 1fr; }
  .engagement-grid .engagement-card:last-child { grid-column: 1 / -1; }
}
@media (max-width: 640px) {
  .engagement-hub { padding: .72rem; border-radius: 16px; }
  .engagement-head { align-items: flex-start; flex-direction: column; }
  .engagement-head-actions { justify-content: flex-start; }
  .engagement-metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .engagement-grid,
  .engagement-social-grid { grid-template-columns: 1fr; }
  .engagement-grid .engagement-card:last-child { grid-column: auto; }
  .engagement-weekly-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .engagement-next,
  .engagement-title-box { align-items: flex-start; flex-direction: column; }
  .engagement-title-select { width: 100%; max-width: none; }
}

/* ═════════ GEN III · POLIMENTO GLOBAL DAS TELAS POKÉMON ═════════ */
.pkmn-xp-panel { display: grid; gap: .35rem; margin: .7rem 0; padding: .65rem .75rem; border: 1px solid color-mix(in srgb, var(--brand-2) 42%, var(--border)); border-radius: 13px; background: linear-gradient(135deg, color-mix(in srgb, var(--brand-2) 11%, var(--panel)), var(--panel)); }
.pkmn-xp-top { display: flex; align-items: center; justify-content: space-between; gap: .6rem; color: var(--text); font-size: .78rem; }
.pkmn-xp-top span { color: var(--accent); font-variant-numeric: tabular-nums; text-align: right; }
.pkmn-xp-track, .bag-pokemon-xp { display: block; overflow: hidden; border: 1px solid color-mix(in srgb, var(--brand-2) 38%, var(--border)); border-radius: 999px; background: color-mix(in srgb, var(--bg) 80%, #000); }
.pkmn-xp-track { height: 10px; }
.pkmn-xp-fill, .bag-pokemon-xp-fill { display: block; height: 100%; border-radius: inherit; background: linear-gradient(90deg, #4ac6ff, #8ef0c0); box-shadow: 0 0 12px color-mix(in srgb, #4ac6ff 45%, transparent); transition: width .25s ease; }
.bag-pokemon-xp { width: min(100%, 92px); height: 5px; margin-top: .14rem; }
.bag-pokemon-xp-label { color: var(--muted); font: 700 .56rem var(--font-mono); font-variant-numeric: tabular-nums; }
.nature-npc-modal { display: grid; gap: 1rem; width: min(680px, calc(100vw - 2rem)); padding: .25rem; color: var(--text); }
.nature-npc-hero { display: grid; grid-template-columns: 96px minmax(0, 1fr); align-items: center; gap: 1rem; padding: 1rem; border: 1px solid color-mix(in srgb, var(--brand-2) 45%, var(--border)); border-radius: 18px; background: radial-gradient(circle at 10% 20%, color-mix(in srgb, var(--brand-2) 20%, transparent), transparent 55%), var(--panel-2); }
.nature-npc-sprite { width: 88px; height: 88px; object-fit: contain; image-rendering: pixelated; filter: drop-shadow(0 7px 6px rgba(0,0,0,.35)); }
.nature-npc-fallback { display: grid; place-items: center; width: 88px; height: 88px; font-size: 3.2rem; }
.nature-npc-hero h3 { margin: .2rem 0 0; color: var(--text); font-size: clamp(1.15rem, 3vw, 1.65rem); }
.nature-dialogue { margin: 0; padding: .9rem 1rem; border-left: 3px solid var(--accent); border-radius: 0 12px 12px 0; color: var(--text); background: color-mix(in srgb, var(--accent) 8%, var(--panel)); line-height: 1.6; }
.nature-npc-modal .actions { justify-content: flex-end; margin-top: .2rem; }
.pokemon-mural-modal { display: flex; flex-direction: column; gap: .65rem; width: min(1040px, calc(100vw - 2rem)); }
.mural-heading { display: flex; align-items: end; justify-content: space-between; gap: .8rem; }
.mural-heading h3 { margin: .2rem 0 0; color: var(--text); }
.mural-total { padding: .35rem .6rem; border: 1px solid color-mix(in srgb, var(--accent) 45%, var(--border)); border-radius: 999px; color: var(--accent); font: 800 .64rem var(--font-mono); white-space: nowrap; }
.mural-filters { display: grid; grid-template-columns: minmax(0, 1fr) minmax(190px, .55fr) auto; align-items: center; gap: .5rem; }
.pokemon-mural-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(116px, 1fr)); gap: .5rem; max-height: 58vh; overflow: auto; padding: .2rem; }
.mural-card { position: relative; display: grid; justify-items: center; gap: .08rem; min-width: 0; padding: .48rem .3rem .55rem; border: 1px solid var(--border); border-radius: 14px; color: var(--text); background: linear-gradient(145deg, var(--panel), var(--panel-2)); cursor: pointer; font: inherit; text-align: center; transition: transform .16s ease, border-color .16s ease, box-shadow .16s ease; }
.mural-card:hover, .mural-card:focus-visible { border-color: var(--brand-2); box-shadow: 0 8px 18px rgba(0,0,0,.2); outline: none; transform: translateY(-2px); }
.mural-card:not(.caught) { opacity: .65; filter: grayscale(.75); cursor: default; }
.mural-card.caught { border-color: color-mix(in srgb, var(--t-grass) 48%, var(--border)); }
.mural-card-generation { position: absolute; top: .35rem; right: .4rem; color: var(--accent); font: 800 .53rem var(--font-mono); }
.mural-card-sprite { width: 66px; height: 66px; object-fit: contain; image-rendering: pixelated; }
.mural-card-sprite.silhouette { filter: brightness(0) saturate(0); opacity: .62; }
.mural-card-number, .mural-card-status { color: var(--muted); font: 700 .57rem var(--font-mono); }
.mural-card strong { max-width: 100%; overflow: hidden; color: var(--text); font-size: .72rem; text-overflow: ellipsis; white-space: nowrap; }
.modal, .modal :is(h1, h2, h3, h4, p, strong, label, span, button) { color: var(--text); }
.modal .muted, .modal .small.muted { color: var(--muted) !important; }
.modal :is(input, select, textarea) { color: var(--text); background-color: color-mix(in srgb, var(--bg) 88%, var(--panel)); border-color: var(--border); }
.modal :is(input, select, textarea)::placeholder { color: var(--muted); opacity: .9; }
.modal .btn { min-height: 34px; padding: .48rem .78rem; font-size: .76rem; line-height: 1.2; }

/* ═════════════════════════════════════════════════════════════
   MENTORIA · CENTRO DE JORNADA (redesign)
   Entrada mais clara, ações compactas e composição responsiva.
   Tudo usa os tokens do portal para manter contraste em todos os temas.
   ═════════════════════════════════════════════════════════════ */
#tab-mentoria {
  display: grid;
  grid-template-columns: minmax(0, 1.42fr) minmax(270px, .78fr);
  gap: 1rem;
  align-items: start;
}
#tab-mentoria > #mentor-review-banner,
#tab-mentoria > #mentoria-overview,
#tab-mentoria > #trainer-card,
#tab-mentoria > #men-engagement,
#tab-mentoria > #men-daily,
#tab-mentoria > #men-missions-host,
#tab-mentoria > .men-archive { grid-column: 1 / -1; }
#tab-mentoria > .men-today,
#tab-mentoria > #men-roadmap { margin-top: 0; }
#tab-mentoria > .men-today { grid-column: 1; min-width: 0; }
#tab-mentoria > #men-roadmap { grid-column: 2; min-width: 0; }
#tab-mentoria > #men-missions-host,
#tab-mentoria > .men-archive { margin-top: .15rem; }

.mentoria-overview {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(230px, .7fr);
  grid-template-areas:
    "main progress"
    "actions actions";
  gap: 1rem;
  overflow: hidden;
  padding: 1.05rem;
  border: 1px solid color-mix(in srgb, var(--topic) 42%, var(--border));
  border-radius: 22px;
  background:
    radial-gradient(420px 180px at 0% 0%, color-mix(in srgb, var(--brand-2) 22%, transparent), transparent 70%),
    radial-gradient(340px 220px at 100% 100%, color-mix(in srgb, var(--topic) 18%, transparent), transparent 72%),
    linear-gradient(135deg, color-mix(in srgb, var(--panel) 94%, #071124), var(--panel-2));
  box-shadow: 0 15px 34px rgba(3, 7, 18, .22), inset 0 1px 0 rgba(255,255,255,.07);
}
.mentoria-overview::after {
  content: '';
  position: absolute;
  width: 190px; height: 190px;
  right: -72px; top: -86px;
  border: 12px solid color-mix(in srgb, var(--accent) 16%, transparent);
  border-radius: 50%;
  box-shadow: 0 0 0 9px color-mix(in srgb, var(--accent) 7%, transparent);
  pointer-events: none;
}
.mentoria-overview-main {
  grid-area: main;
  display: flex;
  align-items: center;
  gap: .9rem;
  min-width: 0;
}
.mentoria-overview-mascot {
  position: relative;
  display: grid;
  place-items: center;
  width: 92px; height: 92px;
  flex: 0 0 92px;
  border: 1px solid color-mix(in srgb, var(--accent) 48%, var(--border));
  border-radius: 24px;
  background: radial-gradient(circle at 50% 32%, color-mix(in srgb, var(--accent) 25%, var(--panel-2)), var(--panel));
  box-shadow: inset 0 0 0 5px rgba(255,255,255,.035), 0 8px 20px rgba(0,0,0,.22);
}
.mo-mascot { width: 78px; height: 78px; object-fit: contain; image-rendering: pixelated; filter: drop-shadow(0 6px 5px rgba(0,0,0,.35)); }
.mo-mascot-status { position: absolute; right: 5px; bottom: 2px; color: var(--call); font-size: .85rem; text-shadow: 0 0 8px color-mix(in srgb, var(--call) 70%, transparent); }
.mentoria-overview-copy { min-width: 0; }
.mentoria-overview-copy h1 { margin: .12rem 0 .15rem; font-size: clamp(1.45rem, 3vw, 2rem); line-height: 1.05; }
.mo-lead { margin: 0; color: var(--muted); line-height: 1.4; max-width: 58ch; }
.mo-chips { display: flex; flex-wrap: wrap; gap: .35rem; margin-top: .65rem; }
.mo-chip {
  display: inline-flex; align-items: center;
  max-width: 100%; padding: .25rem .55rem;
  border: 1px solid var(--border); border-radius: 999px;
  color: var(--muted); background: color-mix(in srgb, var(--panel-2) 80%, transparent);
  font-size: .7rem; font-weight: 800; white-space: nowrap;
}
.mo-chip.is-live { color: #8bf2ba; border-color: color-mix(in srgb, var(--call) 55%, var(--border)); background: color-mix(in srgb, var(--call) 12%, transparent); }
.mentoria-overview-progress {
  grid-area: progress;
  display: flex; align-items: center; gap: .75rem;
  min-width: 0; padding: .7rem;
  border: 1px solid color-mix(in srgb, var(--border) 80%, transparent);
  border-radius: 16px;
  background: color-mix(in srgb, var(--bg) 32%, transparent);
}
.mo-progress-ring {
  --mo-pct: 0%;
  display: grid; place-items: center;
  width: 84px; height: 84px; flex: 0 0 84px;
  border-radius: 50%;
  background: conic-gradient(var(--accent) var(--mo-pct), color-mix(in srgb, var(--border) 75%, transparent) 0);
  box-shadow: 0 0 18px color-mix(in srgb, var(--accent) 16%, transparent);
}
.mo-progress-ring::before {
  content: ''; grid-area: 1 / 1;
  width: 66px; height: 66px; border-radius: 50%;
  background: var(--panel); border: 1px solid var(--border);
}
.mo-progress-ring > * { grid-area: 1 / 1; position: relative; z-index: 1; text-align: center; }
.mo-progress-ring strong { margin-top: -.45rem; font-size: 1.18rem; color: var(--text); }
.mo-progress-ring span { margin-top: 1.15rem; color: var(--muted); font-size: .56rem; font-weight: 800; text-transform: uppercase; letter-spacing: .06em; }
.mo-progress-copy { display: grid; gap: .2rem; min-width: 0; }
.mo-progress-copy > strong { font-size: .9rem; }
.mo-progress-copy > .small { line-height: 1.35; }
.mo-mini-stats { display: flex; flex-wrap: wrap; gap: .55rem; margin-top: .25rem; }
.mo-mini-stats span { color: var(--accent); font-size: .78rem; }
.mo-mini-stats small { color: var(--muted); font-size: .68rem; }
.mentoria-quick-actions {
  grid-area: actions;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(108px, 1fr));
  gap: .45rem;
  position: relative; z-index: 1;
}
.mentoria-quick-action {
  display: inline-flex; align-items: center; justify-content: center; gap: .36rem;
  min-width: 0; min-height: 38px; padding: .42rem .55rem;
  border: 1px solid var(--border); border-radius: 11px;
  background: color-mix(in srgb, var(--panel-2) 82%, transparent);
  color: var(--text); cursor: pointer; font: 700 .76rem var(--font);
  transition: transform var(--dur-fast), border-color var(--dur), background var(--dur), box-shadow var(--dur);
}
.mentoria-quick-action:hover { transform: translateY(-1px); border-color: var(--topic); background: color-mix(in srgb, var(--topic) 14%, var(--panel-2)); box-shadow: 0 5px 14px rgba(0,0,0,.18); }
.mentoria-quick-action:focus-visible { outline: 3px solid color-mix(in srgb, var(--accent) 55%, transparent); outline-offset: 2px; }
.mentoria-quick-action.is-primary { border-color: color-mix(in srgb, var(--brand-2) 75%, var(--border)); background: linear-gradient(180deg, var(--brand-2), var(--brand)); color: #fff; }
.mentoria-quick-action.is-primary:hover { background: linear-gradient(180deg, #ff7556, var(--brand)); }
.mqa-icon { display: grid; place-items: center; width: 1.2rem; font-size: 1rem; line-height: 1; }
.mqa-label { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* Cartão do treinador: mais sóbrio no novo centro, sem perder a identidade. */
.trainer-card {
  border-radius: 22px;
  background:
    radial-gradient(500px 190px at 0% 0%, rgba(255,255,255,.12), transparent 68%),
    linear-gradient(135deg, #243d76 0%, #1b2c56 56%, #193e61 100%);
  box-shadow: 0 14px 30px rgba(3,7,18,.28), inset 0 1px 0 rgba(255,255,255,.24);
}
.trainer-card.is-staff { background: radial-gradient(500px 190px at 0% 0%, rgba(255,255,255,.1), transparent 68%), linear-gradient(135deg, #632b45, #3b2140 58%, #5f3a2d); }
.tc-actions { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.tc-action-btn { min-width: 0; min-height: 38px; padding: .42rem .5rem; }
.tc-action-btn .tca-label { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

@media (max-width: 820px) {
  #tab-mentoria { grid-template-columns: 1fr; }
  #tab-mentoria > .men-today,
  #tab-mentoria > #men-roadmap { grid-column: 1 / -1; }
  #tab-mentoria > #men-roadmap { order: initial; }
  .mentoria-overview { grid-template-columns: 1fr; grid-template-areas: "main" "progress" "actions"; }
  .mentoria-overview-progress { max-width: 520px; }
}
@media (max-width: 520px) {
  .mentoria-overview { padding: .78rem; border-radius: 17px; gap: .7rem; }
  .mentoria-overview-main { align-items: flex-start; gap: .65rem; }
  .mentoria-overview-mascot { width: 68px; height: 68px; flex-basis: 68px; border-radius: 17px; }
  .mo-mascot { width: 58px; height: 58px; }
  .mentoria-overview-copy h1 { font-size: 1.38rem; }
  .mo-chips { gap: .25rem; }
  .mo-chip { font-size: .63rem; padding: .22rem .42rem; }
  .mentoria-overview-progress { padding: .55rem; }
  .mo-progress-ring { width: 70px; height: 70px; flex-basis: 70px; }
  .mo-progress-ring::before { width: 54px; height: 54px; }
  .mo-progress-ring strong { font-size: 1rem; }
  .mo-progress-ring span { margin-top: .95rem; font-size: .48rem; }
  .mentoria-quick-actions { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: .35rem; }
  .mentoria-quick-action { min-height: 42px; padding: .35rem .2rem; }
  .mqa-label { display: none; }
  .mqa-icon { width: auto; font-size: 1.05rem; }
  .tc-actions { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: .35rem; }
  .tc-action-btn { min-height: 40px; padding: .35rem .2rem; }
  .tc-action-btn .tca-label { display: none; }
  .tc-action-btn .tca-ico { font-size: 1.05rem; }
}

/* Cartão de treinador · ficha de equipe e Pokémon individuais */
.trainer-card {
  padding: 1.15rem 1.2rem 1.05rem;
  border-radius: 24px;
  background:
    linear-gradient(105deg, rgba(255,255,255,.08) 0 1px, transparent 1px 18px),
    radial-gradient(420px 200px at 5% 0%, rgba(125, 215, 255, .18), transparent 72%),
    linear-gradient(135deg, #1b3267 0%, #14284f 52%, #153d61 100%);
  background-size: 18px 18px, auto, auto;
  border-color: rgba(159, 214, 255, .46);
  box-shadow: 0 18px 38px rgba(3, 7, 18, .34), inset 0 1px 0 rgba(255,255,255,.25);
}
.trainer-card.is-staff {
  background:
    linear-gradient(105deg, rgba(255,255,255,.07) 0 1px, transparent 1px 18px),
    radial-gradient(420px 200px at 5% 0%, rgba(255, 220, 136, .16), transparent 72%),
    linear-gradient(135deg, #592b48 0%, #3a213f 52%, #5c3b2a 100%);
  background-size: 18px 18px, auto, auto;
}
.tc-top { margin-bottom: 1rem; }
.tc-brand { letter-spacing: .16em; }
.tc-idno { background: rgba(4, 10, 25, .38); }
.tc-profile-line { display: flex; flex-wrap: wrap; gap: .35rem .65rem; color: rgba(233, 243, 255, .74); font-size: .67rem; font-weight: 700; }
.tc-journey-sub { color: rgba(233, 243, 255, .78); }
.tc-trainer-xp { display: grid; gap: .28rem; margin-top: -.1rem; padding-top: .52rem; border-top: 1px solid rgba(255,255,255,.18); }
.tc-trainer-xp-top { display: flex; align-items: center; justify-content: space-between; gap: .5rem; color: rgba(233,243,255,.78); font-size: .64rem; text-transform: uppercase; letter-spacing: .055em; }
.tc-trainer-xp-top strong { color: #fff; font-size: .7rem; white-space: nowrap; }
.tc-trainer-xp-track { height: 6px; overflow: hidden; border-radius: 999px; background: rgba(4,10,25,.42); border: 1px solid rgba(255,255,255,.15); }
.tc-trainer-xp-fill { display: block; height: 100%; border-radius: inherit; background: linear-gradient(90deg, #7fd7ff, #ffda58); box-shadow: 0 0 10px rgba(127,215,255,.48); transition: width .5s ease; }
.tc-collection { padding: .72rem; background: rgba(4, 10, 25, .3); border-color: rgba(181, 225, 255, .25); }
.tc-col-title { color: rgba(255,255,255,.86); }
.tc-bag { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .48rem; }
.tc-bag .bag-pokemon-card {
  min-height: 132px;
  padding: .38rem .25rem .42rem;
  gap: .12rem;
  border-color: rgba(181, 225, 255, .25);
  background: linear-gradient(160deg, rgba(255,255,255,.14), rgba(255,255,255,.055));
  box-shadow: inset 0 1px 0 rgba(255,255,255,.07);
}
.tc-bag .bag-pokemon-card:hover,
.tc-bag .bag-pokemon-card:focus-visible,
.tc-bag .bag-pokemon-card.active { border-color: #ffda58; background: linear-gradient(160deg, rgba(255,218,88,.2), rgba(255,255,255,.07)); box-shadow: 0 0 0 2px rgba(255,218,88,.18); }
.tc-bag .bag-pokemon-sprite { width: 58px; height: 58px; }
.tc-bag .bag-pokemon-name { color: #fff; font-size: .7rem; line-height: 1.1; }
.tc-bag .bag-pokemon-card > .small { color: rgba(233,243,255,.74) !important; font-size: .58rem; line-height: 1.1; }
.tc-bag .bag-pokemon-xp { width: calc(100% - .55rem); height: 6px; margin-top: .12rem; border-color: rgba(181,225,255,.28); background: rgba(4,10,25,.46); }
.tc-bag .bag-pokemon-xp-label { color: rgba(233,243,255,.72); font-size: .52rem; }
.tc-bag .bag-pokemon-held { font-size: .52rem; color: #ffda58; }
.tc-roster-head { display: flex; align-items: center; justify-content: space-between; gap: .5rem; margin-top: .75rem; padding-top: .65rem; border-top: 1px solid rgba(181,225,255,.18); }
.tc-roster-title { color: rgba(255,255,255,.86); font-size: .66rem; font-weight: 800; text-transform: uppercase; letter-spacing: .05em; }
.tc-roster-count { color: rgba(233,243,255,.66); font-size: .58rem; }
.tc-roster { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: .35rem; max-height: 250px; margin-top: .42rem; overflow-y: auto; padding: .05rem .2rem .15rem .02rem; scrollbar-width: thin; }
.tc-roster .bag-pokemon-card { min-height: 112px; padding: .3rem .2rem .34rem; gap: .1rem; }
.tc-roster .bag-pokemon-sprite { width: 48px; height: 48px; }
.tc-roster .bag-pokemon-name { font-size: .6rem; }
.tc-roster .bag-pokemon-card > .small { font-size: .5rem; }
.tc-roster .bag-pokemon-xp { height: 5px; }
.tc-roster .bag-pokemon-xp-label { font-size: .45rem; }
.tc-slot.empty { min-height: 132px; background: rgba(255,255,255,.06); border-color: rgba(181,225,255,.22); }
.tc-actions { grid-template-columns: repeat(5, minmax(0, 1fr)); gap: .45rem; margin-top: .45rem; }
.tc-action-btn { border-color: rgba(181,225,255,.3); background: rgba(255,255,255,.12); }
.tc-action-btn.tca-trade { border-color: rgba(255,218,88,.45); }
.tc-action-btn.tca-trade:hover { background: rgba(255,218,88,.18); }
@media (max-width: 520px) {
  .trainer-card { padding: .85rem .8rem .8rem; border-radius: 19px; }
  .tc-bag { gap: .32rem; }
  .tc-bag .bag-pokemon-card, .tc-slot.empty { min-height: 112px; }
  .tc-bag .bag-pokemon-sprite { width: 46px; height: 46px; }
  .tc-bag .bag-pokemon-name { font-size: .61rem; }
  .tc-bag .bag-pokemon-card > .small { font-size: .5rem; }
  .tc-bag .bag-pokemon-xp-label { font-size: .46rem; }
  .tc-roster { grid-template-columns: repeat(3, minmax(0, 1fr)); max-height: 220px; }
  .tc-roster .bag-pokemon-card { min-height: 96px; }
  .tc-roster .bag-pokemon-sprite { width: 40px; height: 40px; }
  .tc-actions { gap: .28rem; }
}
.modal .actions { flex-wrap: wrap; gap: .5rem; }
@media (max-width: 680px) {
  .nature-npc-modal { width: calc(100vw - 1rem); }
  .nature-npc-hero { grid-template-columns: 70px minmax(0, 1fr); padding: .75rem; }
  .nature-npc-sprite, .nature-npc-fallback { width: 68px; height: 68px; }
  .mural-filters { grid-template-columns: 1fr; }
  .pokemon-mural-modal { width: calc(100vw - 1rem); }
  .pokemon-mural-grid { grid-template-columns: repeat(auto-fill, minmax(94px, 1fr)); max-height: 54vh; }
  .mural-card-sprite { width: 56px; height: 56px; }
  .mural-heading { align-items: flex-start; }
  .mural-total { font-size: .55rem; }
  .pkmn-xp-top { align-items: flex-start; flex-direction: column; gap: .15rem; }
  .pkmn-xp-top span { text-align: left; }
}

.album-filters { display: grid; grid-template-columns: minmax(0, 1fr) minmax(180px, .5fr); gap: .5rem; margin-bottom: .55rem; }
.album-cell { display: grid !important; grid-template-rows: 62px auto auto; align-items: center; justify-items: center; min-height: 106px; padding: .3rem !important; color: var(--text); background: var(--panel) !important; }
.album-cell.stuck { border-color: color-mix(in srgb, var(--t-grass) 48%, var(--border)); }
.album-sprite { width: 60px; height: 60px; object-fit: contain; image-rendering: pixelated; }
.album-number { color: var(--muted); font: 700 .55rem var(--font-mono); }
.album-name { max-width: 100%; overflow: hidden; color: var(--text); font-size: .64rem; text-overflow: ellipsis; white-space: nowrap; }
@media (max-width: 560px) { .album-filters { grid-template-columns: 1fr; } .album-cell { min-height: 96px; } .album-sprite { width: 52px; height: 52px; } }

/* ═════════════════════════════════════════════════════════════
   MENTORIA · Pokébag e cartão 2.0
   ═════════════════════════════════════════════════════════════ */
.modal:has(.team-manager-modal) { max-width: min(1080px, calc(100vw - 1rem)); }
.modal:has(.nature-npc-modal) { max-width: min(760px, calc(100vw - 1rem)); }
.team-manager-modal { display: grid; gap: .8rem; min-width: 0; color: var(--text); }
.team-manager-hero { display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; padding: .2rem 0 .35rem; }
.team-manager-hero h3 { margin: .18rem 0 .25rem; font-size: clamp(1.15rem, 2.7vw, 1.65rem); }
.team-manager-hero p { max-width: 70ch; margin: 0; line-height: 1.45; }
.team-manager-limit { flex: 0 0 auto; padding: .35rem .65rem; border: 1px solid color-mix(in srgb, var(--accent) 50%, var(--border)); border-radius: 999px; color: var(--accent); font: 800 .68rem var(--font-mono); }
.team-manager-tools { display: grid; grid-template-columns: minmax(0, 1.5fr) minmax(170px, .7fr) minmax(170px, .7fr); gap: .5rem; padding: .6rem; border: 1px solid var(--border); border-radius: 14px; background: color-mix(in srgb, var(--panel-2) 72%, transparent); }
.tm-team-heading, .tm-pool-heading { display: flex; align-items: baseline; justify-content: space-between; gap: .6rem; }
.tm-team-heading strong, .tm-pool-heading strong { font-size: .84rem; }
.tm-team-redesign { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: .5rem; margin: 0; }
.tm-team-redesign .tm-pokemon-card, .tm-team-redesign .tm-slot { min-width: 0; }
.tm-slot.empty { width: auto; height: auto; min-height: 174px; aspect-ratio: 1 / 1.24; gap: .25rem; padding: .35rem; color: var(--muted); }
.tm-slot.empty::after { display: none; }
.tm-empty-plus { display: grid; place-items: center; width: 2rem; height: 2rem; border: 2px dashed currentColor; border-radius: 50%; font-size: 1.4rem; line-height: 1; }
.tm-pokemon-card { position: relative; display: grid; justify-items: center; align-content: start; gap: .16rem; min-width: 0; min-height: 174px; padding: .45rem .35rem .5rem; overflow: hidden; border: 1px solid var(--border); border-radius: 14px; color: var(--text); background: linear-gradient(145deg, var(--panel-2), var(--panel)); cursor: pointer; font: inherit; text-align: center; transition: transform .15s ease, border-color .15s ease, box-shadow .15s ease; }
.tm-pokemon-card:hover, .tm-pokemon-card:focus-visible { outline: none; transform: translateY(-2px); border-color: var(--brand-2); box-shadow: 0 8px 18px rgba(0,0,0,.2); }
.tm-pokemon-card.active { border-color: color-mix(in srgb, var(--accent) 70%, var(--border)); background: linear-gradient(145deg, color-mix(in srgb, var(--accent) 13%, var(--panel-2)), var(--panel)); }
.tm-pokemon-card.replace-target, .tm-slot.empty.replace-target { border-color: var(--accent); box-shadow: 0 0 0 2px color-mix(in srgb, var(--accent) 30%, transparent), 0 8px 18px rgba(0,0,0,.2); }
.tm-pokemon-name { width: 100%; overflow: hidden; color: var(--text); font-size: .78rem; font-weight: 900; line-height: 1.1; text-overflow: ellipsis; white-space: nowrap; }
.tm-pokemon-number { color: var(--muted); font: 700 .55rem var(--font-mono); }
.tm-pokemon-sprite { width: clamp(64px, 7vw, 96px); height: clamp(64px, 7vw, 96px); object-fit: contain; image-rendering: pixelated; filter: drop-shadow(0 5px 4px rgba(0,0,0,.2)); }
.tm-pokemon-meta { max-width: 100%; overflow: hidden; color: var(--muted); font-size: .6rem; text-overflow: ellipsis; white-space: nowrap; }
.tm-type-row { display: flex; min-height: 16px; flex-wrap: wrap; justify-content: center; gap: .18rem; }
.tm-type-row .type-badge { padding: .1rem .3rem; font-size: .47rem; }
.tm-pokemon-xp { width: calc(100% - .35rem); height: 5px; overflow: hidden; border: 1px solid color-mix(in srgb, var(--brand-2) 35%, var(--border)); border-radius: 999px; background: var(--bg); }
.tm-pokemon-xp span { display: block; height: 100%; border-radius: inherit; background: linear-gradient(90deg, #4ac6ff, #8ef0c0); }
.tm-pokemon-xp-label, .tm-pokemon-held { max-width: 100%; overflow: hidden; color: var(--muted); font: 700 .52rem var(--font-mono); text-overflow: ellipsis; white-space: nowrap; }
.tm-pokemon-held { display: inline-flex; align-items: center; justify-content: center; gap: .16rem; color: var(--accent); font-family: var(--font); }
.tm-pokemon-held-img { width: 16px; height: 16px; object-fit: contain; image-rendering: pixelated; }
.tm-selected-pill { position: absolute; top: .35rem; right: .35rem; padding: .13rem .28rem; border-radius: 999px; color: #092016; background: #8ef0c0; font-size: .48rem; font-weight: 900; }
.tm-pool-redesign { display: grid; grid-template-columns: repeat(auto-fill, minmax(122px, 1fr)); gap: .5rem; max-height: 38vh; margin: 0; padding: .12rem; }
.tm-pool-redesign .tm-pokemon-card { min-height: 166px; }
.tm-replace-hint { padding: .5rem .65rem; border: 1px dashed var(--border); border-radius: 10px; color: var(--muted); font-size: .68rem; line-height: 1.4; }
.tm-replace-hint.is-ready { border-color: color-mix(in srgb, var(--accent) 55%, var(--border)); color: var(--text); background: color-mix(in srgb, var(--accent) 8%, transparent); }
.team-manager-actions { position: sticky; bottom: -.1rem; z-index: 2; margin: 0; padding-top: .65rem; background: linear-gradient(180deg, transparent, var(--panel) 35%); }

.bag-pokemon-card { position: relative; }
.bag-pokemon-card .bag-pokemon-name { order: 1; width: 100%; overflow: hidden; color: var(--text); font-weight: 900; text-overflow: ellipsis; white-space: nowrap; }
.bag-pokemon-card .bag-pokemon-number { order: 2; color: var(--muted); font: 700 .53rem var(--font-mono); }
.bag-pokemon-card .bag-pokemon-sprite { order: 3; width: 78px; height: 78px; object-fit: contain; image-rendering: pixelated; }
.bag-pokemon-card > .small { order: 4; }
.bag-pokemon-card .bag-pokemon-xp { order: 5; }
.bag-pokemon-card .bag-pokemon-xp-label { order: 6; }
.bag-pokemon-card .bag-pokemon-held { order: 7; display: inline-flex; align-items: center; justify-content: center; gap: .16rem; }
.bag-pokemon-held-img { width: 16px; height: 16px; object-fit: contain; image-rendering: pixelated; }
.bag-pokemon-card.is-shiny { border-color: color-mix(in srgb, #ffda58 68%, var(--border)); }
.bag-pokemon-card.is-shiny .bag-pokemon-name { color: #ffda58; text-shadow: 0 0 8px rgba(255,218,88,.28); }
.tc-bag .bag-pokemon-sprite { width: 78px; height: 78px; }
.tc-bag .bag-pokemon-card { min-height: 164px; }
.tc-bag .bag-pokemon-name { font-size: .72rem; }
.tc-levels { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .4rem; }
.tc-level-chip { display: flex; align-items: center; gap: .35rem; min-width: 0; padding: .35rem .45rem; border: 1px solid rgba(255,255,255,.24); border-radius: 11px; background: rgba(4,10,25,.22); }
.tc-level-sprite { width: 28px; height: 28px; object-fit: contain; image-rendering: pixelated; }
.tc-level-chip span:last-child { display: grid; min-width: 0; gap: .06rem; }
.tc-level-chip small { overflow: hidden; color: rgba(233,243,255,.72); font-size: .5rem; text-overflow: ellipsis; white-space: nowrap; }
.tc-level-chip strong { color: #fff; font-size: .75rem; }
.tc-stat-sprite { grid-area: ico; width: 25px; height: 25px; object-fit: contain; image-rendering: pixelated; filter: drop-shadow(0 2px 2px rgba(0,0,0,.28)); }
.tcv-slot-name { max-width: 100%; overflow: hidden; color: var(--text); font-size: .62rem; text-overflow: ellipsis; white-space: nowrap; }
.tcv-slot img { width: 72px; height: 72px; }

/* Central de presença compacta: só o que ajuda o aluno a manter o ritmo. */
.engagement-hub { background: linear-gradient(145deg, color-mix(in srgb, var(--accent) 7%, var(--panel)), var(--panel)); }
.engagement-slim-grid { grid-template-columns: minmax(180px, .85fr) minmax(240px, 1.25fr) minmax(220px, 1fr); }
.engagement-slim-grid .engagement-card { min-height: 182px; }
.engagement-slim-grid .engagement-achievements { max-height: 150px; overflow-y: auto; padding-right: .2rem; }

/* Topbar: navegação mais legível no desktop e compacta no mobile. */
.topbar-nav .nav-btn { min-height: 38px; }
.topbar-nav .nav-sprite { width: 25px; height: 25px; }
@media (max-width: 960px) and (min-width: 761px) { .topbar-nav .nav-btn { padding-inline: .48rem; } }

@media (max-width: 820px) {
  .team-manager-tools { grid-template-columns: 1fr 1fr; }
  .team-manager-tools input { grid-column: 1 / -1; }
  .tm-team-redesign { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .tm-pool-redesign { grid-template-columns: repeat(auto-fill, minmax(112px, 1fr)); }
  .engagement-slim-grid { grid-template-columns: 1fr 1fr; }
  .engagement-slim-grid .engagement-card:last-child { grid-column: 1 / -1; }
}
@media (max-width: 520px) {
  .team-manager-hero { flex-direction: column; gap: .45rem; }
  .team-manager-limit { align-self: flex-start; }
  .team-manager-tools { grid-template-columns: 1fr; }
  .team-manager-tools input { grid-column: auto; }
  .tm-team-redesign { gap: .3rem; }
  .tm-team-redesign .tm-pokemon-card, .tm-team-redesign .tm-slot { min-height: 128px; }
  .tm-team-redesign .tm-pokemon-sprite { width: 48px; height: 48px; }
  .tm-team-redesign .tm-pokemon-name { font-size: .58rem; }
  .tm-team-redesign .tm-pokemon-number, .tm-team-redesign .tm-pokemon-meta, .tm-team-redesign .tm-pokemon-xp-label, .tm-team-redesign .tm-pokemon-held { font-size: .45rem; }
  .tm-team-redesign .tm-type-row { display: none; }
  .tm-pool-redesign { grid-template-columns: repeat(2, minmax(0, 1fr)); max-height: 42vh; }
  .tm-pool-redesign .tm-pokemon-card { min-height: 152px; }
  .tm-pool-redesign .tm-pokemon-sprite { width: 66px; height: 66px; }
  .tc-levels { grid-template-columns: 1fr; }
  .tc-bag .bag-pokemon-card { min-height: 140px; }
  .tc-bag .bag-pokemon-sprite, .bag-pokemon-card .bag-pokemon-sprite { width: 58px; height: 58px; }
  .engagement-slim-grid { grid-template-columns: 1fr; }
  .engagement-slim-grid .engagement-card:last-child { grid-column: auto; }
}

/* ═════════════════════════════════════════════════════════════
   POKÉBAG · inventário completo e responsivo
   ═════════════════════════════════════════════════════════════ */
.modal:has(.bag-redesign) { width: min(1080px, calc(100vw - 1rem)); max-width: 1080px; }
.bag-redesign {
  display: grid; gap: .9rem; min-width: 0; max-height: min(88vh, 900px); overflow: auto;
  color: var(--text); scrollbar-color: var(--accent) transparent;
}
.bag-redesign-hero { display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; padding: .15rem 0 .2rem; }
.bag-redesign-kicker { display: block; color: var(--accent); font: 900 .58rem var(--font-mono); letter-spacing: .12em; text-transform: uppercase; }
.bag-redesign-title h3 { margin: .22rem 0 .18rem; font-size: clamp(1.35rem, 3vw, 2rem); }
.bag-redesign-title p { max-width: 60ch; margin: 0; color: var(--muted); line-height: 1.4; }
.bag-redesign-hero-actions, .bag-redesign-footer { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: .4rem; }
.bag-redesign-summary { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: .5rem; }
.bag-summary-card { display: grid; grid-template-columns: 32px 1fr; grid-template-rows: auto auto; grid-template-areas: 'icon value' 'icon label'; align-items: center; column-gap: .5rem; min-width: 0; padding: .55rem .65rem; border: 1px solid var(--border); border-radius: 14px; background: linear-gradient(145deg, color-mix(in srgb, var(--panel-2) 90%, var(--accent)), var(--panel)); }
.bag-summary-sprite, .bag-summary-symbol { grid-area: icon; width: 31px; height: 31px; display: grid; place-items: center; object-fit: contain; font-size: 1.25rem; image-rendering: pixelated; }
.bag-summary-card strong { grid-area: value; color: var(--text); font-size: 1.08rem; line-height: 1; }
.bag-summary-card span:last-child { grid-area: label; overflow: hidden; color: var(--muted); font-size: .58rem; font-weight: 800; text-overflow: ellipsis; text-transform: uppercase; white-space: nowrap; }
.bag-redesign-panel { min-width: 0; padding: .85rem; border: 1px solid var(--border); border-radius: 18px; background: color-mix(in srgb, var(--panel-2) 72%, transparent); }
.bag-redesign-section-head { display: flex; align-items: flex-start; justify-content: space-between; gap: .75rem; margin-bottom: .7rem; }
.bag-redesign-section-head h4 { margin: .2rem 0 .18rem; font-size: 1rem; }
.bag-redesign-section-head p { margin: 0; line-height: 1.35; }
.bag-redesign-section-head > .bag-redesign-search { flex: 0 1 260px; min-width: 170px; }
.bag-redesign-team-grid { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: .48rem; }
.bag-redesign-team-grid .bag-pokemon-card, .bag-team-slot { min-width: 0; min-height: 174px; }
.bag-team-slot { display: grid; place-items: center; align-content: center; gap: .2rem; padding: .4rem; border: 1px dashed color-mix(in srgb, var(--accent) 45%, var(--border)); border-radius: 14px; color: var(--muted); background: color-mix(in srgb, var(--panel) 68%, transparent); cursor: pointer; font: inherit; text-align: center; }
.bag-team-slot:hover, .bag-team-slot:focus-visible { outline: none; border-color: var(--accent); color: var(--text); background: color-mix(in srgb, var(--accent) 10%, var(--panel)); }
.bag-team-slot-plus { display: grid; place-items: center; width: 2.2rem; height: 2.2rem; border: 2px dashed currentColor; border-radius: 50%; font-size: 1.55rem; line-height: 1; }
.bag-team-slot strong { color: var(--text); font-size: .68rem; }
.bag-team-slot small { font-size: .57rem; }
.bag-redesign-collection-panel { padding: 0; overflow: hidden; }
.bag-redesign-collection-panel > summary { display: flex; align-items: center; gap: .7rem; padding: .8rem .85rem; cursor: pointer; list-style: none; }
.bag-redesign-collection-panel > summary::-webkit-details-marker { display: none; }
.bag-redesign-collection-panel > summary::after { margin-left: auto; color: var(--accent); content: '⌄'; font-size: 1.05rem; }
.bag-redesign-collection-panel[open] > summary::after { content: '⌃'; }
.bag-redesign-collection-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(122px, 1fr)); gap: .48rem; max-height: 280px; overflow: auto; padding: 0 .85rem .85rem; }
.bag-redesign-collection-grid .bag-pokemon-card { min-height: 158px; }
.bag-redesign-items-panel { display: grid; gap: .7rem; }
.bag-redesign-tabs { display: flex; gap: .35rem; overflow-x: auto; padding: .12rem .1rem .25rem; scrollbar-width: thin; }
.bag-redesign-tab { flex: 0 0 auto; padding: .42rem .62rem; border: 1px solid var(--border); border-radius: 999px; color: var(--muted); background: var(--panel); cursor: pointer; font: 800 .66rem var(--font); white-space: nowrap; }
.bag-redesign-tab:hover, .bag-redesign-tab.is-active { border-color: var(--accent); color: var(--text); background: color-mix(in srgb, var(--accent) 14%, var(--panel)); }
.bag-redesign-items-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: .55rem; }
.bag-redesign-item { display: grid; grid-template-columns: 56px minmax(0, 1fr); grid-template-rows: auto auto; grid-template-areas: 'visual copy' 'visual action'; gap: .35rem .55rem; min-width: 0; padding: .65rem; border: 1px solid var(--border); border-radius: 14px; background: linear-gradient(145deg, var(--panel), color-mix(in srgb, var(--panel-2) 80%, transparent)); }
.bag-redesign-item-top { position: relative; grid-area: visual; align-self: start; display: grid; place-items: center; min-height: 56px; }
.bag-redesign-item-sprite { width: 50px; height: 50px; object-fit: contain; image-rendering: pixelated; }
.bag-redesign-qty { position: absolute; right: -3px; bottom: -2px; padding: .12rem .25rem; border: 1px solid var(--border); border-radius: 999px; color: var(--text); background: var(--panel-2); font: 800 .57rem var(--font-mono); }
.bag-redesign-item-copy { grid-area: copy; min-width: 0; }
.bag-redesign-item-copy strong { display: block; overflow: hidden; color: var(--text); font-size: .74rem; text-overflow: ellipsis; white-space: nowrap; }
.bag-redesign-item-kind { display: block; margin-top: .08rem; color: var(--accent); font: 800 .53rem var(--font-mono); text-transform: uppercase; }
.bag-redesign-item-copy p { display: -webkit-box; max-height: 2.6em; margin: .22rem 0 0; overflow: hidden; color: var(--muted); font-size: .62rem; line-height: 1.3; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }
.bag-redesign-equipped { display: flex; align-items: center; gap: .3rem; min-width: 0; margin-top: .34rem; color: var(--accent); font-size: .56rem; font-weight: 700; }
.bag-redesign-equipped > span:last-child { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.bag-redesign-equipped-badge { flex: 0 0 auto; padding: .12rem .28rem; border: 1px solid color-mix(in srgb, var(--accent) 55%, transparent); border-radius: 999px; background: color-mix(in srgb, var(--accent) 12%, transparent); font: 900 .45rem var(--font-mono); letter-spacing: .06em; }
.bag-redesign-use { grid-area: action; justify-self: start; padding: .28rem .58rem; font-size: .63rem; }
.bag-redesign-item-note { grid-area: action; align-self: center; color: var(--muted); font-size: .58rem; }
.bag-redesign-empty { display: grid; justify-items: center; gap: .25rem; padding: 1.2rem .6rem; color: var(--muted); text-align: center; }
.bag-empty-icon { font-size: 1.8rem; }
.bag-redesign-footer { justify-content: flex-start; padding-top: .1rem; }
.bag-redesign-footer .btn:last-child { margin-left: auto; }

/* O cartão usa o selo do treinador e o da mentoria sobre a mesma moldura. */
.tc-levels { display: none !important; }
.tc-photo { min-width: 104px; min-height: 122px; }
.tc-mentorship-lvl { position: absolute; left: -9px; bottom: -8px; z-index: 3; display: grid; justify-items: center; min-width: 56px; padding: .23rem .35rem .27rem; border: 2px solid #fff; border-radius: 11px; color: #062b3b; background: linear-gradient(#9cf0ff, #4ab9dd); box-shadow: 0 3px 9px rgba(0,0,0,.32); line-height: 1; }
.tc-mentorship-lvl small { font-size: .43rem; font-weight: 900; letter-spacing: .06em; }
.tc-mentorship-lvl b { font-size: .72rem; font-weight: 900; }
.tc-lvl { right: -9px; bottom: -8px; min-width: 57px; padding-inline: .32rem; }
.tc-lvl b { font-size: .72rem; }
.tc-bag .bag-pokemon-number { display: none; }
.tc-bag .tc-slot.empty { min-height: 164px; height: auto; aspect-ratio: auto; }
.tc-bag .tc-slot.empty::after { display: none; }
.tc-slot-plus { display: grid; place-items: center; width: 2rem; height: 2rem; border: 2px dashed rgba(255,255,255,.52); border-radius: 50%; color: rgba(255,255,255,.8); font-size: 1.45rem; line-height: 1; }
.tc-slot-label { color: rgba(233,243,255,.66); font-size: .54rem; font-weight: 800; text-transform: uppercase; letter-spacing: .05em; }
.tc-stat-item { grid-area: ico; width: 28px; height: 28px; object-fit: contain; image-rendering: pixelated; filter: drop-shadow(0 2px 2px rgba(0,0,0,.28)); }

@media (max-width: 860px) {
  .bag-redesign-team-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .bag-redesign-team-grid .bag-pokemon-card, .bag-team-slot { min-height: 154px; }
}
@media (max-width: 620px) {
  .modal:has(.bag-redesign) { width: calc(100vw - .65rem); }
  .bag-redesign { gap: .65rem; max-height: 91vh; }
  .bag-redesign-hero, .bag-redesign-section-head { flex-direction: column; }
  .bag-redesign-hero-actions { justify-content: flex-start; width: 100%; }
  .bag-redesign-summary { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .bag-redesign-section-head > .bag-redesign-search { width: 100%; min-width: 0; }
  .bag-redesign-team-grid { gap: .3rem; }
  .bag-redesign-team-grid .bag-pokemon-card, .bag-team-slot { min-height: 138px; }
  .bag-redesign-team-grid .bag-pokemon-sprite { width: 54px; height: 54px; }
  .bag-redesign-team-grid .bag-pokemon-name { font-size: .62rem; }
  .bag-redesign-items-grid { grid-template-columns: 1fr; }
  .bag-redesign-footer { justify-content: flex-start; }
  .bag-redesign-footer .btn:last-child { margin-left: 0; }
  .tc-photo { min-width: 91px; min-height: 112px; }
  .tc-badge { width: 84px; height: 94px; }
  .tc-bag .tc-slot.empty { min-height: 140px; }
  .tc-slot-label { font-size: .46rem; }
  .tc-mentorship-lvl { left: -5px; }
  .tc-lvl { right: -5px; }
}

/* ═══════════════════════════════════════════════════════════════
   POLIMENTO GERAL — CENTRAL DE TREINAMENTO GEN I–III
   Última camada visual das áreas de Atividades, Treinos, Comunidade,
   Cineminha, Avisos e Calendário. Mantém os nomes existentes para não
   quebrar os módulos e melhora contraste, densidade e navegação.
   ═══════════════════════════════════════════════════════════════ */

/* Atividades: a lista passa a parecer uma sequência de missões, não um
   formulário solto. */
#tab-atividades .activities-list { gap: .78rem; }
#tab-atividades .activities-toolbar { position: relative; border-color: color-mix(in srgb, var(--brand-2) 30%, var(--border)); }
#tab-atividades .activities-toolbar-heading strong { font-size: .96rem; }
#tab-atividades .activity-card { border-radius: 19px; }
#tab-atividades .activity-card .ac-head { min-height: 78px; }
#tab-atividades .activity-card .ac-head-txt .eyebrow { color: var(--brand-2); }
#tab-atividades .activity-card .ac-body { line-height: 1.55; }
#tab-atividades .activity-card textarea,
#tab-atividades .activity-card input,
#tab-atividades .activity-card select { border-radius: 12px; background: var(--panel-2); color: var(--text); }

/* Treinos: navegação como seleção de rota e cards inspirados em cartuchos. */
#tab-treinos { gap: .9rem; }
#tab-treinos .treinos-hero {
  border-color: color-mix(in srgb, var(--t-electric) 48%, var(--border));
  background:
    radial-gradient(260px 170px at 0% 0%, color-mix(in srgb, var(--t-electric) 19%, transparent), transparent 72%),
    linear-gradient(145deg, color-mix(in srgb, var(--panel) 96%, #07172d), var(--panel-2));
  box-shadow: 0 16px 34px rgba(3,7,18,.18), inset 0 1px 0 rgba(255,255,255,.1);
}
#tab-treinos .treinos-hero-copy h1 { letter-spacing: -.03em; }
#tab-treinos .treinos-hero-chips span { background: color-mix(in srgb, var(--t-electric) 9%, var(--panel-2)); }
#tab-treinos .treinos-nav {
  position: sticky; top: .45rem; z-index: 4; margin-bottom: .9rem;
  border-color: color-mix(in srgb, var(--t-electric) 28%, var(--border));
  background: color-mix(in srgb, var(--panel) 90%, transparent);
  backdrop-filter: blur(14px);
}
#tab-treinos .tseg { min-height: 44px; }
#tab-treinos .tseg.active { color: #071b2c; background: linear-gradient(135deg, #78d8ff, #ffcb05); box-shadow: 0 5px 14px rgba(95,198,255,.2); }
#tab-treinos .xp-card { border-color: color-mix(in srgb, var(--t-electric) 34%, var(--border)); background: linear-gradient(145deg, color-mix(in srgb, var(--panel) 96%, #081a34), var(--panel-2)); }
#tab-treinos .tier-head { color: var(--text); border-bottom-color: color-mix(in srgb, var(--t-electric) 25%, var(--border)); }
#tab-treinos .game-grid { grid-template-columns: repeat(auto-fill, minmax(156px, 1fr)); gap: .65rem; }
#tab-treinos .gcard { min-height: 164px; border-radius: 17px; background: linear-gradient(160deg, var(--panel), color-mix(in srgb, var(--panel-2) 88%, #081a35)); }
#tab-treinos .gcard:hover:not([disabled]) { border-color: var(--t-electric); box-shadow: 0 10px 24px rgba(95,198,255,.14); }
#tab-treinos .gcard-ico { background: radial-gradient(circle at 50% 30%, color-mix(in srgb, var(--t-electric) 18%, var(--panel-2)), var(--panel-2)); }
#tab-treinos .gcard-tag { background: color-mix(in srgb, var(--bg) 84%, var(--panel-2)); }
#tab-treinos .tool-chip { border-radius: 12px; background: color-mix(in srgb, var(--panel-2) 82%, transparent); }

/* Comunidade: Pokédex com busca e leitura mais espaçada. */
#tab-comunidade { gap: .9rem; }
#tab-comunidade .community-hero {
  border-color: color-mix(in srgb, var(--t-grass) 40%, var(--border));
  background:
    radial-gradient(300px 180px at 0% 0%, color-mix(in srgb, var(--t-grass) 16%, transparent), transparent 72%),
    linear-gradient(145deg, color-mix(in srgb, var(--panel) 96%, #071d22), var(--panel-2));
}
#tab-comunidade .community-hero-badge { border-color: color-mix(in srgb, var(--t-grass) 48%, var(--border)); background: color-mix(in srgb, var(--t-grass) 10%, var(--panel)); }
#tab-comunidade .community-hero-badge strong { color: #b8ffab; font-size: 1.12rem; text-shadow: 0 1px 2px rgba(0,0,0,.35); }
#tab-comunidade .community-hero-actions .btn { color: #d5ffd0; }
#tab-comunidade .community-hero .eyebrow { color: #b8ffab; }
#tab-comunidade .community-hero-actions { display: flex; flex-wrap: wrap; gap: .4rem; margin-top: .65rem; }
#tab-comunidade .community-hero-actions .btn { border-color: color-mix(in srgb, var(--t-grass) 35%, var(--border)); }
#tab-comunidade .dex-device { border-color: color-mix(in srgb, var(--brand-2) 38%, var(--border)); background: linear-gradient(145deg, #173d72, #0b1834 68%, #071225); }
#tab-comunidade .dex-screen { background: linear-gradient(160deg, color-mix(in srgb, var(--t-water) 9%, var(--panel)), var(--panel-2)); }
#tab-comunidade .dex-tabs { margin-bottom: .55rem; padding-bottom: .15rem; overflow-x: auto; flex-wrap: nowrap; scrollbar-width: thin; }
#tab-comunidade .dex-tab { flex: 0 0 auto; min-height: 42px; }
#tab-comunidade .dex-tools { display: flex; align-items: center; gap: .55rem; margin: 0 0 .75rem; }
#tab-comunidade .dex-search { flex: 1 1 auto; min-width: 0; height: 38px; padding: .45rem .7rem; border: 1px solid var(--border); border-radius: 11px; background: color-mix(in srgb, var(--bg) 78%, var(--panel)); color: var(--text); font: inherit; font-size: .78rem; }
#tab-comunidade .dex-search:focus { outline: 2px solid color-mix(in srgb, var(--t-water) 45%, transparent); outline-offset: 1px; border-color: var(--t-water); }
#tab-comunidade .dex-results { flex: 0 0 auto; color: var(--muted); font-size: .7rem; font-weight: 800; white-space: nowrap; }
#tab-comunidade .dex-empty { padding: 1.5rem .8rem; border: 1px dashed var(--border); border-radius: 13px; color: var(--muted); text-align: center; }
#tab-comunidade .dex-entry { min-height: 92px; border-color: color-mix(in srgb, var(--t-water) 20%, var(--border)); background: color-mix(in srgb, var(--panel) 82%, transparent); }
#tab-comunidade .dex-entry:hover { border-color: var(--t-water); box-shadow: 0 7px 16px rgba(3,7,18,.18); }
.coop-launcher { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: .6rem; }
.coop-launcher-sprite { width: 48px; height: 48px; object-fit: contain; image-rendering: pixelated; filter: drop-shadow(0 3px 3px rgba(0,0,0,.25)); }
.coop-launcher-copy { display: grid; gap: .12rem; min-width: 0; }
.coop-launcher-copy .small { line-height: 1.3; }
@media (max-width: 560px) {
  .coop-launcher { grid-template-columns: auto minmax(0, 1fr); }
  .coop-launcher > .btn { grid-column: 1 / -1; width: 100%; }
}

/* Avisos: o quadro tem hierarquia de urgência sem criar blocos pesados. */
#tab-avisos { gap: .82rem; }
#tab-avisos .avisos-hero {
  border-color: color-mix(in srgb, var(--t-psychic) 42%, var(--border));
  background:
    radial-gradient(300px 180px at 0% 0%, color-mix(in srgb, var(--t-psychic) 18%, transparent), transparent 72%),
    linear-gradient(145deg, color-mix(in srgb, var(--panel) 96%, #1a1030), var(--panel-2));
}
#tab-avisos .avisos-hero-badge { box-shadow: inset 0 1px 0 rgba(255,255,255,.08), 0 8px 18px rgba(3,7,18,.14); }
#tab-avisos .avisos-context-head { padding-top: .15rem; }
#tab-avisos .avisos-toolbar { padding: .65rem; border-color: color-mix(in srgb, var(--t-psychic) 26%, var(--border)); background: color-mix(in srgb, var(--panel) 86%, transparent); }
#tab-avisos .avisos-search { min-height: 40px; background: var(--bg); }
#tab-avisos .ann-grid { gap: .75rem; }
#tab-avisos .ann-card { border-radius: 17px; padding: .95rem; background: linear-gradient(155deg, var(--panel), color-mix(in srgb, var(--panel-2) 75%, transparent)); }
#tab-avisos .ann-card:hover { border-color: color-mix(in srgb, var(--cat, var(--brand)) 55%, var(--border)); box-shadow: 0 12px 24px rgba(3,7,18,.14); }
#tab-avisos .ann-head h3 { font-size: 1rem; letter-spacing: -.01em; }
#tab-avisos .ann-body { line-height: 1.62; }
#tab-avisos .dq-card, #tab-avisos .poll-card { border-radius: 17px; box-shadow: 0 8px 20px rgba(3,7,18,.1); }

/* Calendário: mais contraste entre cabeçalho, próximo evento e grade. */
#tab-calendario { gap: .82rem; }
#tab-calendario .cal-dex {
  margin-bottom: .05rem; border-color: color-mix(in srgb, var(--t-water) 45%, #142238);
  background: linear-gradient(135deg, #174e83, #102d59 62%, #0b1d3a);
  box-shadow: 0 15px 30px rgba(3,7,18,.2), inset 0 1px 0 rgba(255,255,255,.16);
}
#tab-calendario .cal-view-toggle { border: 1px solid rgba(255,255,255,.18); }
#tab-calendario .cal-next-up { margin-bottom: .05rem; border-radius: 17px; box-shadow: 0 8px 20px rgba(3,7,18,.1); }
#tab-calendario .cal-filters { margin-bottom: .15rem; padding: .15rem 0; }
#tab-calendario .cal-world-filter-control { display: inline-flex; align-items: center; gap: .4rem; min-height: 32px; margin-left: auto; padding-left: .2rem; }
#tab-calendario .cal-world-filter-control .small { color: var(--muted); font-weight: 800; white-space: nowrap; }
#tab-calendario .cal-world-filter { min-width: 178px; min-height: 32px; padding: .36rem .6rem; border: 1px solid color-mix(in srgb, var(--t-water) 34%, var(--border)); border-radius: 10px; color: var(--text); background: color-mix(in srgb, var(--panel-2) 88%, transparent); }
#tab-calendario .type-chip { min-height: 32px; padding-inline: .65rem; font-size: .72rem; }
#tab-calendario .calendar-summary { margin: 0; border-color: color-mix(in srgb, var(--t-water) 24%, var(--border)); }
#tab-calendario .cal-day, #tab-calendario .cm-cell { border-radius: 15px; background: linear-gradient(160deg, var(--panel), color-mix(in srgb, var(--panel-2) 72%, transparent)); }
#tab-calendario .cal-day { min-height: 150px; }
#tab-calendario .cal-day.is-today { border-color: var(--accent); box-shadow: 0 0 0 2px color-mix(in srgb, var(--accent) 70%, transparent), 0 10px 22px rgba(255,203,5,.12); }
#tab-calendario .cal-event { border-radius: 10px; padding-block: .48rem; }
#tab-calendario .cal-event.me-going { background: color-mix(in srgb, var(--t-grass) 14%, var(--bg)); }
@media (max-width: 620px) {
  #tab-calendario .cal-world-filter-control { width: 100%; justify-content: space-between; margin-left: 0; padding-top: .2rem; }
  #tab-calendario .cal-world-filter { flex: 1 1 auto; min-width: 0; }
}

/* Cineminha: palco maior, chat mais próximo e controles discretos. */
#tab-cinema { max-width: 1380px; margin-inline: auto; }
#tab-cinema .cinema-host { border-radius: 24px; background: radial-gradient(420px 220px at 0% 0%, rgba(95,198,255,.08), transparent 72%), var(--panel); box-shadow: 0 18px 40px rgba(3,7,18,.12); }
#tab-cinema .cinema-head { padding: 1rem 1.15rem; border-bottom: 1px solid color-mix(in srgb, var(--t-water) 20%, var(--border)); }
#tab-cinema .cinema-head-badge { width: 46px; height: 46px; display: grid; place-items: center; border-radius: 14px; background: linear-gradient(145deg, #e3350d, #7e1b1b); box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 8px 16px rgba(3,7,18,.2); }
#tab-cinema .cinema-layout { grid-template-columns: minmax(0, 1fr) minmax(270px, 330px); gap: .8rem; }
#tab-cinema .cinema-stage { border-radius: 20px; box-shadow: 0 16px 32px rgba(3,7,18,.28); }
#tab-cinema .cinema-video { max-height: min(72vh, 780px); }
#tab-cinema .cinema-controls { margin: .65rem 0 .9rem; padding: .45rem; border: 1px solid var(--border); border-radius: 14px; background: color-mix(in srgb, var(--panel-2) 78%, transparent); }
#tab-cinema .cinema-controls .btn, #tab-cinema .cinema-invite-button, #tab-cinema .cinema-voice-button { min-height: 36px; border-radius: 10px; }
#tab-cinema .cinema-chat-panel { position: sticky; top: .7rem; border-radius: 18px; }
#tab-cinema .cinema-chat-head { padding: .75rem .85rem; background: linear-gradient(90deg, color-mix(in srgb, var(--t-water) 15%, var(--panel)), var(--panel)); }
#tab-cinema .cinema-chat-list { max-height: min(42vh, 360px); }
#tab-cinema .cinema-library { padding-top: .4rem; border-top: 1px solid var(--border); }
#tab-cinema .cinema-media-card { border-radius: 16px; background: linear-gradient(155deg, var(--panel), var(--panel-2)); }

@media (max-width: 760px) {
  #tab-treinos .treinos-nav { position: static; }
  #tab-treinos .game-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  #tab-comunidade .dex-tools { align-items: stretch; flex-direction: column; }
  #tab-comunidade .dex-results { text-align: right; }
  #tab-calendario .cal-dex { padding: .75rem; }
  #tab-calendario .cal-controls { width: 100%; justify-content: space-between; }
  #tab-calendario .cal-controls .btn { flex: 1; }
  #tab-cinema .cinema-chat-panel { position: static; }
  #tab-cinema .cinema-head { padding: .85rem; }
}
@media (max-width: 480px) {
  #tab-treinos .game-grid { gap: .45rem; }
  #tab-treinos .gcard { min-height: 145px; padding: .75rem .45rem; }
  #tab-treinos .gcard-name { font-size: .82rem; }
  #tab-avisos .ann-card { padding: .8rem; }
  #tab-cinema .cinema-layout { gap: .6rem; }
}

/* Comunidade — acabamento de legibilidade.
   O LCD verde anterior deixava títulos e descrições com pouco contraste e
   fazia a aba parecer um bloco separado do restante do portal. Esta camada
   mantém a ideia de Pokédex, mas usa a mesma linguagem azul-noite do produto,
   com texto claro, cartões arejados e uma leitura confortável no celular. */
#tab-comunidade {
  --community-text: #f4f7ff;
  --community-soft: #c9d7ee;
  --community-faint: #9eb2d4;
  --community-cyan: #79e3ff;
  --community-cyan-strong: #b7f2ff;
  --community-violet: #b9a7ff;
  --community-surface: #101d37;
  --community-surface-2: #172947;
  --community-line: rgba(137, 190, 255, .28);
  font-family: var(--font);
}

#tab-comunidade .community-hero {
  border-color: color-mix(in srgb, var(--community-cyan) 42%, var(--border));
  background:
    radial-gradient(360px 210px at 0% 0%, color-mix(in srgb, var(--community-cyan) 17%, transparent), transparent 72%),
    radial-gradient(250px 180px at 100% 100%, color-mix(in srgb, var(--community-violet) 13%, transparent), transparent 74%),
    linear-gradient(145deg, #142744, #0d1830 72%);
  box-shadow: 0 16px 34px rgba(3, 7, 18, .2), inset 0 1px 0 rgba(255, 255, 255, .08);
}
#tab-comunidade .community-hero .eyebrow,
#tab-comunidade .community-hero-badge strong { color: var(--community-cyan-strong); }
#tab-comunidade .community-hero-copy h1 { color: var(--community-text); }
#tab-comunidade .community-hero-lead { color: var(--community-soft); }
#tab-comunidade .community-hero-chips span {
  color: var(--community-soft);
  border-color: rgba(137, 190, 255, .3);
  background: rgba(8, 20, 42, .44);
}
#tab-comunidade .community-hero-badge {
  border-color: color-mix(in srgb, var(--community-cyan) 48%, var(--border));
  background: rgba(15, 39, 66, .68);
}
#tab-comunidade .community-hero-badge span { color: var(--community-soft); }
#tab-comunidade .community-hero-actions .btn {
  color: var(--community-text);
  border-color: rgba(137, 190, 255, .34);
  background: rgba(9, 23, 45, .4);
}
#tab-comunidade .community-hero-actions .btn:hover {
  color: #071b2c;
  border-color: var(--community-cyan);
  background: var(--community-cyan);
}

#tab-comunidade .dex-device {
  background:
    radial-gradient(420px 160px at 8% 0%, rgba(121, 227, 255, .16), transparent 70%),
    linear-gradient(145deg, #203b65, #132746 48%, #0d1931);
  border: 1px solid rgba(121, 227, 255, .38);
  border-radius: 22px;
  box-shadow: 0 18px 38px rgba(3, 7, 18, .24), inset 0 1px 0 rgba(255, 255, 255, .13);
}
#tab-comunidade .dex-topbar { padding-bottom: .8rem; }
#tab-comunidade .dex-title {
  color: var(--community-text);
  font-family: var(--font-display);
  font-size: .9rem;
  letter-spacing: .035em;
  text-shadow: none;
}
#tab-comunidade .dex-lights { opacity: .9; }
#tab-comunidade .dex-screen {
  background: linear-gradient(160deg, rgba(23, 49, 82, .98), rgba(10, 23, 45, .98));
  border: 1px solid var(--community-line);
  border-radius: 16px;
  padding: .85rem;
  box-shadow: inset 0 1px 16px rgba(3, 7, 18, .26), inset 0 0 0 1px rgba(255, 255, 255, .035);
}
#tab-comunidade .dex-tabs { gap: .45rem; }
#tab-comunidade .dex-tab {
  color: var(--community-soft);
  background: rgba(8, 20, 42, .44);
  border: 1px solid rgba(137, 190, 255, .28);
  font-family: var(--font);
  font-size: .78rem;
  font-weight: 800;
}
#tab-comunidade .dex-tab:hover {
  color: var(--community-text);
  background: rgba(121, 227, 255, .13);
  border-color: rgba(121, 227, 255, .56);
}
#tab-comunidade .dex-tab.active {
  color: #071b2c;
  background: linear-gradient(135deg, var(--community-cyan-strong), var(--community-cyan));
  border-color: var(--community-cyan-strong);
  box-shadow: 0 5px 14px rgba(121, 227, 255, .2);
}
#tab-comunidade .dex-tools { margin-bottom: .8rem; }
#tab-comunidade .dex-search {
  color: var(--community-text);
  background: rgba(5, 14, 31, .76);
  border-color: rgba(137, 190, 255, .32);
  font-family: var(--font);
}
#tab-comunidade .dex-search::placeholder { color: var(--community-faint); opacity: 1; }
#tab-comunidade .dex-search:focus {
  border-color: var(--community-cyan);
  outline-color: rgba(121, 227, 255, .4);
  box-shadow: 0 0 0 3px rgba(121, 227, 255, .11);
}
#tab-comunidade .dex-results { color: var(--community-soft); }
#tab-comunidade .dex-list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .7rem;
}
#tab-comunidade .dex-entry {
  display: grid;
  grid-template-columns: auto 58px minmax(0, 1fr);
  align-items: center;
  gap: .65rem;
  min-height: 92px;
  color: var(--community-text);
  background: linear-gradient(145deg, rgba(28, 53, 88, .86), rgba(12, 27, 52, .92));
  border: 1px solid rgba(137, 190, 255, .25);
  border-left: 3px solid var(--community-cyan);
  border-radius: 14px;
  padding: .65rem .7rem;
  transition: transform .15s ease, border-color .15s ease, background .15s ease, box-shadow .15s ease;
}
#tab-comunidade .dex-entry:hover {
  color: var(--community-text);
  background: linear-gradient(145deg, rgba(35, 72, 117, .96), rgba(15, 34, 64, .96));
  border-color: var(--community-cyan);
  box-shadow: 0 9px 20px rgba(3, 7, 18, .2);
  transform: translateY(-2px);
}
#tab-comunidade .dex-entry:focus-visible { outline: 3px solid rgba(121, 227, 255, .55); outline-offset: 2px; }
#tab-comunidade .dex-num {
  color: var(--community-cyan-strong);
  background: rgba(6, 20, 40, .74);
  border: 1px solid rgba(121, 227, 255, .24);
  font-family: var(--font-mono);
  font-size: .66rem;
}
#tab-comunidade .dex-mon-wrap {
  width: 58px;
  height: 58px;
  border-radius: 14px;
  background: radial-gradient(circle at 50% 30%, rgba(121, 227, 255, .18), rgba(5, 15, 32, .42));
  border: 1px solid rgba(137, 190, 255, .16);
}
#tab-comunidade .dex-mon { width: 58px; height: 58px; }
#tab-comunidade .dex-entry-copy { display: grid; gap: .18rem; min-width: 0; }
#tab-comunidade .dex-entry-title {
  color: var(--community-text);
  font-family: var(--font-display);
  font-size: 1rem;
  line-height: 1.15;
  white-space: normal;
  overflow: visible;
  text-overflow: clip;
}
#tab-comunidade .dex-entry-desc {
  display: block;
  color: var(--community-soft);
  font-size: .74rem;
  line-height: 1.35;
}
#tab-comunidade .dex-empty {
  grid-column: 1 / -1;
  color: var(--community-soft);
  border-color: rgba(137, 190, 255, .3);
  background: rgba(8, 20, 42, .4);
}
#tab-comunidade .dex-foot { opacity: .72; }

@media (max-width: 760px) {
  #tab-comunidade .dex-list { grid-template-columns: 1fr; }
}
@media (max-width: 480px) {
  #tab-comunidade .dex-screen { padding: .7rem; }
  #tab-comunidade .dex-entry { grid-template-columns: auto 52px minmax(0, 1fr); gap: .5rem; min-height: 82px; padding: .55rem .5rem; }
  #tab-comunidade .dex-num { font-size: .58rem; padding-inline: .28rem; }
  #tab-comunidade .dex-mon-wrap, #tab-comunidade .dex-mon { width: 52px; height: 52px; }
  #tab-comunidade .dex-entry-title { font-size: .92rem; }
  #tab-comunidade .dex-entry-desc { font-size: .69rem; }
}

/* Última camada da Mentoria: mantém o acabamento depois dos estilos legados. */
#tab-mentoria { gap: clamp(.72rem, 1.6vw, 1.15rem); padding-bottom: 1.5rem; }
#tab-mentoria > #mentor-review-banner:empty { display: none; }
#tab-mentoria > #men-daily, #tab-mentoria > .men-today { margin-top: 0; }
.mentoria-overview, .trainer-card, .engagement-hub, .mentoria-today-redesign, .mentoria-roadmap-section, .mentoria-review-section, .missions-redesign, .archive-redesign { position: relative; isolation: isolate; }
.mentoria-overview::before, .trainer-card::before, .mentoria-today-redesign::before, .missions-redesign::before, .archive-redesign::before { position: absolute; top: 0; left: 1.1rem; width: 68px; height: 2px; border-radius: 999px; background: linear-gradient(90deg, var(--accent), transparent); content: ''; opacity: .85; }
.mentoria-overview-copy h1, .men-section-title, .mentoria-section-heading h2, .missions-hero-copy h2, .archive-heading h2 { letter-spacing: -.025em; }
.mentoria-overview-progress, .tc-journey-row, .tc-trainer-xp, .tc-stats, .tc-collection { box-shadow: inset 0 1px 0 rgba(255,255,255,.04); }
.mentoria-quick-actions { grid-template-columns: repeat(auto-fit, minmax(145px, 1fr)); }
.mentoria-quick-action { min-height: 42px; }
.trainer-card { overflow: hidden; }
.engagement-hub { margin-top: 0; border: 1px solid var(--border); border-radius: 20px; box-shadow: 0 12px 28px rgba(3,7,18,.14); }
.engagement-metric { border-radius: 13px; background: color-mix(in srgb, var(--panel-2) 78%, transparent); }
.engagement-next, .engagement-card { border-radius: 15px; box-shadow: 0 6px 16px rgba(3,7,18,.09); }
.mentoria-today-redesign { box-shadow: 0 14px 30px rgba(3,7,18,.13); }
.men-today-head { padding-bottom: .7rem; border-bottom: 1px solid color-mix(in srgb, var(--border) 72%, transparent); }
.mentoria-roadmap-section, .mentoria-review-section { margin-top: 0; box-shadow: 0 8px 22px rgba(3,7,18,.1); }
.mentoria-roadmap-section + .mentoria-review-section { margin-top: .72rem; }
.mentoria-section-heading { padding-bottom: .45rem; border-bottom: 1px solid color-mix(in srgb, var(--border) 72%, transparent); }
.roadmap-card, .review-card { border: 0; padding: .5rem 0 0; background: transparent; box-shadow: none; }
.archive-redesign { margin-top: 0; box-shadow: 0 10px 24px rgba(3,7,18,.1); }
@media (min-width: 821px) {
  #tab-mentoria > .men-today { min-height: 100%; }
  #tab-mentoria > #men-roadmap { align-self: stretch; display: grid; align-content: start; gap: .72rem; }
  #tab-mentoria > #men-roadmap > .mentoria-roadmap-section:first-child { height: auto; min-height: 0; }
}
@media (max-width: 820px) {
  .mentoria-quick-actions { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .mentoria-today-redesign, .missions-redesign, .archive-redesign { border-radius: 17px; }
}
@media (max-width: 520px) {
  #tab-mentoria { gap: .68rem; }
  .mentoria-overview::before, .trainer-card::before, .mentoria-today-redesign::before, .missions-redesign::before, .archive-redesign::before { left: .8rem; width: 48px; }
  .mentoria-quick-actions { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .mentoria-quick-action { min-height: 40px; }
  .men-today-head { padding-bottom: .55rem; }
  .schedule-line { width: 100%; }
  .mentoria-section-heading { gap: .45rem; }
  .mentoria-section-mark { font-size: .48rem; }
}

/* MODAIS · regra final: nenhum módulo herda uma janela estreita por acidente. */
.modal:has(.cinema-private-modal), .modal:has(.cinema-screen-help-modal), .modal:has(.cinema-private-result) { width: min(960px, calc(100vw - 1.2rem)); max-width: 960px; }
.modal-backdrop { place-items: center; padding: max(.8rem, env(safe-area-inset-top, 0px)) max(.8rem, env(safe-area-inset-right, 0px)) max(.8rem, env(safe-area-inset-bottom, 0px)) max(.8rem, env(safe-area-inset-left, 0px)); }
.modal {
  --modal-pad: clamp(1rem, 2.4vw, 1.7rem);
  width: min(900px, calc(100vw - 1.6rem)); max-width: 900px;
  max-height: min(92dvh, 1100px); min-height: 0; padding: var(--modal-pad);
  border-radius: 20px; overflow-x: hidden; overflow-y: auto; scrollbar-gutter: stable;
  scrollbar-color: var(--accent) transparent;
}
.modal > #modal-content { width: 100%; min-width: 0; max-width: none; }
.modal > #modal-content > * { min-width: 0; max-width: 100%; }
.modal h1, .modal h2, .modal h3, .modal h4 { overflow-wrap: anywhere; line-height: 1.16; }
.modal h3 { margin-bottom: 1.15rem; font-size: clamp(1.2rem, 2.5vw, 1.7rem); }
.modal p, .modal label, .modal small, .modal span, .modal strong { overflow-wrap: anywhere; }
.modal .field { gap: .4rem; margin-bottom: .95rem; }
.modal .field label { font-size: .86rem; }
.modal :is(input, select, textarea) { min-width: 0; max-width: 100%; }
.modal textarea { min-height: 118px; line-height: 1.5; }
.modal .actions { bottom: calc(-1 * var(--modal-pad)); margin-inline: calc(-1 * var(--modal-pad)); margin-top: 1.15rem; margin-bottom: calc(-1 * var(--modal-pad)); padding: .85rem var(--modal-pad) calc(.85rem + env(safe-area-inset-bottom, 0px)); background: linear-gradient(180deg, color-mix(in srgb, var(--panel) 72%, transparent), var(--panel) 32%); }
.modal .actions .btn { min-height: 38px; }

/* Conteúdo que realmente precisa de largura: grids, relatórios, ficha e edição. */
.modal:has(.team-manager-modal) { width: min(1160px, calc(100vw - 1.2rem)); max-width: 1160px; }
.modal:has(.arena-team-picker) { width: min(1100px, calc(100vw - 1.2rem)); max-width: 1100px; }
.modal:has(.season-pass-modal), .modal:has(.dungeon-modal) { width: min(1180px, calc(100vw - 1.2rem)); max-width: 1180px; }
.modal:has(.pokemon-center-modal), .modal:has(.pkmn-detail), .modal:has(.profile-modal.pf), .modal:has(.pf) { width: min(1120px, calc(100vw - 1.2rem)); max-width: 1120px; }
.modal:has(.crev-modal), .modal:has(.crev2), .modal:has(.day-preview.wide), .modal:has(.tut-modal) { width: min(1100px, calc(100vw - 1.2rem)); max-width: 1100px; }
.modal:has(.report-wrap), .modal:has(.event-view) { width: min(980px, calc(100vw - 1.2rem)); max-width: 980px; }
.modal:has(.settings-modal) { width: min(720px, calc(100vw - 1.2rem)); max-width: 720px; }
.modal:has(.nature-npc-modal), .modal:has(.nature-choice-modal) { width: min(820px, calc(100vw - 1.2rem)); max-width: 820px; }
.modal:has(.dex-scan) { width: min(460px, calc(100vw - 1.2rem)); max-width: 460px; }
.modal:has(.shopx) { width: min(1120px, calc(100vw - 1.2rem)); max-width: 1120px; }
.modal:has(.trade-modal-v2) { width: min(1240px, calc(100vw - 1.2rem)); max-width: 1240px; }
.modal:has(.bag-redesign) { width: min(1280px, calc(100vw - 1.2rem)); max-width: 1280px; }
.modal:has(.gen3-tutorial) { width: min(1220px, calc(100vw - 1.2rem)); max-width: 1220px; }
.modal:has(.team-manager-modal) .tm-pool-redesign, .modal:has(.arena-team-picker) .arena-team-picker-grid, .modal:has(.shopx) .shopx-grid { max-height: min(56vh, 620px); }
.modal:has(.team-manager-modal) .tm-pokemon-card { min-height: 200px; }
.modal:has(.arena-team-picker) .arena-team-choice, .modal:has(.shopx) .shopx-card { min-height: 148px; }
.modal:has(.shopx) .shopx { max-height: none; }
.modal:has(.pkmn-detail) .pkmn-detail, .modal:has(.pokemon-center-modal) .pokemon-center-modal, .modal:has(.profile-modal.pf) .profile-modal.pf { max-height: none; min-height: 0; }
.modal:has(.pkmn-detail) .pkmn-detail-columns { grid-template-columns: minmax(0, 1.15fr) minmax(300px, .85fr); }

@media (max-width: 760px) {
  .modal-backdrop { place-items: start center; }
  .modal { --modal-pad: .9rem; width: calc(100vw - .8rem); max-width: none; max-height: calc(100dvh - .8rem); border-radius: 18px; }
  .modal:has(.team-manager-modal), .modal:has(.arena-team-picker), .modal:has(.season-pass-modal), .modal:has(.dungeon-modal), .modal:has(.pokemon-center-modal), .modal:has(.pkmn-detail), .modal:has(.profile-modal.pf), .modal:has(.pf), .modal:has(.crev-modal), .modal:has(.crev2), .modal:has(.day-preview.wide), .modal:has(.tut-modal), .modal:has(.report-wrap), .modal:has(.event-view), .modal:has(.settings-modal), .modal:has(.nature-npc-modal), .modal:has(.nature-choice-modal), .modal:has(.dex-scan), .modal:has(.shopx), .modal:has(.trade-modal-v2), .modal:has(.bag-redesign), .modal:has(.gen3-tutorial), .modal:has(.cinema-private-modal), .modal:has(.cinema-screen-help-modal), .modal:has(.cinema-private-result) { width: calc(100vw - .8rem); max-width: none; }
  .modal .actions { justify-content: stretch; }
  .modal .actions .btn { flex: 1 1 9rem; }
  .modal:has(.team-manager-modal) .tm-pool-redesign, .modal:has(.arena-team-picker) .arena-team-picker-grid, .modal:has(.shopx) .shopx-grid { max-height: 48dvh; }
  .modal:has(.team-manager-modal) .tm-pokemon-card { min-height: 166px; }
  .modal:has(.shopx) .shopx-card { min-height: 126px; }
  .modal:has(.pkmn-detail) .pkmn-detail-columns { grid-template-columns: 1fr; }
}
@media (max-width: 430px) {
  .modal { --modal-pad: .75rem; width: calc(100vw - .5rem); max-height: calc(100dvh - .5rem); border-radius: 16px; }
  .modal h3 { font-size: 1.25rem; }
  .modal .actions .btn { flex-basis: 100%; }
}

/* PERFIL DE ACOMPANHAMENTO · janela estável com corpo rolável e rodapé fixo.
   O relatório pode crescer bastante (rubrica, atividades e minijogos), mas
   nunca deve empurrar os botões para fora da viewport. */
.modal:has(.profile-modal.pf), .modal:has(.pf) {
  width: min(1180px, calc(100vw - 1.2rem));
  max-width: 1180px;
  height: min(94dvh, 1100px);
  max-height: min(94dvh, 1100px);
  min-height: 0;
  overflow: hidden;
}
.modal:has(.profile-modal.pf) > #modal-content, .modal:has(.pf) > #modal-content {
  display: flex;
  flex-direction: column;
  width: 100%;
  height: 100%;
  min-height: 0;
  overflow: hidden;
}
.profile-modal.pf {
  display: flex;
  flex-direction: column;
  gap: 0;
  width: 100%;
  height: 100%;
  max-width: none;
  max-height: none;
  min-height: 0;
  overflow: hidden;
  padding-right: 0;
}
.profile-modal.pf .pf-body {
  display: flex;
  flex: 1 1 auto;
  flex-direction: column;
  gap: .9rem;
  min-width: 0;
  min-height: 0;
  width: 100%;
  overflow-x: hidden;
  overflow-y: auto;
  padding: .1rem .35rem .95rem .05rem;
  scrollbar-gutter: stable;
  scrollbar-color: var(--accent) transparent;
}
.modal:has(.profile-modal.pf) .profile-modal.pf .pf-foot,
.modal:has(.pf) .profile-modal.pf .pf-foot {
  position: relative;
  z-index: 2;
  flex: 0 0 auto;
  width: 100%;
  margin: 0;
  padding: .75rem .05rem .05rem;
  border-top: 1px solid var(--border);
  background: linear-gradient(180deg, color-mix(in srgb, var(--panel) 72%, transparent), var(--panel) 40%);
}
.profile-modal.pf .pf-foot .btn { min-width: 0; }

@media (max-width: 760px) {
  .modal:has(.profile-modal.pf), .modal:has(.pf) {
    width: calc(100vw - .8rem);
    max-width: none;
    height: calc(100dvh - 1.6rem);
    max-height: calc(100dvh - 1.6rem);
    padding: .9rem;
  }
  .profile-modal.pf .pf-body { padding-right: .15rem; }
  .profile-modal.pf .pf-foot { gap: .45rem; }
}
@media (max-width: 430px) {
  .modal:has(.profile-modal.pf), .modal:has(.pf) {
    width: calc(100vw - .5rem);
    height: calc(100dvh - 1rem);
    max-height: calc(100dvh - 1rem);
    padding: .75rem;
  }
  .profile-modal.pf .pf-body { gap: .7rem; }
  .profile-modal.pf .pf-foot .btn { flex: 1 1 9rem; }
}

/* CALENDÁRIO · leitura em camadas, com espaço real entre contexto e agenda. */
#tab-calendario {
  display: flex;
  flex-direction: column;
  max-width: 1320px;
  margin-inline: auto;
  gap: clamp(1rem, 2vw, 1.45rem);
  padding-bottom: 1.8rem;
}
#tab-calendario .cal-dex {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto auto;
  align-items: center;
  gap: 1rem;
  margin: 0;
  padding: clamp(1.05rem, 2vw, 1.4rem);
  border-radius: 22px;
}
#tab-calendario .cal-dex-title { min-width: 0; }
#tab-calendario .cal-dex-title h2 {
  margin-top: .2rem;
  font-size: clamp(1.35rem, 3vw, 2rem);
  letter-spacing: -.025em;
}
#tab-calendario .cal-view-toggle { justify-self: end; }
#tab-calendario .cal-controls { justify-self: end; }
#tab-calendario .cal-controls .btn {
  min-width: 42px;
  min-height: 38px;
  border-radius: 11px;
}
#tab-calendario .cal-next-up {
  min-height: 78px;
  margin: 0;
  padding: 1rem 1.15rem;
  border-radius: 18px;
}
#tab-calendario .cal-next-up .nu-title {
  display: block;
  max-width: 62ch;
  overflow-wrap: anywhere;
  line-height: 1.25;
}
#tab-calendario .cal-next-up .rsvp-ctrl { margin-top: 0; }
#tab-calendario .calendar-summary {
  min-height: 82px;
  margin: 0;
  padding: 1rem 1.1rem;
  gap: 1rem;
  border-radius: 18px;
  background:
    radial-gradient(260px 120px at 0% 50%, color-mix(in srgb, var(--t-water) 13%, transparent), transparent 72%),
    linear-gradient(145deg, color-mix(in srgb, var(--panel) 97%, transparent), var(--panel-2));
  box-shadow: 0 8px 20px rgba(3, 7, 18, .09);
}
#tab-calendario .calendar-summary-art { width: 70px; height: 58px; }
#tab-calendario .calendar-summary-sprite { width: 58px; height: 58px; }
#tab-calendario .calendar-summary-sprite.mini { width: 32px; height: 32px; }
#tab-calendario .calendar-summary-copy { gap: .25rem; }
#tab-calendario .calendar-summary-copy strong { font-size: .98rem; white-space: normal; }
#tab-calendario .calendar-summary-copy .small { max-width: 70ch; }
#tab-calendario .calendar-summary-metrics { gap: .45rem; }
#tab-calendario .calendar-summary-metrics span {
  padding: .35rem .55rem;
  font-size: .66rem;
  background: color-mix(in srgb, var(--panel) 72%, transparent);
}
#tab-calendario .cal-filters {
  display: flex;
  align-items: center;
  gap: .55rem .65rem;
  margin: 0;
  padding: .85rem 1rem;
  border: 1px solid var(--border);
  border-radius: 18px;
  background: color-mix(in srgb, var(--panel) 88%, transparent);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.04);
}
#tab-calendario .cal-filters::before {
  content: 'Exibir';
  flex: 0 0 auto;
  color: var(--muted);
  font-size: .68rem;
  font-weight: 800;
  letter-spacing: .04em;
  text-transform: uppercase;
}
#tab-calendario .type-chip {
  min-height: 36px;
  padding-inline: .78rem;
  font-size: .74rem;
}
#tab-calendario .cal-world-filter-control {
  min-height: 36px;
  margin-left: auto;
  padding-left: .65rem;
  border-left: 1px solid var(--border);
}
#tab-calendario .calendar-grid {
  grid-template-columns: repeat(7, minmax(0, 1fr));
  gap: .8rem;
  margin-top: .05rem;
}
#tab-calendario .cal-day {
  min-height: 178px;
  padding: .9rem;
  border-radius: 17px;
  box-shadow: 0 7px 16px rgba(3, 7, 18, .08);
}
#tab-calendario .cal-day .cd-head {
  min-height: 30px;
  margin-bottom: .7rem;
  padding-bottom: .5rem;
  border-bottom: 1px solid color-mix(in srgb, var(--border) 72%, transparent);
}
#tab-calendario .cal-day .cd-dow { font-size: .86rem; }
#tab-calendario .cal-event {
  margin-bottom: .55rem;
  padding: .58rem .62rem .6rem .7rem;
  border-radius: 11px;
  line-height: 1.35;
}
#tab-calendario .cal-event .ce-time { margin-bottom: .18rem; }
#tab-calendario .cal-event .ce-title { overflow-wrap: anywhere; }
#tab-calendario .cal-empty { padding-top: .25rem; }
#tab-calendario .calendar-month {
  padding: .15rem;
  border: 1px solid var(--border);
  border-radius: 18px;
  background: color-mix(in srgb, var(--panel) 68%, transparent);
}
#tab-calendario .calendar-month .cm-head,
#tab-calendario .calendar-month .cm-grid { gap: .6rem; }
#tab-calendario .calendar-month .cm-head { margin-bottom: .6rem; }
#tab-calendario .calendar-month .cm-head span {
  padding: .25rem;
  font-size: .7rem;
  letter-spacing: .04em;
  text-transform: uppercase;
}
#tab-calendario .cm-cell {
  min-height: 108px;
  padding: .65rem;
  border-radius: 14px;
  box-shadow: 0 5px 12px rgba(3, 7, 18, .06);
}
#tab-calendario .cm-daynum { font-size: .9rem; }
#tab-calendario .cm-dots { gap: 5px; }

@media (max-width: 1080px) {
  #tab-calendario .cal-dex { grid-template-columns: auto minmax(0, 1fr) auto; }
  #tab-calendario .cal-controls { grid-column: 2 / -1; justify-self: end; }
  #tab-calendario .calendar-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}
@media (max-width: 760px) {
  #tab-calendario .cal-dex {
    grid-template-columns: auto minmax(0, 1fr);
    align-items: start;
  }
  #tab-calendario .cal-view-toggle {
    grid-column: 1 / -1;
    justify-self: stretch;
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  #tab-calendario .cvt-btn { min-height: 36px; }
  #tab-calendario .cal-controls {
    grid-column: 1 / -1;
    width: 100%;
    justify-self: stretch;
  }
  #tab-calendario .cal-controls .btn { flex: 1 1 0; }
  #tab-calendario .cal-next-up { align-items: flex-start; }
  #tab-calendario .cal-next-up .rsvp-ctrl { flex: 1 1 100%; }
  #tab-calendario .calendar-summary { grid-template-columns: auto minmax(0, 1fr); }
  #tab-calendario .calendar-summary-metrics { grid-column: 1 / -1; justify-content: flex-start; }
  #tab-calendario .cal-filters { align-items: stretch; flex-wrap: wrap; }
  #tab-calendario .cal-filters::before { width: 100%; }
  #tab-calendario .cal-world-filter-control {
    width: 100%;
    justify-content: space-between;
    margin-left: 0;
    padding: .55rem 0 0;
    border-top: 1px solid var(--border);
    border-left: 0;
  }
  #tab-calendario .cal-world-filter { flex: 1 1 auto; min-width: 0; }
  #tab-calendario .calendar-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .65rem; }
  #tab-calendario .cal-day { min-height: 154px; padding: .75rem; }
  #tab-calendario .calendar-month { padding: .45rem; }
  #tab-calendario .calendar-month .cm-head,
  #tab-calendario .calendar-month .cm-grid { gap: .35rem; }
  #tab-calendario .cm-cell { min-height: 82px; padding: .5rem; }
}
@media (max-width: 480px) {
  #tab-calendario { gap: .85rem; padding-bottom: 1rem; }
  #tab-calendario .cal-dex { padding: .9rem; }
  #tab-calendario .cal-dex-lights .cal-lens { width: 25px; height: 25px; }
  #tab-calendario .cal-dex-title h2 { font-size: 1.25rem; }
  #tab-calendario .cal-next-up { padding: .85rem; }
  #tab-calendario .calendar-summary { padding: .85rem; gap: .7rem; }
  #tab-calendario .calendar-summary-art { width: 58px; height: 50px; }
  #tab-calendario .calendar-summary-sprite { width: 48px; height: 48px; }
  #tab-calendario .calendar-summary-copy strong { font-size: .88rem; }
  #tab-calendario .type-chip { flex: 1 1 auto; justify-content: center; }
  #tab-calendario .calendar-grid { grid-template-columns: 1fr; }
  #tab-calendario .cal-day { min-height: 0; }
  #tab-calendario .calendar-month .cm-head span { font-size: .56rem; }
  #tab-calendario .cm-cell { min-height: 68px; padding: .38rem; }
  #tab-calendario .cm-daynum { font-size: .75rem; }
}
