:root{
  --ground:#F1F0EC; --surface:#FBFAF7; --surface-alt:#E8E7E1;
  --ink:#1A1D26; --ink-mid:#4B505C; --ink-soft:#6E737F;
  --rule:#D6D4CB; --rule-soft:#E3E1D9;
  --madder:#A6321F; --madder-bg:#F6E5E0;
  --teal:#2E6B63; --teal-bg:#DFEBE8;
  --ochre:#8A6314; --ochre-bg:#F3E9D2;
  --f-display:"Zilla Slab",Georgia,serif;
  --f-body:"IBM Plex Sans","Segoe UI",system-ui,sans-serif;
  --f-mono:"IBM Plex Mono",Menlo,Consolas,monospace;
  --shadow:0 1px 2px rgba(26,29,38,.05),0 8px 24px -16px rgba(26,29,38,.18);
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  --ground:#14161C; --surface:#1C1F27; --surface-alt:#232731;
  --ink:#E7E6E1; --ink-mid:#AAAFB9; --ink-soft:#868C97;
  --rule:#2E323C; --rule-soft:#262A33;
  --madder:#E27056; --madder-bg:#33201C;
  --teal:#63AFA2; --teal-bg:#1A2B2A;
  --ochre:#D6A44A; --ochre-bg:#2E2718;
  --shadow:0 1px 2px rgba(0,0,0,.3),0 8px 24px -16px rgba(0,0,0,.6);
}}
*{box-sizing:border-box}
body{margin:0;background:var(--ground);color:var(--ink);font-family:var(--f-body);
  font-size:15.5px;line-height:1.6;-webkit-font-smoothing:antialiased}

/* topo */
.topo{background:var(--surface);border-bottom:1px solid var(--rule);position:sticky;top:0;z-index:20}
.topo-in{max-width:78rem;margin:0 auto;padding:.7rem 1.4rem;display:flex;align-items:center;
  justify-content:space-between;gap:1.5rem;flex-wrap:wrap}
.marca{font-family:var(--f-display);font-weight:600;font-size:1.15rem;color:var(--ink);
  text-decoration:none;white-space:nowrap}
.marca span{font-family:var(--f-mono);font-size:.66rem;letter-spacing:.12em;text-transform:uppercase;
  color:var(--madder);vertical-align:middle;margin-left:.3rem}
.topo nav{display:flex;gap:.2rem;flex-wrap:wrap}
.topo nav a{font-size:.88rem;color:var(--ink-mid);text-decoration:none;padding:.35rem .7rem;
  border-radius:4px}
.topo nav a:hover{background:var(--surface-alt);color:var(--ink)}
.topo nav a.ativo{background:var(--madder-bg);color:var(--madder);font-weight:500}
.topo nav a.sair{color:var(--ink-soft);font-size:.8rem}

main{max-width:78rem;margin:0 auto;padding:1.6rem 1.4rem 5rem}

h1{font-family:var(--f-display);font-weight:600;font-size:1.6rem;margin:0 0 .2rem;letter-spacing:-.01em}
h2{font-family:var(--f-display);font-weight:600;font-size:1.15rem;margin:0 0 .6rem}
.sub{color:var(--ink-soft);font-size:.9rem;margin:0 0 1.4rem}
a{color:var(--madder)}

/* login */
.tela-login{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:1.4rem}
.cartao-login{background:var(--surface);border:1px solid var(--rule);border-radius:8px;
  padding:2.2rem;width:100%;max-width:20rem;box-shadow:var(--shadow);text-align:center}
.cartao-login h1{font-size:1.5rem;margin-bottom:.1rem}
.cartao-login .sub{font-family:var(--f-mono);font-size:.7rem;letter-spacing:.1em;
  text-transform:uppercase;color:var(--madder);margin-bottom:1.5rem}

/* controles */
input[type=text],input[type=password],select,textarea{
  width:100%;font-family:var(--f-body);font-size:.95rem;color:var(--ink);
  background:var(--ground);border:1px solid var(--rule);border-radius:5px;
  padding:.55rem .7rem;margin-bottom:.7rem}
textarea{font-family:var(--f-body);resize:vertical;min-height:5rem;line-height:1.55}
textarea.mono{font-family:var(--f-mono);font-size:.82rem;line-height:1.65;min-height:26rem}
input:focus,select:focus,textarea:focus{outline:2px solid var(--madder);outline-offset:1px;border-color:transparent}
label{display:block;font-family:var(--f-mono);font-size:.68rem;letter-spacing:.07em;
  text-transform:uppercase;color:var(--ink-soft);margin-bottom:.25rem}
button,.botao{font-family:var(--f-body);font-size:.9rem;font-weight:500;cursor:pointer;
  background:var(--madder);color:#fff;border:none;border-radius:5px;padding:.55rem 1.1rem;
  text-decoration:none;display:inline-block}
button:hover,.botao:hover{filter:brightness(1.08)}
button:disabled{opacity:.5;cursor:not-allowed}
button.sec{background:var(--surface-alt);color:var(--ink-mid)}
button:focus-visible,a:focus-visible{outline:2px solid var(--madder);outline-offset:2px}

/* grid */
.duas{display:grid;grid-template-columns:20rem 1fr;gap:1.4rem;align-items:start}
@media(max-width:60rem){.duas{grid-template-columns:1fr}}

