:root{
  --paper:#EDF1F5;
  --surface:#FFFFFF;
  --surface-2:#E1E7EE;
  --border:#C7D2DC;
  --ink:#1B2733;
  --ink-soft:#51606E;
  --accent:#C96A2C;
  --accent-ink:#7A3E17;
  --accent-soft:#F1DFCB;
  --good:#2F7D5C;
  --good-soft:#DCEEE4;
  --warn:#B23B22;
  --warn-soft:#F6DCD4;
  --focus:#2C6CBF;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --paper:#10161D; --surface:#182330; --surface-2:#1F2C3B; --border:#33455A;
    --ink:#E7EDF3; --ink-soft:#9FB0C0;
    --accent:#E08A3F; --accent-ink:#FFD9AE; --accent-soft:#3A2A18;
    --good:#57C08A; --good-soft:#1B3226;
    --warn:#E2694A; --warn-soft:#3A1F17;
    --focus:#6FA6E8;
  }
}
:root[data-theme="dark"]{
  --paper:#10161D; --surface:#182330; --surface-2:#1F2C3B; --border:#33455A;
  --ink:#E7EDF3; --ink-soft:#9FB0C0;
  --accent:#E08A3F; --accent-ink:#FFD9AE; --accent-soft:#3A2A18;
  --good:#57C08A; --good-soft:#1B3226;
  --warn:#E2694A; --warn-soft:#3A1F17;
  --focus:#6FA6E8;
}

*{ box-sizing:border-box; }
html,body{ margin:0; padding:0; }
body{
  background:var(--paper);
  color:var(--ink);
  font-family:"IBM Plex Sans", system-ui, sans-serif;
  font-size:15px;
  line-height:1.5;
  -webkit-font-smoothing:antialiased;
  display:flex;
  justify-content:center;
  padding:2.5rem 1.25rem 5rem;
}
.sheet{ width:100%; max-width:960px; display:flex; flex-direction:column; gap:2rem; }
.mono{ font-family:"IBM Plex Mono", ui-monospace, monospace; font-variant-numeric:tabular-nums; }

.masthead{ display:flex; flex-direction:column; gap:.35rem; border-bottom:2px solid var(--ink); padding-bottom:1.1rem; }
.masthead .eyebrow{ font-family:"IBM Plex Mono", monospace; font-size:.72rem; letter-spacing:.14em; text-transform:uppercase; color:var(--accent-ink); font-weight:600; }
.masthead h1{ font-family:"Big Shoulders Display", sans-serif; font-weight:800; font-size:clamp(1.9rem, 4.6vw, 2.7rem); letter-spacing:.01em; margin:0; text-wrap:balance; color:var(--ink); }
.masthead p{ margin:0; max-width:64ch; color:var(--ink-soft); font-size:.95rem; }

.role-status-bar{ display:flex; align-items:center; justify-content:space-between; gap:.75rem; flex-wrap:wrap; }
.role-badge{ font-family:"IBM Plex Mono", monospace; font-size:.7rem; letter-spacing:.1em; text-transform:uppercase; color:var(--ink-soft); border:1.5px solid var(--border); border-radius:99px; padding:.25rem .8rem; }

.section-label{ font-family:"IBM Plex Mono", monospace; font-size:.72rem; letter-spacing:.12em; text-transform:uppercase; color:var(--ink-soft); display:flex; align-items:center; gap:.6rem; margin-bottom:.9rem; }
.section-label::after{ content:""; flex:1; height:1px; background:var(--border); }

section.card{ background:var(--surface); border:1.5px solid var(--border); border-radius:4px; padding:1.5rem 1.6rem; }

.dropzone-form{ display:flex; flex-wrap:wrap; align-items:flex-end; gap:1rem; }
.campo-arquivo{ flex:1; min-width:240px; display:flex; flex-direction:column; gap:.4rem; }
.campo-arquivo label{ font-size:.8rem; color:var(--ink-soft); font-weight:600; }
input[type="file"]{
  font-family:"IBM Plex Sans", sans-serif; font-size:.88rem;
  border:1.5px dashed var(--border); border-radius:4px; padding:.7rem;
  background:var(--paper); color:var(--ink);
}
.upload-hint{ margin:.6rem 0 0; font-size:.82rem; color:var(--ink-soft); }

