:root{
  --preto:#0B0C0F; --carbono:#212328; --prata:#C5CAD0; --papel:#F3F1ED; --sinal:#D8464B;
  --fraco:#6B7078; --linha:#D9D6D0; --linhaE:#2A2C32; --branco:#fff; --cinza1:#8A8F96; --cinza2:#E7E4DE; --grafite:#4A4D54;
  --titulo:'Inter',system-ui,sans-serif; --corpo:'Instrument Sans',system-ui,sans-serif; --mono:'IBM Plex Mono',ui-monospace,Menlo,monospace;
}
*{box-sizing:border-box}
html,body{margin:0;background:var(--papel);color:var(--carbono);font:15px/1.5 var(--corpo);-webkit-font-smoothing:antialiased}
a{color:inherit;text-decoration:none}
.tela{display:grid;grid-template-columns:248px 1fr;gap:16px;padding:16px;min-height:100vh;max-width:1600px;margin:0 auto}

/* menu lateral */
.menu{background:var(--preto);border-radius:24px;padding:28px 16px 20px;display:flex;flex-direction:column;gap:6px;position:sticky;top:16px;height:calc(100vh - 32px);overflow:auto}
.menu .logo{width:196px;height:auto;margin:0 4px 22px}
.menu .rotulo{margin:14px 12px 4px}
.item{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:12px;color:var(--prata);font-weight:500;font-size:14px}
.item:hover{background:var(--carbono)}
.item.ativo{background:var(--carbono);color:var(--papel)}
.item.ativo::before{content:"";width:3px;height:16px;border-radius:2px;background:var(--sinal);margin-right:-2px}
.item .meta{margin-left:auto}
.usuario{margin-top:auto;border-top:1px solid var(--linhaE);padding-top:14px;display:flex;gap:12px;align-items:center}
.avatar{width:36px;height:36px;border-radius:99px;background:var(--carbono);display:grid;place-items:center;color:var(--papel)}
.usuario b{color:var(--papel);font-size:13px;font-weight:600;display:block}

/* tipografia */
.mono{font-family:var(--mono);font-weight:500;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--fraco)}
.num{font-family:var(--mono);font-weight:600;color:var(--preto);letter-spacing:-.01em}
h1{font:800 40px/1.1 var(--titulo);letter-spacing:-.02em;color:var(--preto);margin:6px 0}
h2{font:700 18px/1.3 var(--titulo);color:var(--preto);margin:0}
.sub{color:var(--fraco);font-size:13px;margin:4px 0 0}
.pequeno{font-size:12px;color:var(--fraco)}
.regua{display:inline-block;width:40px;height:3px;background:var(--sinal);vertical-align:middle;margin-right:10px}

