/* ---------------------------------------------------------------
   Tokens. As cores de serie sao a paleta de referencia validada para
   daltonismo (slots 1 a 3); o resto e neutro com leve tom quente.
   --------------------------------------------------------------- */
:root{
  color-scheme: light;
  --bg:#f5f4f1; --surface:#fcfcfb; --surface-2:#f0efec; --line:#e3e1dc; --line-2:#ecebe7;
  --ink:#131312; --ink-2:#52514e; --ink-3:#7c7b76;
  --s1:#2a78d6; --s1-wash:rgba(42,120,214,.10); --s2:#eb6834; --s3:#1baf7a;
  --good:#0ca30c; --warn:#fab219; --crit:#d03b3b;
  --focus:#2a78d6; --shadow:0 1px 2px rgba(20,18,15,.05), 0 6px 22px rgba(20,18,15,.05);
}
@media (prefers-color-scheme: dark){
  :root:where(:not([data-theme="light"])){
    color-scheme: dark;
    --bg:#121211; --surface:#1a1a19; --surface-2:#232321; --line:#2f2f2c; --line-2:#262624;
    --ink:#f4f3ef; --ink-2:#c3c2b7; --ink-3:#8f8e86;
    --s1:#3987e5; --s1-wash:rgba(57,135,229,.14); --s2:#d95926; --s3:#199e70;
    --focus:#3987e5; --shadow:0 1px 2px rgba(0,0,0,.3), 0 8px 26px rgba(0,0,0,.28);
  }
}
:root[data-theme="dark"]{
  color-scheme: dark;
  --bg:#121211; --surface:#1a1a19; --surface-2:#232321; --line:#2f2f2c; --line-2:#262624;
  --ink:#f4f3ef; --ink-2:#c3c2b7; --ink-3:#8f8e86;
  --s1:#3987e5; --s1-wash:rgba(57,135,229,.14); --s2:#d95926; --s3:#199e70;
  --focus:#3987e5; --shadow:0 1px 2px rgba(0,0,0,.3), 0 8px 26px rgba(0,0,0,.28);
}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);font:14.5px/1.5 Archivo,system-ui,sans-serif;-webkit-font-smoothing:antialiased}
button,input,select,textarea{font:inherit;color:inherit}
a{color:var(--s1)}
:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
[hidden]{display:none!important}
.mono{font-family:'IBM Plex Mono',ui-monospace,monospace;font-size:12.5px}
.num{font-variant-numeric:tabular-nums}
.muted{color:var(--ink-3)} .sec{color:var(--ink-2)}

/* ---------- entrada ---------- */
.porta{min-height:100dvh;display:grid;place-items:center;padding:24px}
.porta form{width:100%;max-width:360px;background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:30px;box-shadow:var(--shadow)}
.porta h1{font-size:20px;margin:14px 0 4px}
.porta p{margin:0 0 20px;color:var(--ink-2);font-size:13.5px}
.marca{display:flex;align-items:center;gap:10px;font-weight:700;letter-spacing:.02em}
.marca svg{flex:none}
label.f{display:block;font-size:12px;color:var(--ink-2);margin:12px 0 5px;font-weight:600}
.inp{width:100%;background:var(--surface);border:1px solid var(--line);border-radius:6px;padding:10px 12px}
.inp:focus{border-color:var(--s1);outline:none;box-shadow:0 0 0 3px var(--s1-wash)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:1px solid var(--line);background:var(--surface);border-radius:6px;padding:8px 13px;cursor:pointer;font-weight:600;font-size:13.5px;text-decoration:none;color:var(--ink)}
.btn:hover{border-color:var(--ink-3)}
.btn.pri{background:var(--ink);color:var(--surface);border-color:var(--ink)}
.btn.pri:hover{opacity:.9}
.btn.full{width:100%;padding:11px;margin-top:18px}
.btn.min{padding:5px 9px;font-size:12.5px}
.btn.perigo{color:var(--crit)}
.erro{color:var(--crit);font-size:13px;margin-top:10px;min-height:18px}

