:root{
  --espresso:#2A1D14; --espresso-2:#3A2A1E; --bronze:#8A6A45; --bronze-2:#6F5334; --bronze-soft:#C9AE86;
  --paper:#F6F4F0; --card:#fff; --line:#E5DFD6; --ink:#241A12; --muted:#6D6257;
  --ok:#3F7A52; --warn:#A36A00; --bad:#A8402F;
  --font-head:'Bricolage Grotesque','Segoe UI',system-ui,sans-serif;
  --font-body:'Instrument Sans','Segoe UI',system-ui,sans-serif;
}
html,body{background:var(--paper);color:var(--ink);font-family:var(--font-body);font-size:15px}
h1,h2,h3,h4,.brand span,.kpi b{font-family:var(--font-head);letter-spacing:-.01em}
a{color:var(--bronze-2)} a:hover{color:var(--espresso)}
:focus-visible{outline:3px solid var(--bronze-soft);outline-offset:2px}

/* Botões e formulários */
.btn-primary{--bs-btn-bg:var(--bronze);--bs-btn-border-color:var(--bronze);--bs-btn-hover-bg:var(--bronze-2);--bs-btn-hover-border-color:var(--bronze-2);--bs-btn-active-bg:var(--espresso);--bs-btn-active-border-color:var(--espresso);--bs-btn-disabled-bg:var(--bronze);--bs-btn-disabled-border-color:var(--bronze)}
.btn-outline-primary{--bs-btn-color:var(--bronze-2);--bs-btn-border-color:var(--bronze);--bs-btn-hover-bg:var(--bronze);--bs-btn-hover-border-color:var(--bronze);--bs-btn-active-bg:var(--bronze-2)}
.form-control,.form-select{border-color:#D6CEC2;border-radius:8px}
.form-control:focus,.form-select:focus{border-color:var(--bronze);box-shadow:0 0 0 .2rem rgba(138,106,69,.2)}
.form-label{font-weight:600;font-size:.85rem;color:var(--espresso-2);margin-bottom:.25rem}
.form-check-input:checked{background-color:var(--bronze);border-color:var(--bronze)}

/* Estrutura admin */
.shell{display:flex;min-height:100vh}
.side{width:236px;flex:0 0 236px;background:var(--espresso);color:#E9E0D3;display:flex;flex-direction:column;position:sticky;top:0;height:100vh;overflow-y:auto}
.brand{display:flex;align-items:center;gap:.7rem;padding:1.1rem 1.1rem 1rem;text-decoration:none;color:#fff}
.brand img{border-radius:50%;background:#fff}
.brand span{font-weight:700;font-size:1.05rem;line-height:1.1;display:flex;flex-direction:column}
.brand small{font-family:var(--font-body);font-weight:400;font-size:.72rem;color:var(--bronze-soft);letter-spacing:.04em}
.side nav{padding:.4rem .6rem;display:flex;flex-direction:column;gap:2px;flex:1}
.side nav a{display:flex;align-items:center;gap:.65rem;padding:.55rem .7rem;border-radius:8px;color:#D9CEBE;text-decoration:none;font-weight:500}
.side nav a:hover{background:var(--espresso-2);color:#fff}
.side nav a.on{background:var(--bronze);color:#fff}
.side-foot{padding:.9rem 1.1rem;border-top:1px solid #4A382A;font-size:.85rem;display:flex;flex-direction:column;gap:.2rem}
.side-foot a{color:var(--bronze-soft);text-decoration:none}
.who{color:#fff;font-weight:600}.who small{display:block;font-weight:400;color:var(--bronze-soft)}
.main{flex:1;min-width:0}
.topbar{display:flex;align-items:center;gap:.8rem;padding:1rem 1.6rem .2rem}
.topbar h1{font-size:1.55rem;margin:0;font-weight:700}
.content{padding:1rem 1.6rem 3rem;max-width:1280px}
@media(max-width:991px){
  .side{position:fixed;left:-250px;z-index:1040;transition:left .2s}
  .side.open{left:0;box-shadow:0 0 0 100vmax rgba(0,0,0,.45)}
  .content,.topbar{padding-left:1rem;padding-right:1rem}
}
@media(prefers-reduced-motion:reduce){*{transition:none!important}}

/* Cartões, tabelas */
.card-box{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:1.2rem}
.card-box h2{font-size:1.05rem;margin:0 0 .9rem;font-weight:700}
.table{--bs-table-bg:transparent;margin:0}
.table thead th{font-size:.78rem;color:var(--muted);font-weight:600;border-bottom:1px solid var(--line);white-space:nowrap}
.table td{vertical-align:middle;border-color:var(--line)}
.table-wrap{overflow-x:auto}
.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.actions{white-space:nowrap;text-align:right}
.empty{padding:2rem;text-align:center;color:var(--muted)}
.toolbar{display:flex;gap:.6rem;flex-wrap:wrap;align-items:center;margin-bottom:1rem}
.toolbar .grow{flex:1}

/* Indicadores */
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:.9rem;margin-bottom:1.2rem}
.kpi{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:1rem 1.1rem;border-left:4px solid var(--bronze)}
.kpi span{display:block;color:var(--muted);font-size:.82rem}
.kpi b{display:block;font-size:1.55rem;margin-top:.15rem;font-weight:700}
.kpi.bad{border-left-color:var(--bad)}.kpi.ok{border-left-color:var(--ok)}.kpi.warn{border-left-color:#D9A441}

/* Chips de status */
.chip{display:inline-block;padding:.15rem .6rem;border-radius:99px;font-size:.78rem;font-weight:600;background:#EEE8DE;color:var(--espresso-2)}
.chip-ok{background:#DDEEE2;color:#2C5A3C}.chip-warn{background:#F7EBCB;color:#7A5200}
.chip-bad{background:#F5DAD4;color:#8A2F20}.chip-mute{background:#E8E4DD;color:#5E554B}.chip-info{background:#E3E9F3;color:#2F4a78}

/* Barras do relatório */
.bars{display:flex;align-items:flex-end;gap:.6rem;height:170px;padding-top:.5rem}
.bars .col{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%;gap:2px;font-size:.72rem;color:var(--muted)}
.bars .pair{display:flex;align-items:flex-end;gap:3px;width:100%;justify-content:center;flex:1}
.bars i{display:block;width:42%;max-width:26px;border-radius:4px 4px 0 0;min-height:2px}
.bars i.in{background:var(--bronze)}.bars i.out{background:#C9BFB0}

/* Login */
.login-page{min-height:100vh;display:grid;grid-template-columns:1.1fr 1fr;background:var(--paper)}
.login-art{background:var(--espresso);display:flex;align-items:center;justify-content:center;padding:2rem;position:relative;overflow:hidden}
.login-art .ring{width:min(380px,70vw);aspect-ratio:1;border-radius:50%;border:14px solid var(--bronze);display:flex;align-items:center;justify-content:center;background:#fff}
.login-art .ring img{width:78%;border-radius:50%}
.login-art::after{content:"";position:absolute;width:640px;height:640px;border-radius:50%;border:2px solid #4A382A;right:-260px;bottom:-300px}
.login-form{display:flex;align-items:center;justify-content:center;padding:2rem}
.login-form form{width:100%;max-width:360px}
.login-form h1{font-size:1.9rem;font-weight:700;margin-bottom:.3rem}
@media(max-width:800px){.login-page{grid-template-columns:1fr}.login-art{display:none}}

/* Portal */
.ptop{background:var(--espresso);color:#fff}
.wrap{max-width:1060px;margin:0 auto;padding:0 1rem}
.ptop .wrap{display:flex;align-items:center;gap:1.2rem;flex-wrap:wrap;padding-top:.7rem;padding-bottom:.7rem}
.ptop .brand{padding:0}
.ptop nav{display:flex;gap:.2rem;flex:1;flex-wrap:wrap}
.ptop nav a{color:#D9CEBE;text-decoration:none;padding:.4rem .8rem;border-radius:8px;font-weight:500}
.ptop nav a:hover{background:var(--espresso-2);color:#fff}.ptop nav a.on{background:var(--bronze);color:#fff}
.pwho{display:flex;gap:.9rem;align-items:center;font-size:.85rem;color:var(--bronze-soft)}
.pwho a{color:#fff;text-decoration:none}
.pcontent{padding-top:1.4rem;padding-bottom:3rem}
.ptitle{font-size:1.6rem;font-weight:700;margin-bottom:1rem}
.pfoot{padding:1.4rem 1rem;color:var(--muted);font-size:.85rem;border-top:1px solid var(--line)}
.pay-code{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.95rem;word-break:break-all;background:#F3EFE8;border:1px solid var(--line);border-radius:8px;padding:.7rem .8rem}
.cat-row{display:grid;grid-template-columns:1fr 110px 120px;gap:.8rem;align-items:center;padding:.65rem 0;border-bottom:1px solid var(--line)}
@media(max-width:560px){.cat-row{grid-template-columns:1fr 90px}.cat-row .pr{grid-column:1}}