/* conteúdo */
main{padding:20px 16px 24px;display:flex;flex-direction:column;gap:20px;min-width:0}
.topo{display:flex;align-items:flex-end;gap:24px;flex-wrap:wrap}
.topo>div:first-child{flex:1;min-width:280px}
.periodo{display:flex;gap:2px;background:var(--branco);border:1px solid var(--linha);border-radius:99px;padding:4px}
.periodo button{font:500 12px var(--mono);letter-spacing:.02em;border:0;background:none;padding:8px 16px;border-radius:99px;cursor:pointer;color:var(--carbono)}
.periodo button.ativo{background:var(--preto);color:var(--papel)}
.comparar{background:var(--branco);border:1px solid var(--linha);border-radius:8px;padding:11px 16px;font-size:13px;font-weight:500}
.linha{display:grid;gap:16px}
.l-lado{grid-template-columns:1fr 360px}
.l-vivo{grid-template-columns:392px 1fr}
.l-valor{grid-template-columns:440px 1fr}
.l-4{grid-template-columns:repeat(3,1fr) 300px}
.g2{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.cartao{background:var(--branco);border:1px solid var(--linha);border-radius:20px;padding:22px 24px 24px;display:flex;flex-direction:column;gap:16px;min-width:0}
.cartao.escuro{background:var(--preto);border-color:var(--preto);color:var(--prata)}
.cartao.escuro h2{color:var(--papel)}
.cartao.vazio{background:none;border:1px dashed var(--cinza1)}
.cab{display:flex;gap:12px;align-items:flex-start}
.cab>div{flex:1;min-width:0}
.selo{display:inline-flex;align-items:center;gap:6px;background:var(--papel);border-radius:99px;padding:5px 10px;white-space:nowrap}
.selo::before{content:"";width:6px;height:6px;border-radius:9px;background:var(--cinza1)}
.selo.vivo::before{background:var(--sinal)}
.escuro .selo{background:var(--carbono)}
.escuro .selo .mono,.escuro .selo{color:var(--prata)}
.var{font-weight:500;font-size:13px;color:var(--carbono)}

/* indicadores */
.kpi .corpo{display:flex;align-items:flex-end;gap:12px}
.kpi .corpo>div{flex:1;min-width:0}
.kpi .num{font-size:34px;line-height:1}
.gg{display:grid;grid-template-columns:1fr 1fr;gap:16px}

/* ao vivo */
.vivo-num{display:flex;align-items:baseline;gap:12px}
.vivo-num .num{font-size:64px;line-height:1}
.escuro .vivo-num .num{color:var(--papel)}
.minutos{display:flex;align-items:flex-end;gap:4px;height:48px}
.minutos i{flex:1;background:var(--linhaE);border-radius:2px;min-height:3px}
.minutos i.on{background:var(--prata)}
.minutos i.agora{background:var(--sinal)}
.lista-vivo{display:flex;flex-direction:column;gap:8px;font-size:13px;color:var(--papel)}
.lista-vivo div{display:flex;gap:10px}
.lista-vivo span:first-child{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* leitura */
.leitura{display:grid;grid-template-columns:repeat(4,1fr);gap:0}
.leitura>div{padding:0 20px;border-left:1px solid var(--linha);display:flex;flex-direction:column;gap:10px}
.leitura>div:first-child{padding-left:0;border:0}
.leitura .n{font:600 16px var(--mono);color:var(--prata);margin-right:8px}
.leitura p{margin:0;font-size:14px;line-height:1.45;color:var(--preto)}
.leitura .rec .n{color:var(--sinal)}
.leitura .rec .mono{color:var(--preto)}
.leitura .rec p{font-weight:600}

/* barras e listas */
.barra{height:8px;border-radius:4px;background:var(--cinza2);overflow:hidden;flex:1}
.barra i{display:block;height:100%;background:var(--carbono);border-radius:4px}
.barra i.sinal{background:var(--sinal)}
.lin{display:flex;align-items:center;gap:12px;font-size:13px}
.lin .nome{flex:0 0 190px;min-width:0}
.funil{display:flex;flex-direction:column;gap:14px}
.funil .passo{display:flex;align-items:center;gap:16px}
.funil .rot{flex:0 0 230px}
.funil .rot b{display:block;font-weight:500;font-size:13px;color:var(--preto)}
.funil .bloco{height:40px;border-radius:8px;display:flex;align-items:center;padding:0 14px;color:#fff;font:600 16px var(--mono);min-width:fit-content}
.funil .bloco.pendente{background:none;border:1px dashed var(--cinza1);color:var(--fraco);font:500 12px var(--mono)}
table{width:100%;border-collapse:collapse;font-size:13px}
th{text-align:left;padding:14px 0 11px;font:500 10px var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--fraco);border-bottom:1px solid var(--linha)}
td{padding:11px 0;border-top:1px solid var(--linha);vertical-align:middle}
tr:first-child td{border-top:0}
td.n,th.n{text-align:right;font-family:var(--mono);padding-left:12px}
td .mini{display:inline-flex;align-items:center;gap:8px}
td .mini .barra{width:80px;height:6px;flex:none}
.oport{display:flex;gap:12px;align-items:center;padding:12px 0;border-top:1px solid var(--linha)}
.oport:first-of-type{border-top:0}
.oport .marca{width:3px;height:34px;border-radius:2px;background:var(--cinza2)}
.oport .marca.sinal{background:var(--sinal)}
.oport>div:nth-child(2){flex:1;min-width:0}
.oport b{color:var(--preto);font-weight:600}
.sinais .s{display:flex;gap:14px;padding:12px 0;border-top:1px solid var(--linha)}
.sinais .s .n{font:600 16px var(--mono);color:var(--prata)}
.sinais .s.forte .n{color:var(--sinal)}
.sinais p{margin:3px 0 0;color:var(--preto);font-size:14px}
.empilhada{display:flex;gap:2px;height:14px}
.empilhada i{border-radius:3px}
.leg{display:flex;align-items:center;gap:8px;font-size:13px}
.leg .ponto{width:8px;height:8px;border-radius:9px}
.leg .v{margin-left:auto;font:500 11px var(--mono);color:var(--carbono)}

/* projetos (visão geral) */
.proj{gap:18px}
.proj .cab h2{font-size:20px}
.ir{width:36px;height:36px;border-radius:99px;background:var(--preto);color:var(--papel);display:grid;place-items:center;font-weight:600}
.mets{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.mets>div{background:var(--papel);border-radius:12px;padding:12px 14px}
.mets .num{font-size:22px;line-height:1.1;display:block;margin:4px 0}

/* mapa de calor */
.calor{display:grid;grid-template-columns:48px repeat(24,1fr);gap:3px;align-items:center}
.calor i{height:26px;border-radius:5px;display:block}
.calor i.vazio{border:1px dashed var(--linha)}

/* gráficos */
svg{display:block;max-width:100%}
.balao{font:600 13px var(--corpo)}
.carregando{color:var(--fraco);padding:40px 0}
.erro{background:#fff;border:1px dashed var(--sinal);border-radius:14px;padding:14px 16px;font-size:13px}

@media (max-width:1180px){
  .l-lado,.l-vivo,.l-valor{grid-template-columns:1fr}
  .l-4{grid-template-columns:1fr 1fr}
}
@media (max-width:860px){
  .tela{grid-template-columns:1fr;padding:12px}
  .menu{position:static;height:auto;flex-direction:row;flex-wrap:wrap;align-items:center;padding:16px}
  .menu .logo{width:150px;margin:0 8px 0 4px}
  .menu .rotulo,.menu .secao,.usuario{display:none}
  main{padding:8px 4px}
  h1{font-size:30px}
  .gg,.g2,.l-4,.mets{grid-template-columns:1fr}
  .leitura{grid-template-columns:1fr;gap:16px}
  .leitura>div{border:0;padding:0}
  .funil .rot,.lin .nome{flex-basis:130px}
  .calor{grid-template-columns:40px repeat(24,1fr);gap:1px}
  .calor i{height:18px;border-radius:3px}
  table{font-size:12px}
  .rolagem{overflow-x:auto;margin:0 -8px;padding:0 8px}
  td .mini .barra{display:none}
  .cab{flex-wrap:wrap}
  .cab>div{flex:1 1 100%}
  .comparar{display:none}
  .vivo-num .num{font-size:52px}
}