/* ---------- casca ---------- */
.topo{position:sticky;top:0;z-index:20;background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}
.topo-in{display:flex;align-items:center;gap:14px;padding:10px 20px;flex-wrap:wrap}
.topo .marca{margin-right:auto}
.periodo{display:flex;gap:4px;align-items:center;flex-wrap:wrap}
.chip{border:1px solid var(--line);background:var(--surface);border-radius:999px;padding:5px 11px;font-size:12.5px;cursor:pointer;font-weight:600;color:var(--ink-2)}
.chip[aria-pressed="true"]{background:var(--ink);color:var(--surface);border-color:var(--ink)}
.periodo input[type=date]{border:1px solid var(--line);background:var(--surface);border-radius:6px;padding:4px 6px;font-size:12.5px}
.quem{font-size:12.5px;color:var(--ink-2);display:flex;gap:10px;align-items:center}
.faixa-link{background:var(--s1-wash);color:var(--ink);font-size:12.5px;padding:7px 20px;border-bottom:1px solid var(--line)}

.casca{display:grid;grid-template-columns:260px 1fr;min-height:calc(100dvh - 55px)}
@media (max-width:900px){.casca{grid-template-columns:1fr}.lado{display:none}.lado.aberto{display:block}}
.lado{border-right:1px solid var(--line);padding:14px 10px;background:var(--surface)}
.lado h3{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);margin:16px 10px 6px;font-weight:600}
/* grupos recolhiveis do menu lateral */
.lado .grupo{margin-top:10px}
.grupo-cab{display:flex;align-items:center;gap:6px;width:100%;border:0;background:none;cursor:pointer;
  padding:6px 10px;border-radius:6px;font-size:11px;letter-spacing:.08em;text-transform:uppercase;
  color:var(--ink-3);font-weight:600;text-align:left}
.grupo-cab:hover{background:var(--surface-2);color:var(--ink)}
.grupo-cab .grupo-nome{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.grupo-cab .grupo-qtd{font-size:10.5px;letter-spacing:0;color:var(--ink-3);font-weight:500}
.grupo-cab .seta{width:7px;height:7px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;
  transform:rotate(45deg);margin:0 3px 3px 1px;transition:transform .15s;flex:none}
.grupo-cab[aria-expanded="false"] .seta{transform:rotate(-45deg);margin:0 3px 0 0}
.grupo-itens[hidden]{display:none!important}
.item{display:block;width:100%;text-align:left;border:0;background:none;border-radius:6px;padding:7px 10px;cursor:pointer;color:var(--ink-2);font-weight:500}
.item:hover{background:var(--surface-2);color:var(--ink)}
.item[aria-current="true"]{background:var(--surface-2);color:var(--ink);font-weight:600;box-shadow:inset 2px 0 0 var(--s1)}
.menu-cel{display:none}
@media (max-width:900px){.menu-cel{display:inline-flex}}

main{padding:22px 24px 60px;min-width:0}
.cab{display:flex;gap:16px;align-items:flex-end;justify-content:space-between;flex-wrap:wrap;margin-bottom:18px}
.cab h1{margin:0;font-size:22px;letter-spacing:-.01em;text-wrap:balance}
.cab .sub{color:var(--ink-3);font-size:13px;margin-top:2px}
.acoes{display:flex;gap:6px;flex-wrap:wrap;align-items:center}

.grade{display:grid;gap:14px}
.g-tiles{grid-template-columns:repeat(auto-fill,minmax(160px,1fr))}
.g2{grid-template-columns:repeat(2,minmax(0,1fr))}
@media (max-width:1100px){.g2{grid-template-columns:1fr}}
.card{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:16px 18px;min-width:0}
.card h2{font-size:13.5px;margin:0 0 2px;font-weight:600}
.card .nota{font-size:12.5px;color:var(--ink-3);margin:0 0 12px}
.tile .rot{font-size:12.5px;color:var(--ink-2)}
.tile .val{font-size:27px;font-weight:600;letter-spacing:-.01em;margin-top:2px;line-height:1.15}
.tile .det{font-size:12px;color:var(--ink-3);margin-top:2px}
.sec-t{font-size:12px;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-3);margin:28px 0 10px;font-weight:600}

