/* ==================================================================
 * style.css — a mesma linguagem visual do esboço de telas, agora em
 * tela cheia: sem moldura de celular, sem notas laterais.
 * ================================================================== */

:root{
  --bg:#0a0908; --panel:#15120f; --panel2:#1e1a16; --line:#2e2822;
  --ink:#e8e2d8; --muted:#8a8177; --dim:#5f574e;
  --blood:#8f2222; --blood-lit:#c33a2c; --gold:#c79a3e; --moon:#9db4c4;
  --ok:#7fae8a; --warn:#a8792a; --err:#c86a6a;
  --topo:env(safe-area-inset-top,0px);
  --base:env(safe-area-inset-bottom,0px);
}

*{box-sizing:border-box; margin:0; padding:0}
[hidden]{display:none !important}

html,body{height:100%}
body{
  background:#08070a; color:var(--ink);
  font:16px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
  -webkit-font-smoothing:antialiased;
  -webkit-tap-highlight-color:transparent;
  overscroll-behavior:none;
}
button{font:inherit; color:inherit; cursor:pointer}
b{font-weight:600}

/* Cada tela ocupa a janela inteira. */
.tela{
  position:fixed; inset:0;
  display:flex; flex-direction:column;
  background:var(--bg);
  padding-top:var(--topo);
}
.tela.noturna{background:#000}

.centro{text-align:center}
.link{background:none; border:0; color:var(--dim); font-size:12px;
  letter-spacing:.6px; text-decoration:underline; text-underline-offset:3px}

/* ================= SETUP ================= */
.s-head{
  display:flex; align-items:center; justify-content:space-between; gap:12px;
  padding:16px 20px 14px; border-bottom:1px solid var(--line);
}

/* A marca fica no topo e some do caminho: o app é uma ferramenta de mesa,
   não uma vitrine. Nome e lua uma vez, na tela inicial, e nunca mais. */
.marca{display:flex; align-items:center; gap:11px; min-width:0}
.marca-icone{
  flex:0 0 34px; width:34px; height:34px; border-radius:9px; display:block;
  box-shadow:0 0 18px rgba(199,154,62,.13);
}
.marca-txt{min-width:0}
.marca-nome{
  font:600 20px/1.1 Georgia,serif; letter-spacing:1.2px; color:var(--ink);
}
.marca-sub{
  font-size:9.5px; color:var(--dim); margin-top:3px;
  letter-spacing:.7px; text-transform:uppercase; line-height:1.3;
}

.s-titulo{padding:15px 20px 0}
.s-title{font:600 19px/1.2 Georgia,serif; letter-spacing:.4px}
.s-sub{font-size:11.5px; color:var(--dim); margin-top:3px; letter-spacing:.4px; text-transform:uppercase}
.s-acoes{display:flex; gap:7px; flex:0 0 auto}
.icone{
  flex:0 0 38px; width:38px; height:38px; border-radius:9px;
  background:var(--panel); border:1px solid var(--line); color:var(--muted); font-size:17px;
  display:grid; place-items:center; text-decoration:none;
}

.s-body{flex:1; overflow-y:auto; -webkit-overflow-scrolling:touch; padding:14px 20px 12px}
.s-body::-webkit-scrollbar{width:5px}
.s-body::-webkit-scrollbar-thumb{background:#2a2521; border-radius:3px}

.lbl{font-size:10.5px; text-transform:uppercase; letter-spacing:1.2px; color:var(--dim); margin-bottom:9px}

.players{display:grid; grid-template-columns:repeat(8,1fr); gap:5px; margin-bottom:20px}
.players button{
  background:var(--panel); border:1px solid var(--line); color:var(--muted);
  border-radius:7px; padding:11px 0; font-size:14px; transition:.12s;
}
.players button.on{background:var(--blood); border-color:var(--blood-lit); color:#fff; font-weight:600}

.roles{display:flex; flex-direction:column; gap:5px; margin-bottom:6px}
.role{
  display:flex; align-items:center; gap:11px;
  background:var(--panel); border:1px solid var(--line);
  border-radius:9px; padding:9px 11px; transition:.12s;
}
.role.picked{background:#1c1512; border-color:#4a2a24}
.role.night{border-left:2px solid #3a2c22}
.tok{
  width:26px; height:26px; flex:0 0 26px; border-radius:50%; display:grid; place-items:center;
  font-size:11px; font-weight:700; background:#000; border:1px solid var(--line); color:var(--muted);
}
.role.picked .tok{border-color:var(--gold); color:var(--gold)}
.tok.none{font-size:9px; color:var(--dim)}
.rname{flex:1; min-width:0}
.rname b{display:block; font-size:14px; font-weight:500}
.rname span{display:block; font-size:10.5px; color:var(--dim); margin-top:1px}
.role.picked .rname b{color:#fff}
.cnt{display:flex; align-items:center; gap:2px}
.cnt button{
  width:34px; height:34px; border-radius:7px; background:#000; border:1px solid var(--line);
  color:var(--muted); font-size:17px; line-height:1;
}
.cnt button:disabled{opacity:.25; cursor:default}
.cnt .n{width:24px; text-align:center; font-size:15px; font-variant-numeric:tabular-nums; color:var(--dim)}
.role.picked .cnt .n{color:var(--gold); font-weight:600}

/* Cabeçalho de grupo — só aparece quando há alguma expansão ligada. */
.grupo{
  font-size:10px; text-transform:uppercase; letter-spacing:1.4px; color:var(--dim);
  margin:14px 0 7px; display:flex; align-items:center; gap:6px;
}
.grupo:first-child{margin-top:0}
.grupo .emb{font-size:12px}
.grupo-vazio{
  font-size:11.5px; color:var(--dim); line-height:1.5; padding:10px 11px;
  border:1px dashed var(--line); border-radius:9px;
}
.grupo-vazio code{font-family:ui-monospace,Menlo,monospace; font-size:11px; color:var(--muted)}

/* ---- seção Expansões ---- */
.exp{margin-top:16px}
.exp-cab{
  width:100%; display:flex; align-items:center; justify-content:space-between;
  background:var(--panel); border:1px solid var(--line); color:var(--muted);
  border-radius:9px; padding:12px 13px; font-size:13px;
}
.exp-cab .seta{font-style:normal; font-size:11px; transition:transform .15s}
.exp-cab.aberta .seta{transform:rotate(180deg)}
.exp-lista{display:flex; flex-direction:column; gap:5px; margin-top:5px}
.exp-item{
  display:flex; align-items:flex-start; gap:10px; text-align:left;
  background:var(--panel); border:1px solid var(--line); color:var(--muted);
  border-radius:9px; padding:10px 11px;
}
.exp-item.on{background:#1c1512; border-color:#4a2a24}
.exp-item .cx{
  flex:0 0 20px; width:20px; height:20px; border-radius:5px; margin-top:1px;
  background:#000; border:1px solid var(--line); color:var(--gold);
  display:grid; place-items:center; font-size:11px;
}
.exp-item.on .cx{border-color:var(--gold)}
.exp-txt{flex:1; min-width:0}
.exp-txt b{display:block; font-size:13.5px; font-weight:500}
.exp-item.on .exp-txt b{color:#fff}
.exp-txt span{display:block; font-size:11px; color:var(--dim); margin-top:2px; line-height:1.4}

.s-foot{
  border-top:1px solid var(--line); background:#0d0b09;
  padding:12px 20px calc(16px + var(--base));
}
.tally{display:flex; align-items:baseline; justify-content:space-between; margin-bottom:4px}
.tally .k{font-size:11px; text-transform:uppercase; letter-spacing:1px; color:var(--dim)}
.tally .v{font:600 18px/1 Georgia,serif; font-variant-numeric:tabular-nums}
.tally .v.ok{color:var(--ok)} .tally .v.bad{color:var(--err)}
.msg{font-size:12px; margin-bottom:10px; min-height:17px; line-height:1.4}
.msg.bad{color:var(--err)} .msg.warn{color:var(--warn)} .msg.ok{color:var(--dim)}
.msg .porque{
  background:none; border:0; padding:0 0 0 5px; color:inherit; font-size:11.5px;
  text-decoration:underline; text-underline-offset:2px; opacity:.85;
}
.go{
  width:100%; padding:16px; border:0; border-radius:10px; background:var(--blood); color:#fff;
  font:600 15px/1 inherit; letter-spacing:.6px; text-transform:uppercase;
}
.go:disabled{background:#241c19; color:#584c46; cursor:default}
.aux{display:flex; gap:8px; margin-bottom:11px}
.aux button{
  flex:1; background:none; border:1px solid var(--line); color:var(--muted);
  border-radius:7px; padding:10px; font-size:12px;
}
/* "Explicar as regras" divide a linha com "Começar a noite", mas nunca
   compete com ela: a mesa que já jogou vai direto para a direita. */
.ir{display:flex; gap:8px}
.ir .explicar{
  flex:0 0 38%; border:1px solid var(--line); background:none; color:var(--muted);
  border-radius:10px; padding:16px 8px; font-size:12.5px; line-height:1.2;
}
.ir .go{flex:1; width:auto}

/* ================= NOITE / CARREGANDO ================= */
.n-top{padding:14px 18px 0; display:flex; justify-content:space-between; align-items:center; gap:10px}
.n-abort{
  background:none; border:1px solid #221c18; color:#3b342e; font-size:10px;
  letter-spacing:1px; text-transform:uppercase; padding:9px 12px; border-radius:6px;
}
.n-abort.armado{border-color:#4a2420; color:#7a4038}
.n-aviso{font-size:10px; letter-spacing:1px; color:#4a423a; text-transform:uppercase}

.n-core{flex:1; display:grid; place-items:center; padding:20px}
.moon{
  width:118px; height:118px; border-radius:50%; position:relative; margin:0 auto;
  background:radial-gradient(circle at 36% 32%, #23272b 0%, #121417 55%, #0a0b0d 100%);
  box-shadow:0 0 60px 14px rgba(120,145,165,.055), inset -8px -8px 24px rgba(0,0,0,.75);
  transition:box-shadow 1.1s ease;
}
.moon.speaking{box-shadow:0 0 78px 20px rgba(150,180,205,.15), inset -8px -8px 24px rgba(0,0,0,.75)}
.moon::after{
  content:''; position:absolute; inset:0; border-radius:50%;
  background:
    radial-gradient(circle at 62% 68%, rgba(0,0,0,.35) 0 22%, transparent 23%),
    radial-gradient(circle at 34% 58%, rgba(0,0,0,.28) 0 13%, transparent 14%),
    radial-gradient(circle at 55% 30%, rgba(0,0,0,.22) 0 9%, transparent 10%);
}
.n-status{text-align:center; margin-top:34px; height:20px}
.n-status span{
  font-size:11px; letter-spacing:2.5px; text-transform:uppercase; color:#2c2721;
  transition:color .7s;
}
.n-status span.act{color:#5a5049}
.c-detalhe{margin-top:14px; font-size:11.5px; color:#3b342e; letter-spacing:.5px}

.n-bar{height:2px; background:#141110; position:relative; flex:0 0 2px}
.n-bar i{
  position:absolute; inset:0 auto 0 0; width:0%;
  background:linear-gradient(90deg,#4a1616,#8f2222); transition:width .35s linear;
}
.n-foot{flex:0 0 auto; padding:12px 18px calc(18px + var(--base)); text-align:center}
.n-foot small{font-size:10px; color:#241f1b; letter-spacing:1.5px}

/* fila de depuração — não faz parte do app, só aparece com ?debug=1 */
.dbg{
  position:absolute; left:0; right:0; bottom:0; background:rgba(7,9,11,.97);
  border-top:1px solid #1d2429; padding:12px 16px calc(16px + var(--base));
  max-height:56%; overflow-y:auto;
}
.dbg h4{font-size:9.5px; letter-spacing:1.4px; text-transform:uppercase; color:#3d525f; margin-bottom:9px}
.q{display:flex; gap:8px; padding:5px 0; font-size:11px; border-bottom:1px solid #12181c; align-items:flex-start}
.q:last-child{border:0}
.q .id{flex:0 0 34px; color:#2f3d46; font-family:ui-monospace,Menlo,monospace; font-size:10px; padding-top:1px}
.q .tx{flex:1; color:#39464f; line-height:1.45}
.q .du{flex:0 0 34px; text-align:right; color:#2f3d46; font-size:10px; padding-top:1px}
.q.done .tx{color:#2b363d}
.q.now .tx{color:var(--moon)} .q.now .id, .q.now .du{color:#6d8ea3}
.speed{display:flex; gap:5px; justify-content:center; margin-top:11px}
.speed button{background:none; border:1px solid #1d2429; color:#3d525f; font-size:10px; padding:6px 12px; border-radius:5px}
.speed button.on{border-color:#3d525f; color:var(--moon)}

/* ================= DIA ================= */
.d-core{flex:1; display:grid; place-items:center; text-align:center; padding:20px}
.d-lbl{font-size:11px; letter-spacing:2.5px; text-transform:uppercase; color:var(--dim)}
.d-timer{
  font:600 84px/1 Georgia,serif; font-variant-numeric:tabular-nums;
  letter-spacing:2px; margin:14px 0 10px;
}
.d-timer.urgente{color:var(--err)}
.d-sub{font-size:13px; color:var(--dim)}
.d-foot{padding:12px 20px calc(18px + var(--base))}

/* ================= VOTAÇÃO ================= */
.v-core{flex:1; display:grid; place-items:center; position:relative}
.v-anel{
  position:absolute; width:190px; height:190px; border-radius:50%;
  border:1px solid #2a1a18; animation:pulsa 2.4s ease-in-out infinite;
}
@keyframes pulsa{
  0%,100%{transform:scale(.9); opacity:.25}
  50%{transform:scale(1.08); opacity:.7}
}
.v-word{
  position:relative; font:700 34px/1.1 Georgia,serif; letter-spacing:3px;
  text-transform:uppercase; color:var(--muted); text-align:center; transition:.3s;
}
.v-word.gritando{font-size:52px; color:var(--blood-lit); letter-spacing:6px}
@media(prefers-reduced-motion:reduce){ .v-anel{animation:none} }

/* ================= CARTAS ================= */
.card{
  position:relative; border-radius:5px; overflow:hidden; flex:none;
  background:linear-gradient(160deg,#241d18 0%,#15100d 55%,#0d0a08 100%);
  border:1px solid #33291f; display:grid; place-items:center; text-align:center;
}
.card::after{
  content:''; position:absolute; inset:0;
  background:radial-gradient(ellipse at 50% 22%, rgba(199,154,62,.13), transparent 62%);
}
.card .cn{font:700 11px/1 Georgia,serif; color:#6d5a3a; position:relative; z-index:1}
.card .cl{font-size:8px; color:#4b3f31; margin-top:3px; position:relative; z-index:1; padding:0 2px; line-height:1.15}
.card img{position:absolute; inset:0; width:100%; height:100%; object-fit:cover; z-index:2}
.thumb{width:32px; height:48px}
.thumb .cn{font-size:13px} .thumb .cl{display:none}
/* Na lista do setup a ficha ao lado já mostra o número do token: enquanto
   a arte não existir, a miniatura só repetiria o número. Some com ela. */
.role .thumb:not(:has(img)){display:none}

/* ================= ELIMINAÇÃO ================= */
.e-head{padding:18px 20px 12px; border-bottom:1px solid var(--line)}
.e-title{font:600 19px/1.25 Georgia,serif}
.e-sub{font-size:12px; color:var(--warn); margin-top:5px; line-height:1.4}
.e-body{flex:1; overflow-y:auto; -webkit-overflow-scrolling:touch; padding:16px 18px}
.e-body::-webkit-scrollbar{width:5px} .e-body::-webkit-scrollbar-thumb{background:#2a2521}
.egrid{display:grid; grid-template-columns:repeat(3,1fr); gap:10px}
.ecard{background:none; border:0; padding:0; display:flex; flex-direction:column; align-items:center; gap:5px}
.ecard .card{width:100%; aspect-ratio:2/3; transition:.12s}
.ecard.marcada .card{border-color:var(--blood)}
.ecard:active .card{transform:translateY(-2px); border-color:var(--blood-lit)}
.ecard .en{font-size:11px; color:var(--muted)}
.ecard .badge{
  position:absolute; top:4px; right:4px; z-index:3; background:var(--blood); color:#fff;
  font-size:10px; font-weight:700; width:18px; height:18px; border-radius:50%;
  display:grid; place-items:center;
}
.sel{border-top:1px solid var(--line); padding:11px 18px; background:#0d0b09}
.lbl2{font-size:10px; text-transform:uppercase; letter-spacing:1.1px; color:var(--dim); margin-bottom:7px}
.chips{display:flex; flex-wrap:wrap; gap:5px; min-height:28px; align-items:center}
.chip{background:#1c1512; border:1px solid #4a2a24; color:var(--ink); font-size:12px; padding:5px 9px; border-radius:5px}
.chip.none{border-color:#3a4a3a; color:#8aa88a}
.vazio{font-size:12px; color:#4a423a}
.e-foot{padding:12px 18px calc(18px + var(--base)); display:flex; gap:8px; background:#0d0b09}
.e-foot button{
  flex:1; padding:14px 10px; border-radius:9px; font:600 13px/1.15 inherit;
  border:1px solid var(--line); background:none; color:var(--muted);
}
.e-foot .prim{background:var(--blood); border-color:var(--blood); color:#fff}
.e-foot .prim:disabled{background:#241c19; border-color:#241c19; color:#584c46; cursor:default}

/* ================= RESULTADO ================= */
.res{
  flex:1; display:flex; flex-direction:column; justify-content:center;
  padding:26px 22px calc(26px + var(--base)); text-align:center; overflow-y:auto;
}
.res h2{font:700 26px/1.25 Georgia,serif; letter-spacing:.5px; margin-bottom:10px}
.res h2 .linha{display:block}
.win-aldeia{color:var(--ok)} .win-lobisomem{color:var(--err)}
.win-servo{color:#a98ab5} .win-curtidor{color:var(--gold)} .win-none{color:var(--muted)}
.win-aprendiz{color:#c08a4a}
.res .porque{font-size:14px; color:var(--ink); line-height:1.55; margin-bottom:14px}
.res .regra{
  font-size:11.5px; color:var(--dim); line-height:1.5; margin:0 auto 16px; max-width:34ch;
  border-left:2px solid var(--line); padding-left:10px; text-align:left;
}
.res .mortos{display:flex; gap:8px; justify-content:center; margin-bottom:20px; flex-wrap:wrap}
.res .mortos .card{width:54px; height:81px}
.res .indet{font-size:13.5px; color:var(--muted); line-height:1.7; margin-bottom:20px; text-align:left; max-width:34ch}
.res .indet li{margin-top:6px}
.res .botoes{display:flex; gap:8px}
.res .botoes button{
  flex:1; padding:14px 10px; border-radius:9px; font:600 13px/1 inherit;
  border:1px solid var(--line); background:none; color:var(--muted);
}
.res .botoes .prim{background:var(--blood); border-color:var(--blood); color:#fff}
.ask{background:var(--panel); border:1px solid var(--line); border-radius:10px; padding:16px; margin-bottom:16px}
.ask p{font-size:15px; color:var(--ink); margin-bottom:14px}
.ask .bts{display:flex; gap:8px}
.ask button{
  flex:1; padding:13px; border-radius:8px; border:1px solid var(--line);
  background:#0d0b09; color:var(--ink); font-size:14px;
}
.nota{font-size:11.5px; color:#4a423a; line-height:1.5}

/* ================= FOLHA ================= */
.folha-fundo{
  position:fixed; inset:0; z-index:20; background:rgba(0,0,0,.66);
  display:flex; align-items:flex-end; justify-content:center;
}
.folha{
  width:100%; max-width:520px; max-height:82%; overflow-y:auto;
  background:var(--panel); border:1px solid var(--line); border-bottom:0;
  border-radius:16px 16px 0 0; padding:18px 20px calc(20px + var(--base));
  animation:sobe .18s ease-out;
}
@keyframes sobe{from{transform:translateY(14px); opacity:.4} to{transform:none; opacity:1}}
.folha h3{font:600 17px/1.3 Georgia,serif; margin-bottom:14px}
.folha p{font-size:13px; color:var(--muted); line-height:1.6; margin-bottom:12px}
.opcao{display:flex; align-items:center; justify-content:space-between; gap:12px; padding:11px 0; border-bottom:1px solid var(--line)}
.opcao:last-of-type{border-bottom:0}
.opcao .rot{flex:1; min-width:0}
.opcao .rot b{display:block; font-size:13.5px; font-weight:500}
.opcao .rot span{display:block; font-size:11px; color:var(--dim); margin-top:2px; line-height:1.35}
.escolhas{display:flex; gap:4px}
.escolhas button{
  background:#0d0b09; border:1px solid var(--line); color:var(--muted);
  border-radius:6px; padding:8px 11px; font-size:12.5px;
}
.escolhas button.on{background:var(--blood); border-color:var(--blood-lit); color:#fff}
.opcao input[type=range]{width:132px; accent-color:var(--blood-lit)}
.folha .fechar{
  width:100%; margin-top:16px; padding:13px; border-radius:9px;
  border:1px solid var(--line); background:none; color:var(--ink); font-size:13.5px;
}

/* ================= EXPLICAÇÃO / PAPÉIS =================
   As duas únicas telas com a luz acesa. Tudo aqui é o oposto da noite:
   fundo de pergaminho, texto grande, nenhum mistério. A mesa está
   aprendendo a jogar, não jogando. */
.tela.clara{
  --line2:#c9bda8;
  background:#e9e1d3; color:#241d18;
}

.x-head{
  display:flex; align-items:flex-start; justify-content:space-between; gap:12px;
  padding:20px 20px 14px; border-bottom:1px solid var(--line2);
}
.x-title{font:600 21px/1.2 Georgia,serif; letter-spacing:.3px}
.x-passo{font-size:11.5px; color:#7d7062; margin-top:4px; letter-spacing:.4px}
.x-sair{
  background:none; border:1px solid var(--line2); color:#7d7062;
  border-radius:7px; padding:8px 12px; font-size:11.5px; flex:0 0 auto;
}

.x-core{
  flex:1; overflow-y:auto; -webkit-overflow-scrolling:touch;
  display:flex; flex-direction:column; justify-content:center;
  padding:22px 24px;
}
.x-tema{
  font-size:11px; text-transform:uppercase; letter-spacing:2px; color:#96694a;
  margin-bottom:14px;
}
/* O texto é lido em voz alta ao mesmo tempo: quem está aprendendo se
   apoia nos dois. Por isso o corpo grande e a medida curta. */
.x-texto{font:400 21px/1.62 Georgia,serif; color:#241d18; max-width:32ch}
.x-texto.silenciosa{color:#6b6154; font-style:italic; font-size:17px}

.x-pontos{display:flex; gap:5px; justify-content:center; padding:4px 20px 12px; flex-wrap:wrap}
.x-pontos i{
  width:7px; height:7px; border-radius:50%; background:#cdc1ac; transition:.25s;
}
.x-pontos i.feito{background:#a8927a}
.x-pontos i.agora{background:var(--blood); width:20px; border-radius:4px}

.x-foot{
  display:flex; gap:8px; padding:12px 20px calc(16px + var(--base));
  border-top:1px solid var(--line2); background:#e2d9c8;
}
.x-foot button{
  flex:1; padding:14px 8px; border-radius:9px; font:500 13px/1.15 inherit;
  border:1px solid var(--line2); background:#f0eade; color:#4a4038;
}
.x-foot .prim{background:var(--blood); border-color:var(--blood); color:#fff; font-weight:600}
.x-foot button:disabled{opacity:.4; cursor:default}

.x-bar{height:2px; background:#d5c9b5; position:relative; flex:0 0 2px}
.x-bar i{
  position:absolute; inset:0 auto 0 0; width:0%;
  background:linear-gradient(90deg,#a8792a,#8f2222); transition:width .35s linear;
}

/* --- grade dos papéis desta partida --- */
.p-body{flex:1; overflow-y:auto; -webkit-overflow-scrolling:touch; padding:16px 18px}
.pgrid{display:flex; flex-direction:column; gap:10px}
.pcard{
  display:flex; gap:12px; align-items:flex-start;
  background:#f2ecdf; border:1px solid var(--line2); border-radius:10px; padding:11px;
}
.pcard .card{flex:0 0 52px; width:52px; height:78px}
.pinfo{flex:1; min-width:0}
.pinfo b{display:block; font:600 15px/1.2 Georgia,serif; margin-bottom:2px}
.pinfo .en{font-size:10.5px; color:#8b7e6d; letter-spacing:.4px}
.pinfo p{font-size:12.5px; line-height:1.5; color:#4a4038; margin-top:6px}
.p-vazio{font-size:13px; color:#7d7062; line-height:1.6; text-align:center; padding:30px 10px}

.p-foot{
  display:flex; gap:8px; padding:12px 18px calc(18px + var(--base));
  border-top:1px solid var(--line2); background:#e2d9c8;
}
.p-foot button{
  flex:1; padding:14px 10px; border-radius:9px; font:600 13px/1.15 inherit;
  border:1px solid var(--line2); background:#f0eade; color:#4a4038;
}
.p-foot .prim{background:var(--blood); border-color:var(--blood); color:#fff}
.p-foot .prim:disabled{background:#cdc1ac; border-color:#cdc1ac; color:#8b7e6d; cursor:default}

/* ================= PÁGINA DE REGRAS =================
   Não é uma "tela" do app: é documento, e quem rola é a janela.
   O `html,body{height:100%}` lá de cima serve às telas em `position:fixed`
   do narrador; aqui ele transformaria o body num container de scroll
   próprio — o que quebra o lazy-load das imagens, o `scroll-behavior`
   das âncoras do índice e o esconde-barra do navegador no celular. */
html.pagina, html.pagina body{height:auto; min-height:100%; overflow:visible}
html.pagina{scroll-behavior:smooth}
body.pagina{background:var(--bg)}
/* O cabeçalho gruda no topo, então a âncora não pode parar embaixo dele. */
.r-corpo section{scroll-margin-top:96px}

.r-topo{
  position:sticky; top:0; z-index:5;
  display:flex; align-items:center; gap:14px;
  padding:calc(12px + var(--topo)) 20px 12px;
  background:rgba(10,9,8,.94); backdrop-filter:blur(8px);
  border-bottom:1px solid var(--line);
}
.r-voltar{
  color:var(--muted); text-decoration:none; font-size:12.5px;
  border:1px solid var(--line); border-radius:7px; padding:8px 11px; flex:0 0 auto;
}
.r-topo .marca-nome{font-size:17px; display:block}
.r-topo .marca-sub{font-size:9px; display:block}

.r-indice{
  display:flex; gap:6px; overflow-x:auto; padding:11px 20px;
  border-bottom:1px solid var(--line); background:#0d0b09;
  scrollbar-width:none;
}
.r-indice::-webkit-scrollbar{display:none}
.r-indice a{
  flex:0 0 auto; color:var(--muted); text-decoration:none; font-size:12px;
  border:1px solid var(--line); border-radius:999px; padding:6px 12px; white-space:nowrap;
}

.r-corpo{max-width:640px; margin:0 auto; padding:8px 20px 40px}
.r-corpo section{padding:26px 0; border-bottom:1px solid var(--line)}
.r-corpo section:last-child{border-bottom:0}
.r-corpo h2{font:600 23px/1.2 Georgia,serif; margin-bottom:14px; letter-spacing:.3px}
.r-corpo h3{font:600 15px/1.3 Georgia,serif; margin:20px 0 9px; color:var(--gold)}
.r-corpo p{font-size:14.5px; line-height:1.68; color:#cdc5b9; margin-bottom:12px}
.r-corpo p:last-child{margin-bottom:0}
.r-nota{font-size:12.5px !important; color:var(--dim) !important; line-height:1.55 !important}

.r-destaque{
  background:var(--panel); border:1px solid var(--line); border-left:2px solid var(--blood);
  border-radius:9px; padding:15px 16px; margin-top:18px;
}
.r-destaque h3{margin-top:0; color:var(--blood-lit)}

.r-tabela{width:100%; border-collapse:collapse; margin:12px 0; font-size:13.5px}
.r-tabela th{
  text-align:left; font-size:10.5px; text-transform:uppercase; letter-spacing:1px;
  color:var(--dim); font-weight:500; padding:0 10px 8px 0; border-bottom:1px solid var(--line);
}
.r-tabela td{padding:10px 10px 10px 0; border-bottom:1px solid #1a1613; color:#cdc5b9; line-height:1.5}
.r-tabela tr:last-child td{border-bottom:0}

.r-ordem{list-style:none; counter-reset:none; margin-top:12px}
.r-ordem li{display:flex; align-items:center; gap:11px; padding:9px 0; border-bottom:1px solid #1a1613}
.r-ordem li:last-child{border-bottom:0}
.r-tok{
  flex:0 0 26px; width:26px; height:26px; border-radius:50%; display:grid; place-items:center;
  font-size:11px; font-weight:700; background:#000; border:1px solid var(--gold); color:var(--gold);
}
.r-ordem-nome{font-size:14px; color:var(--ink)}
.r-ordem-en{font-size:11px; color:var(--dim); margin-left:auto}

.r-vitoria{list-style:none; margin-top:10px}
.r-vitoria li{padding:11px 0; border-bottom:1px solid #1a1613}
.r-vitoria li:last-child{border-bottom:0}
.r-vitoria b{display:block; font-size:12px; letter-spacing:.6px; text-transform:uppercase; margin-bottom:4px}
.r-vitoria span{font-size:13.5px; color:#cdc5b9; line-height:1.6}
.time-aldeia{color:var(--ok)} .time-lobisomem{color:var(--err)}
.time-curtidor,.time-proprio{color:var(--gold)} .time-variavel{color:#a98ab5}

.r-papeis{display:flex; flex-direction:column; gap:12px; margin-top:14px}
.r-papel{
  display:flex; gap:14px; align-items:flex-start;
  background:var(--panel); border:1px solid var(--line); border-radius:10px; padding:13px;
}
.r-papel .card{flex:0 0 62px; width:62px; height:93px}
.r-papel-txt{flex:1; min-width:0}
.r-papel-txt h3{margin:0 0 4px; color:var(--ink); font-size:16px}
.r-en{font-size:11px; color:var(--dim); font-weight:400; font-family:inherit}
.r-meta{font-size:11px !important; color:var(--dim) !important; margin-bottom:7px !important}
.r-papel-txt p{font-size:13px; line-height:1.55}

.r-construcao{
  background:var(--panel); border:1px dashed #4a3a24; border-radius:10px;
  padding:18px 16px; text-align:center;
}
.r-selo{
  display:inline-block; font-size:10px; letter-spacing:1.6px; text-transform:uppercase;
  color:var(--gold); border:1px solid var(--gold); border-radius:999px;
  padding:5px 13px; margin-bottom:12px;
}

.r-rodape{
  max-width:640px; margin:0 auto; padding:22px 20px calc(30px + var(--base));
  border-top:1px solid var(--line); text-align:center;
}
.r-rodape p{font-size:12px; color:var(--dim); line-height:1.6; margin-bottom:10px}
.r-legal{font-size:11px !important; color:#4a423a !important}
.r-rodape a{color:var(--muted)}

/* Telas largas: o app não estica, ele centraliza. */
@media(min-width:560px){
  .tela{max-width:520px; margin:0 auto; border-left:1px solid #16120f; border-right:1px solid #16120f}
  .egrid{grid-template-columns:repeat(4,1fr)}
}
