*{box-sizing:border-box;margin:0;padding:0}
body{font-family:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;background:#f5f6f8;color:#0f172a;font-size:14px;line-height:1.45;padding-bottom:80px}
#erro-banner{display:none;background:#dc2626;color:#fff;padding:12px 16px;font-size:13px;font-family:monospace;white-space:pre-wrap;position:sticky;top:0;z-index:999}
header{background:#fff;border-bottom:1px solid #e2e8f0;position:sticky;top:0;z-index:100;padding:10px 14px}
.header-top{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:8px}
.brand{display:flex;align-items:baseline;gap:8px}
.brand h1{font-size:18px;color:#dc2626;letter-spacing:-.5px}
.brand small{font-size:12px;color:#64748b}
.btn{border:1px solid #cbd5e1;background:#fff;color:#0f172a;padding:8px 14px;border-radius:6px;cursor:pointer;font-size:13px;font-weight:500;min-height:36px}
.btn:hover{background:#f1f5f9}
.btn-primary{background:#dc2626;color:#fff;border-color:#dc2626}
.btn-primary:hover{background:#b91c1c}
.btn-sm{padding:5px 10px;font-size:12px;min-height:30px}
.escopo-select{padding:6px 10px;border:1px solid #cbd5e1;border-radius:6px;font-size:13px;font-weight:600;min-height:36px;background:#fff}
.tabs{display:flex;gap:4px;overflow-x:auto}
.tabs button{flex:0 0 auto;padding:8px 14px;border:none;background:transparent;color:#475569;font-size:13px;font-weight:500;cursor:pointer;border-radius:6px;min-height:38px}
.tabs button.active{background:#0f172a;color:#fff}
.subtabs{display:flex;gap:4px;margin-bottom:12px;border-bottom:1px solid #e2e8f0;padding-bottom:8px;overflow-x:auto}
.subtabs button{padding:6px 12px;border:none;background:transparent;color:#64748b;font-size:13px;font-weight:500;cursor:pointer;border-radius:6px;white-space:nowrap}
.subtabs button.active{background:#e2e8f0;color:#0f172a;font-weight:600}
.subtab-content{display:none}
.subtab-content.active{display:block}
main{padding:14px;max-width:1400px;margin:0 auto}
section{display:none}
section.active{display:block}
.card{background:#fff;border:1px solid #e2e8f0;border-radius:8px;padding:14px;margin-bottom:12px}
.card h2{font-size:15px;font-weight:600;margin-bottom:10px;display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap}
.card h2 .sub{font-size:12px;color:#64748b;font-weight:400}
.kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;margin-bottom:12px}
.kpi{background:#fff;border:1px solid #e2e8f0;border-radius:8px;padding:12px 14px;position:relative}
.kpi .label{font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:#64748b;margin-bottom:6px;font-weight:600}
.kpi .value{font-size:22px;font-weight:700;color:#0f172a}
.kpi .hint{font-size:12px;color:#64748b;margin-top:4px}
.kpi .delta{font-size:12px;margin-top:6px;font-weight:600;display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:4px;background:#f1f5f9}
.kpi .delta.up{background:#dcfce7;color:#166534}
.kpi .delta.down{background:#fee2e2;color:#991b1b}
.kpi.positivo .value{color:#16a34a}
.kpi.negativo .value{color:#dc2626}
.barra{height:8px;background:#e2e8f0;border-radius:4px;overflow:hidden;margin-top:8px}
.barra>div{height:100%;background:#16a34a}
.barra>div.warn{background:#ca8a04}
.barra>div.danger{background:#dc2626}
.frase-resumo{background:#f8fafc;border-left:3px solid #0f172a;padding:10px 14px;font-size:13px;color:#334155;border-radius:4px;margin-bottom:12px}
table.tabela{width:100%;border-collapse:collapse;font-size:13px}
table.tabela th{background:#e2e8f0;color:#334155;text-align:left;padding:8px 10px;font-weight:600;font-size:12px;white-space:nowrap}
table.tabela td{padding:8px 10px;border-top:1px solid #e2e8f0;white-space:nowrap}
table.tabela tr:nth-child(even) td{background:#f8fafc}
table.tabela td.num,table.tabela th.num{text-align:right}
table.tabela td input,table.tabela td select{padding:6px;border:1px solid #cbd5e1;border-radius:4px;font-size:13px;font-family:inherit}
table.tabela tr.expansivel{cursor:pointer}
table.tabela tr.expansivel:hover{background:#f1f5f9}
.detalhe-produto{background:#f0f9ff;padding:10px 14px;border-top:1px solid #bae6fd}
.detalhe-produto table{background:#fff;border-radius:4px;overflow:hidden}
.acao-linha{display:flex;align-items:center;gap:10px;padding:9px 14px;border-bottom:1px solid #f1f5f9;font-size:13px;min-height:44px}
.acao-linha:last-child{border-bottom:none}
.acao-linha:hover{background:#f8fafc}
.acao-linha .ic{font-size:15px;flex-shrink:0;width:20px;text-align:center}
.acao-linha .txt{flex:1;min-width:0;overflow:hidden}
.acao-linha .ttl{font-weight:600;color:#0f172a;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.acao-linha .dsc{font-size:11px;color:#64748b;margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.acao-linha .val{font-weight:700;color:#dc2626;white-space:nowrap;font-size:13px;flex-shrink:0;min-width:90px;text-align:right}
.acao-linha .btns{display:flex;gap:4px;flex-shrink:0}
.acao-linha.alto{background:linear-gradient(90deg,rgba(220,38,38,.04) 0%,transparent 30%)}
.acao-linha.medio{background:linear-gradient(90deg,rgba(202,138,4,.04) 0%,transparent 30%)}
.acao-linha.vazio{padding:24px 14px;justify-content:center;color:#64748b;font-size:13px}
.acao-grupo-header{display:flex;align-items:center;gap:10px;padding:9px 14px;border-bottom:1px solid #f1f5f9;font-size:13px;cursor:pointer;min-height:44px}
.acao-grupo-header:hover{background:#f8fafc}
.acao-grupo-header .chev{transition:transform .2s;font-size:10px;color:#94a3b8;flex-shrink:0}
.acao-grupo-header.expandido .chev{transform:rotate(90deg)}
.acao-grupo-detalhe{background:#f8fafc;padding:0 14px;border-bottom:1px solid #f1f5f9;display:none}
.acao-grupo-detalhe.expandido{display:block}
.acao-grupo-detalhe .vend{padding:8px 0;border-bottom:1px solid #e2e8f0;font-size:12px}
.acao-grupo-detalhe .vend:last-child{border-bottom:none}
.minimizavel h2{cursor:pointer;user-select:none;position:relative;padding-right:34px}
.minimizavel h2:hover{color:#dc2626}
.minimizavel h2::after{content:'▾';position:absolute;right:8px;top:50%;transform:translateY(-50%);color:#94a3b8;font-size:12px;transition:transform .2s;font-weight:400}
.minimizavel.minimizado h2::after{transform:translateY(-50%) rotate(-90deg)}
.minimizavel.minimizado h2{margin-bottom:0}
.minimizavel.minimizado .min-conteudo{display:none}
tr.meta-batida td{background:#dcfce7!important}
tr.ritmo-amarelo td{background:#fef9c3!important}
tr.ritmo-vermelho td{background:#fee2e2!important}
tr.curva-A td{background:#dcfce7!important}
tr.curva-B td{background:#fef9c3!important}
tr.curva-C td{background:#f1f5f9!important}
tr.ruptura td{background:#fee2e2!important}
tr.positivo td{color:#16a34a;font-weight:600}
tr.negativo td{color:#dc2626;font-weight:600}
tr.cidade-linha{cursor:pointer}
tr.cidade-expandida td{background:#e0e7ff!important}
tr.suspeito td{background:#fef9c3!important}
tr.inativo td{opacity:.6}
.periodo-bar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;padding:10px 14px;margin-bottom:12px}
.periodo-bar select{padding:6px 10px;border:1px solid #cbd5e1;border-radius:6px;font-size:13px;font-weight:600;background:#fff;min-height:36px}
.form-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px;margin-bottom:10px}
.form-row label{display:block;font-size:12px;color:#475569;font-weight:600;margin-bottom:4px}
.form-row input,.form-row select{width:100%;padding:10px;border:1px solid #cbd5e1;border-radius:6px;font-size:14px;min-height:44px;font-family:inherit}
.drop-zone{border:2px dashed #cbd5e1;border-radius:8px;padding:30px 20px;text-align:center;cursor:pointer;background:#f8fafc}
.drop-zone:hover,.drop-zone.over{border-color:#0f172a;background:#f1f5f9}
.drop-zone .icone{font-size:32px;margin-bottom:6px}
.drop-zone .texto{font-size:14px;font-weight:500;color:#334155}
.drop-zone .sub{font-size:12px;color:#64748b;margin-top:4px}
.paste-area{width:100%;min-height:200px;padding:12px;border:1px solid #cbd5e1;border-radius:6px;font-family:monospace;font-size:13px}
.salvar-bar{position:sticky;bottom:0;background:#fff;border-top:2px solid #0f172a;padding:12px 14px;display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:16px;flex-wrap:wrap;z-index:50}
.semana-tabs{display:none;gap:4px;margin-bottom:10px}
.semana-tabs button{flex:1 0 auto;padding:10px 12px;border:1px solid #cbd5e1;background:#fff;border-radius:6px;cursor:pointer;font-size:13px;font-weight:600}
.semana-tabs button.active{background:#0f172a;color:#fff;border-color:#0f172a}
.semana-nav{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;gap:8px}
.toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%) translateY(80px);background:#0f172a;color:#fff;padding:12px 20px;border-radius:6px;font-size:13px;opacity:0;transition:all .3s;z-index:1000;pointer-events:none;box-shadow:0 4px 12px rgba(0,0,0,.15)}
.toast.show{transform:translateX(-50%) translateY(0);opacity:1}
.modal{display:none;position:fixed;inset:0;background:rgba(15,23,42,.5);z-index:300;padding:20px;align-items:center;justify-content:center}
.modal.show{display:flex}
.modal-content{background:#fff;border-radius:10px;padding:22px;max-width:600px;width:100%;max-height:80vh;overflow-y:auto}
.empty{text-align:center;padding:30px 20px;color:#64748b;background:#f8fafc;border-radius:8px;border:1px dashed #cbd5e1}
.empty h3{font-size:15px;margin-bottom:6px;color:#334155}
.lanc-item{display:flex;justify-content:space-between;align-items:center;padding:10px;border:1px solid #e2e8f0;border-radius:6px;margin-bottom:6px;font-size:13px;gap:8px}
.aviso{background:#fef3c7;border:1px solid #fcd34d;color:#78350f;padding:10px 14px;border-radius:6px;font-size:13px;margin-bottom:10px}
.aviso.info{background:#dbeafe;border-color:#93c5fd;color:#1e40af}
.badge{display:inline-block;padding:2px 8px;border-radius:4px;font-size:11px;font-weight:700}
.badge-A{background:#16a34a;color:#fff}
.badge-B{background:#ca8a04;color:#fff}
.badge-C{background:#94a3b8;color:#fff}
.badge-risco{background:#dc2626;color:#fff}
.badge-ok{background:#dcfce7;color:#166534}
.badge-cidade{background:#1e40af;color:#fff}
.badge-filial{background:#0f172a;color:#fff}
.badge-adm{background:#64748b;color:#fff}
.badge-ex{background:#94a3b8;color:#fff}
.badge-rfm{background:#f1f5f9;color:#475569}
.badge-rfm.campeao{background:#16a34a;color:#fff}
.badge-rfm.leal{background:#0ea5e9;color:#fff}
.badge-rfm.promissor{background:#ca8a04;color:#fff}
.badge-rfm.risco{background:#dc2626;color:#fff}
.badge-rfm.hibernando{background:#64748b;color:#fff}
.badge-suspeito{background:#fef3c7;color:#78350f;padding:3px 8px;border-radius:4px;font-size:10px;font-weight:700;margin-left:6px;border:1px solid #fcd34d;cursor:help}
.delta-pos{color:#16a34a;font-weight:600}
.delta-neg{color:#dc2626;font-weight:600}
.delta-neu{color:#94a3b8}
.filtros-bar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:10px}
.filtros-bar input,.filtros-bar select{padding:8px;border:1px solid #cbd5e1;border-radius:6px;font-size:13px;font-family:inherit;min-height:36px}
.filtros-bar .chips{display:flex;gap:4px}
.filtros-bar .chip{padding:6px 12px;border:1px solid #cbd5e1;background:#fff;border-radius:20px;cursor:pointer;font-size:12px;font-weight:600}
.filtros-bar .chip.active{background:#0f172a;color:#fff;border-color:#0f172a}
.filtros-bar .chip.chip-A.active{background:#16a34a;border-color:#16a34a}
.filtros-bar .chip.chip-B.active{background:#ca8a04;border-color:#ca8a04}
.filtros-bar .chip.chip-C.active{background:#64748b;border-color:#64748b}
.secao-header{display:flex;justify-content:space-between;align-items:center;padding:10px 0;cursor:pointer;user-select:none;border-bottom:1px solid #e2e8f0;margin-bottom:10px}
.secao-header h3{font-size:14px;font-weight:600;display:flex;align-items:center;gap:8px}
.secao-header .chev{transition:transform .2s;font-size:12px;color:#64748b}
.secao-header.collapsed .chev{transform:rotate(-90deg)}
.secao-body.collapsed{display:none}
.sub-clientes{background:#eef2ff;padding:0}
.sub-clientes table{width:100%;border-collapse:collapse;font-size:12px}
.sub-clientes th{background:#c7d2fe;color:#1e3a8a;padding:6px 10px;font-weight:600;text-align:left;font-size:11px;text-transform:uppercase}
.sub-clientes td{padding:6px 10px;border-top:1px solid #c7d2fe;background:#eef2ff}
.chart-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:12px;margin-bottom:12px}
.chart-card{background:#fff;border:1px solid #e2e8f0;border-radius:8px;padding:14px}
.chart-card h3{font-size:13px;font-weight:600;color:#334155;margin-bottom:10px}
.chart-wrap{position:relative;height:220px}
.snapshot-bar{background:#f0f9ff;border:1px solid #bae6fd;color:#0c4a6e;padding:8px 12px;border-radius:6px;font-size:12px;margin-bottom:10px;display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap}
.diag-item{display:flex;align-items:flex-start;gap:10px;padding:10px 12px;border-radius:6px;margin-bottom:8px;font-size:13px}
.diag-item.ok{background:#dcfce7;border:1px solid #86efac;color:#166534}
.diag-item.warn{background:#fef3c7;border:1px solid #fcd34d;color:#78350f}
.diag-item.err{background:#fee2e2;border:1px solid #fecaca;color:#991b1b}
.diag-item .icone{font-size:16px;flex-shrink:0;line-height:1.2}
.diag-item .texto{flex:1}
.diag-item .detalhe{font-size:11px;margin-top:2px;opacity:.85}
#banner-modo-vendedor{display:none;background:#fef3c7;border-bottom:1px solid #fcd34d;padding:10px 14px;text-align:center;font-size:13px;color:#78350f}
#escopo-banner{display:none;background:#ede9fe;border-bottom:1px solid #c4b5fd;padding:8px 14px;text-align:center;font-size:12px;color:#5b21b6}
.mover-linha{display:flex;align-items:center;gap:8px;padding:6px 0;border-bottom:1px solid #f1f5f9;font-size:13px}
.mover-linha:last-child{border-bottom:none}
.mover-info{flex:1;min-width:0;overflow:hidden}
.mover-nome{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mover-det{font-size:11px;color:#64748b}
.mover-pct{font-weight:700;white-space:nowrap}
.novidade{background:linear-gradient(135deg,#16a34a,#15803d);color:#fff;padding:12px 16px;border-radius:8px;display:flex;align-items:center;gap:10px;font-size:13px;margin-bottom:10px}
.novidade .emoji{font-size:22px}
@media (max-width:768px){
  main{padding:10px}
  .kpi .value{font-size:18px}
  .semana-tabs{display:flex}
  .semana-desktop{display:none}
  .brand small{display:none}
  .filtros-bar{flex-direction:column;align-items:stretch}
}
@media (min-width:769px){.semana-mobile{display:none}}