button.btn, a.btn{
  font-family:"IBM Plex Sans", sans-serif; font-weight:700; font-size:.88rem;
  padding:.65rem 1.1rem; border-radius:3px; cursor:pointer;
  border:1.5px solid var(--ink); background:var(--ink); color:var(--paper);
  text-decoration:none; display:inline-flex; align-items:center; justify-content:center;
}
button.btn:hover, a.btn:hover{ opacity:.88; }
button.btn:disabled{ opacity:.45; cursor:not-allowed; }
button.btn.secondary, a.btn.secondary{ background:transparent; color:var(--ink); }
button.btn.accent, a.btn.accent{ background:var(--accent); border-color:var(--accent); color:#fff; }
button.btn.small, a.btn.small{ padding:.42rem .8rem; font-size:.82rem; }
button.btn.warn, a.btn.warn{ background:var(--warn); border-color:var(--warn); color:#fff; }

.msg{ font-size:.85rem; padding:.6rem .8rem; border-radius:3px; }
.msg.warn{ background:var(--warn-soft); color:var(--warn); border:1px solid var(--warn); }
.msg.good{ background:var(--good-soft); color:var(--good); border:1px solid var(--good); }

.ledger{ display:grid; grid-template-columns:repeat(auto-fit, minmax(150px,1fr)); gap:1rem; }
.stat-tile{ background:var(--surface-2); border-radius:4px; padding:1rem 1.1rem; display:flex; flex-direction:column; gap:.25rem; }
.stat-tile .valor{ font-family:"Big Shoulders Display", sans-serif; font-weight:800; font-size:1.7rem; color:var(--ink); }
.stat-tile .rotulo{ font-size:.78rem; color:var(--ink-soft); text-transform:uppercase; letter-spacing:.06em; }

table.dados{ width:100%; border-collapse:collapse; font-size:.88rem; }
table.dados th, table.dados td{ padding:.55rem .7rem; border-bottom:1px solid var(--border); text-align:left; }
table.dados th{ font-family:"IBM Plex Mono", monospace; font-size:.72rem; text-transform:uppercase; letter-spacing:.05em; color:var(--ink-soft); border-bottom:1.5px solid var(--ink); }
table.dados tbody tr:nth-child(even){ background:var(--surface-2); }
table.dados tr.linha-total td{ border-top:2px solid var(--ink); font-weight:700; }
table.dados td.num, table.dados th.num{ text-align:right; font-family:"IBM Plex Mono", monospace; font-variant-numeric:tabular-nums; }
.tabela-scroll{ overflow-x:auto; }

.pend-row{ display:flex; flex-wrap:wrap; align-items:center; gap:.75rem; padding:.7rem 0; border-bottom:1px solid var(--border); }
.pend-row .quem{ flex:1; min-width:220px; }
.pend-row .quem .meta{ font-size:.78rem; color:var(--ink-soft); }
select, input[type="text"], input[type="password"]{
  font-family:"IBM Plex Sans", sans-serif; font-size:.9rem;
  padding:.5rem .6rem; border:1.5px solid var(--border); border-radius:3px;
  background:var(--paper); color:var(--ink);
}
select:focus, input:focus{ outline:2px solid var(--focus); outline-offset:1px; border-color:var(--focus); }

.login-wrap{ width:100%; max-width:400px; margin:0 auto; display:flex; flex-direction:column; gap:1.25rem; }
.login-card{ background:var(--surface); border:1.5px solid var(--border); border-radius:4px; padding:1.85rem; display:flex; flex-direction:column; gap:1.1rem; }
.login-card h2{ font-family:"Big Shoulders Display", sans-serif; font-weight:800; font-size:1.65rem; margin:0; color:var(--ink); }
.campo{ display:flex; flex-direction:column; gap:.35rem; }
.campo label{ font-size:.8rem; color:var(--ink-soft); font-weight:600; }

.hidden{ display:none !important; }
.historico-item{ display:flex; flex-wrap:wrap; gap:.75rem; align-items:center; padding:.6rem 0; border-bottom:1px solid var(--border); font-size:.85rem; }
.historico-item .tag-ativa{ font-family:"IBM Plex Mono", monospace; font-size:.68rem; text-transform:uppercase; letter-spacing:.08em; color:var(--good); border:1px solid var(--good); border-radius:99px; padding:.15rem .6rem; }