.painel{background:var(--surface);border:1px solid var(--rule);border-radius:7px;
  padding:1.1rem 1.2rem;box-shadow:var(--shadow)}
.painel + .painel{margin-top:1rem}
.painel h2{font-size:.95rem;padding-bottom:.5rem;border-bottom:1px solid var(--rule-soft);margin-bottom:.8rem}

/* avisos */
.aviso{border-radius:5px;padding:.7rem .9rem;font-size:.88rem;margin:.7rem 0;
  border-left:3px solid var(--ink-soft);background:var(--surface-alt)}
.aviso.erro{border-left-color:var(--madder);background:var(--madder-bg);color:var(--madder)}
.aviso.ok{border-left-color:var(--teal);background:var(--teal-bg);color:var(--teal)}
.aviso.alerta{border-left-color:var(--ochre);background:var(--ochre-bg);color:var(--ochre)}

/* chat */
.conversa{display:flex;flex-direction:column;gap:.8rem;margin-bottom:1.2rem}
.msg{max-width:min(38rem,88%);padding:.7rem .95rem;border-radius:10px;font-size:.94rem;
  white-space:pre-wrap;word-wrap:break-word}
.msg.eu{align-self:flex-end;background:var(--teal-bg);color:var(--ink);border-bottom-right-radius:3px}
.msg.ela{align-self:flex-start;background:var(--surface);border:1px solid var(--rule);
  border-bottom-left-radius:3px;box-shadow:var(--shadow)}
.msg .rot{display:block;font-family:var(--f-mono);font-size:.6rem;letter-spacing:.1em;
  text-transform:uppercase;color:var(--madder);margin-bottom:.3rem}

/* cartas sorteadas */
.tiragem{display:flex;gap:.8rem;flex-wrap:wrap;margin:1rem 0}
.carta{width:8.5rem;background:var(--surface);border:1px solid var(--rule);border-radius:6px;
  overflow:hidden;box-shadow:var(--shadow)}
.carta img{width:100%;display:block;aspect-ratio:768/1376;object-fit:cover}
.carta.inv img{transform:rotate(180deg)}
.carta .cap{padding:.4rem .5rem}
.carta .pos{font-family:var(--f-mono);font-size:.56rem;letter-spacing:.06em;text-transform:uppercase;
  color:var(--ink-soft);display:block;line-height:1.35}
.carta .nm{font-family:var(--f-display);font-weight:600;font-size:.79rem;line-height:1.2;
  display:block;margin-top:.15rem}
.carta .invtag{font-family:var(--f-mono);font-size:.56rem;color:var(--madder);text-transform:uppercase;
  letter-spacing:.06em}

/* baralho */
.grade{display:grid;grid-template-columns:repeat(auto-fill,minmax(7.5rem,1fr));gap:.8rem}
.grade .carta{width:auto}

/* tabelas */
.tab-scroll{overflow-x:auto;border:1px solid var(--rule);border-radius:6px;background:var(--surface)}
table{border-collapse:collapse;width:100%;font-size:.88rem;min-width:32rem}
th,td{text-align:left;padding:.5rem .75rem;border-bottom:1px solid var(--rule-soft);vertical-align:top}
thead th{font-family:var(--f-mono);font-size:.65rem;letter-spacing:.07em;text-transform:uppercase;
  color:var(--ink-soft);background:var(--surface-alt);white-space:nowrap}
tbody tr:last-child td{border-bottom:none}
td.num,th.num{text-align:right;font-family:var(--f-mono);font-variant-numeric:tabular-nums;white-space:nowrap}

/* metricas */
.metricas{display:grid;grid-template-columns:repeat(auto-fit,minmax(8.5rem,1fr));gap:.7rem;margin-bottom:1.2rem}
.metrica{background:var(--surface);border:1px solid var(--rule);border-radius:6px;padding:.8rem .9rem;
  box-shadow:var(--shadow)}
.metrica .rot{font-family:var(--f-mono);font-size:.62rem;letter-spacing:.08em;text-transform:uppercase;
  color:var(--ink-soft);display:block;margin-bottom:.25rem}
.metrica .val{font-family:var(--f-display);font-weight:600;font-size:1.45rem;line-height:1.1;
  font-variant-numeric:tabular-nums}
.metrica .obs{font-family:var(--f-mono);font-size:.68rem;color:var(--ink-soft)}

.chip{display:inline-block;font-family:var(--f-mono);font-size:.63rem;font-weight:500;letter-spacing:.06em;
  text-transform:uppercase;padding:.15rem .45rem;border-radius:3px}
.chip.ok{color:var(--teal);background:var(--teal-bg)}
.chip.alerta{color:var(--ochre);background:var(--ochre-bg)}
.chip.erro{color:var(--madder);background:var(--madder-bg)}

code,.mono{font-family:var(--f-mono);font-size:.82em}
.seed{font-family:var(--f-mono);font-size:.68rem;color:var(--ink-soft);word-break:break-all}

.carregando{display:inline-block;font-family:var(--f-mono);font-size:.8rem;color:var(--madder)}
.carregando::after{content:"";animation:pontos 1.4s steps(4,end) infinite}
@keyframes pontos{0%{content:""}25%{content:"."}50%{content:".."}75%{content:"..."}}
@media (prefers-reduced-motion:reduce){.carregando::after{animation:none;content:"..."}}