table.t{width:100%;border-collapse:collapse;font-size:13px}
.t th{text-align:left;font-weight:600;color:var(--ink-3);font-size:12px;padding:6px 8px;border-bottom:1px solid var(--line)}
.t td{padding:7px 8px;border-bottom:1px solid var(--line-2);vertical-align:top}
.t td.r,.t th.r{text-align:right;font-variant-numeric:tabular-nums}
.t tr:last-child td{border-bottom:0}
.rolavel{overflow-x:auto}
.pill{display:inline-block;font-size:11px;font-weight:600;border-radius:999px;padding:1px 7px;border:1px solid var(--line);color:var(--ink-2);white-space:nowrap}
.pill.checkout{border-color:var(--s1);color:var(--s1)}
.barra-in{height:6px;border-radius:3px;background:var(--s1);min-width:2px}
.vazio{padding:26px;text-align:center;color:var(--ink-3);font-size:13.5px}
.aviso{border:1px solid var(--line);border-left:3px solid var(--warn);background:var(--surface);padding:12px 14px;border-radius:6px;font-size:13.5px}
.aviso b{display:block;margin-bottom:3px}

/* ---------- graficos ---------- */
.graf{position:relative}
.graf svg{display:block;width:100%;height:auto;overflow:visible}
.graf .eixo text{fill:var(--ink-3);font-size:11px;font-family:Archivo,sans-serif}
.graf .grade-l{stroke:var(--line-2);stroke-width:1}
.dica{position:absolute;pointer-events:none;background:var(--ink);color:var(--surface);font-size:12px;padding:6px 9px;border-radius:6px;white-space:nowrap;transform:translate(-50%,-110%);z-index:5;box-shadow:var(--shadow)}
.legenda{display:flex;gap:14px;flex-wrap:wrap;font-size:12px;color:var(--ink-2);margin-top:8px}
.legenda i{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:5px;vertical-align:-1px}

/* funil */
.funil-l{display:grid;grid-template-columns:minmax(120px,190px) 1fr 70px;gap:10px;align-items:center;padding:6px 0}
.funil-l .trilho{height:22px;background:var(--surface-2);border-radius:4px;overflow:hidden}
.funil-l .enche{height:100%;background:var(--s1);border-radius:0 4px 4px 0;transition:width .5s}
.funil-l .pct{font-size:12px;color:var(--ink-3);text-align:right}

/* ---------- mapa de calor ---------- */
.mc-ctrl{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:12px}
.mc-palco{position:relative;overflow:hidden;border:1px solid var(--line);border-radius:8px;background:var(--surface-2)}
.mc-esc{position:absolute;top:0;left:0;transform-origin:0 0}
.mc-esc iframe{border:0;display:block;background:#fff}
.mc-esc canvas{position:absolute;top:0;left:0;pointer-events:none}
.mc-leg{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--ink-2);margin-top:8px}
.mc-leg span.rampa{width:140px;height:8px;border-radius:4px;background:linear-gradient(90deg,rgba(235,104,52,.25),#eb6834,#e34948,#8f1d1d)}

/* ---------- admin ---------- */
.abas{display:flex;gap:4px;border-bottom:1px solid var(--line);margin-bottom:16px;flex-wrap:wrap}
.aba{border:0;background:none;padding:8px 12px;cursor:pointer;color:var(--ink-3);font-weight:600;border-bottom:2px solid transparent;margin-bottom:-1px}
.aba[aria-selected="true"]{color:var(--ink);border-bottom-color:var(--ink)}
.form-g{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 14px}
@media (max-width:700px){.form-g{grid-template-columns:1fr}}
.checks{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:13px;margin-top:6px}
.codigo{background:var(--surface-2);border:1px solid var(--line);border-radius:6px;padding:10px;font-family:'IBM Plex Mono',monospace;font-size:12px;word-break:break-all;margin-top:8px}
.toast{position:fixed;bottom:18px;left:50%;transform:translateX(-50%);background:var(--ink);color:var(--surface);padding:9px 15px;border-radius:8px;font-size:13px;z-index:50;box-shadow:var(--shadow)}
.carregando{opacity:.55;transition:opacity .2s}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
