:root {
  --azul: #1f3a5f; --azul2: #2f6fdb; --fundo: #f4f6fa; --card: #fff; --borda: #e1e6ee;
  --texto: #1d2533; --suave: #5b6577; --pos: #1a9e5f; --neg: #d64545; --aviso: #c98a00;
}
* { box-sizing: border-box; }
body { margin: 0; font-family: "Segoe UI", system-ui, -apple-system, Roboto, Arial, sans-serif; color: var(--texto); background: var(--fundo); font-size: 14px; }
a { color: var(--azul2); text-decoration: none; }
a:hover { text-decoration: underline; }

main { padding: 22px 28px 40px; min-width: 0; }

h1 { font-size: 22px; margin: 0 0 4px; }
h2 { font-size: 16px; margin: 0 0 12px; }
.sub { color: var(--suave); margin: 0 0 18px; }
.topo { display: flex; justify-content: space-between; align-items: flex-end; gap: 12px; flex-wrap: wrap; margin-bottom: 16px; }

.card { background: var(--card); border: 1px solid var(--borda); border-radius: 10px; padding: 16px 18px; margin-bottom: 16px; }
.grid { display: grid; gap: 16px; }
.g2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.g3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.kpis { display: grid; grid-template-columns: repeat(auto-fill, minmax(165px, 1fr)); gap: 12px; margin-bottom: 16px; }
.kpi { background: var(--card); border: 1px solid var(--borda); border-radius: 10px; padding: 12px 14px; }
.kpi .rot { color: var(--suave); font-size: 12px; text-transform: uppercase; letter-spacing: .4px; }
.kpi .val { font-size: 20px; font-weight: 650; margin-top: 4px; }
.kpi .det { color: var(--suave); font-size: 12px; margin-top: 2px; }
@media (max-width: 1000px) { .g2, .g3 { grid-template-columns: 1fr; } }

.pos { color: var(--pos); }
.neg { color: var(--neg); }
.grafico { width: 100%; height: auto; display: block; }

table { width: 100%; border-collapse: collapse; font-size: 13px; }
th, td { padding: 7px 8px; border-bottom: 1px solid var(--borda); text-align: left; white-space: nowrap; }
th { white-space: normal; vertical-align: bottom; background: #f0f3f8; font-weight: 600; color: #344055; position: sticky; top: 0; }
td.n, th.n { text-align: right; font-variant-numeric: tabular-nums; }
tr.total td { font-weight: 700; background: #f7f9fc; }
tr.destaque td { background: #eef4ff; font-weight: 600; }
.rolagem { overflow-x: auto; }
.tag { display: inline-block; padding: 1px 8px; border-radius: 20px; font-size: 11px; font-weight: 600; }
.tag.GAIN, .tag.ok { background: #e3f6ec; color: var(--pos); }
.tag.LOSS, .tag.ruim { background: #fde8e8; color: var(--neg); }
.tag.ZERO, .tag.neutro { background: #eef0f4; color: var(--suave); }
.tag.aviso { background: #fff4d6; color: var(--aviso); }
.tag.DT { background: #e8efff; color: var(--azul2); }
.tag.COMUM { background: #f3e9ff; color: #7a3fc4; }

form.filtros { display: flex; gap: 8px; flex-wrap: wrap; align-items: flex-end; }
label { display: block; font-size: 12px; color: var(--suave); margin-bottom: 3px; }
input, select, textarea { font: inherit; padding: 7px 9px; border: 1px solid #cdd5e1; border-radius: 6px; background: #fff; min-width: 0; }
input:focus, select:focus, textarea:focus { outline: 2px solid #b9d2ff; border-color: var(--azul2); }
input[type=number] { text-align: right; }
.campos { display: grid; grid-template-columns: repeat(auto-fill, minmax(170px, 1fr)); gap: 12px 14px; }
.campos .largo { grid-column: span 2; }
.campos input, .campos select, .campos textarea { width: 100%; }
fieldset { border: 1px solid var(--borda); border-radius: 8px; padding: 12px 14px 14px; margin: 0 0 14px; }
legend { font-weight: 600; padding: 0 6px; color: #344055; }
.check { display: flex; align-items: center; gap: 6px; font-size: 13px; color: var(--texto); }
.check input { width: auto; }

.btn { display: inline-block; font: inherit; font-weight: 600; padding: 8px 14px; border-radius: 6px; border: 1px solid var(--azul2); background: var(--azul2); color: #fff; cursor: pointer; }
.btn:hover { filter: brightness(1.07); text-decoration: none; }
.btn.sec { background: #fff; color: var(--azul2); }
.btn.perigo { background: #fff; color: var(--neg); border-color: #efb4b4; }
.btn.peq { padding: 4px 9px; font-size: 12px; }
.acoes { display: flex; gap: 8px; flex-wrap: wrap; }
form.inline { display: inline; }

.flash { padding: 10px 14px; border-radius: 8px; margin-bottom: 12px; border: 1px solid; }
.flash.ok { background: #e9f8f0; border-color: #b6e5cb; color: #155f3c; }
.flash.erro { background: #fdecec; border-color: #f2bcbc; color: #8a1f1f; }
.flash.aviso { background: #fff6dc; border-color: #f0dc9c; color: #6f5200; }

.previa { display: flex; gap: 18px; flex-wrap: wrap; background: #f6f9ff; border: 1px dashed #b9cdf3; border-radius: 8px; padding: 10px 14px; margin-bottom: 14px; }
.previa div { font-size: 13px; }
.previa b { font-size: 16px; display: block; }
.barra { height: 8px; background: #e7ebf2; border-radius: 6px; overflow: hidden; }
.barra > span { display: block; height: 100%; background: var(--pos); }
.barra > span.ruim { background: var(--neg); }
.barra > span.aviso { background: var(--aviso); }
.nota { color: var(--suave); font-size: 12px; }
.lista-limpa { margin: 0; padding-left: 18px; }
.lista-limpa li { margin-bottom: 4px; }

/* ---------- área pública / autenticação ---------- */
.publico { min-height: 100vh; display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 32px 16px; background: linear-gradient(160deg, #1f3a5f 0%, #2a4f80 55%, #f4f6fa 55%); }
.publico .marca-pub { color: #fff; font-size: 26px; font-weight: 700; margin-bottom: 4px; text-align: center; }
.publico .marca-pub small { display: block; font-size: 13px; font-weight: 400; opacity: .8; }
.caixa { width: 100%; max-width: 440px; background: #fff; border: 1px solid var(--borda); border-radius: 12px; padding: 26px 28px; margin-top: 18px; box-shadow: 0 10px 30px rgba(20,40,70,.12); }
.caixa.larga { max-width: 640px; }
.caixa h1 { font-size: 20px; margin-bottom: 6px; }
.form-vertical .campo { margin-bottom: 14px; }
.form-vertical input[type=text], .form-vertical input[type=email], .form-vertical input[type=password], .form-vertical input[type=number] { width: 100%; }
.form-vertical .ajuda { color: var(--suave); font-size: 12px; margin-top: 3px; }
.erro-campo { color: var(--neg); font-size: 12px; margin-top: 3px; }
.erros-form { background: #fdecec; border: 1px solid #f2bcbc; color: #8a1f1f; border-radius: 8px; padding: 8px 12px; margin-bottom: 12px; }
.btn.largo { width: 100%; text-align: center; padding: 10px; }
.links-pub { display: flex; justify-content: space-between; gap: 10px; margin-top: 14px; font-size: 13px; flex-wrap: wrap; }
.rodape-pub { margin-top: 18px; font-size: 12px; color: var(--suave); text-align: center; }
.rodape-pub a { color: var(--suave); }
.qr { display: flex; justify-content: center; margin: 10px 0; }
.qr svg { width: 210px; height: 210px; }
.segredo { font-family: ui-monospace, Consolas, monospace; background: #f0f3f8; border-radius: 6px; padding: 8px 10px; text-align: center; letter-spacing: 1px; word-break: break-all; }
input.codigo { font-size: 22px; letter-spacing: 6px; text-align: center; width: 100%; font-family: ui-monospace, Consolas, monospace; }
.codigos { display: grid; grid-template-columns: repeat(2, 1fr); gap: 8px; margin: 14px 0; }
.codigos code { background: #f0f3f8; border-radius: 6px; padding: 8px; text-align: center; font-size: 15px; letter-spacing: 1px; }
.passos { padding-left: 18px; margin: 8px 0 14px; }
.passos li { margin-bottom: 6px; }
.texto-legal h2 { margin-top: 18px; }
.texto-legal p, .texto-legal li { line-height: 1.55; }
.usuario-menu { padding: 0 20px 10px; font-size: 12px; color: #c8d6ee; word-break: break-all; }
.mt { margin-top: 14px; }
.sem-margem { margin: 0; }
.grid-form { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 12px; align-items: end; }
.perigo-zona { border-color: #efb4b4; }
.check-linha { display: flex; gap: 8px; align-items: flex-start; font-size: 13px; color: var(--texto); }
.check-linha input { margin-top: 2px; }
@media print { .lateral, .barra-topo, .menu-fundo, .nao-imprimir { display: none !important; } }

/* utilitários gerados a partir dos estilos das telas (CSP não permite style="") */
.u1 { width:110px; }
.u2 { min-width:110px; }
.u3 { padding:3px 5px; }
.u4 { width:100px; }
.u5 { margin-top:10px; }
.u6 { margin-top:14px; }
.u7 { text-transform:uppercase; }
.u8 { margin-bottom:8px; }
.u9 { margin:0; }
.u10 { margin:4px 0 0; }
.u11 { margin:6px 0; }
.u12 { width:140px; }
.u13 { width:120px; }
.u14 { max-height:260px;margin-top:10px; }
.u15 { margin-top:8px; }
.u16 { max-height:340px;margin-top:10px; }
.u17 { width:90px; }
.apagado { opacity: .6; }
progress.progresso { width: 100%; height: 8px; appearance: none; border: 0; border-radius: 6px; background: #e7ebf2; overflow: hidden; display: block; }
progress.progresso::-webkit-progress-bar { background: #e7ebf2; border-radius: 6px; }
progress.progresso::-webkit-progress-value { background: var(--pos); border-radius: 6px; }
progress.progresso::-moz-progress-bar { background: var(--pos); }
progress.progresso.ruim::-webkit-progress-value { background: var(--neg); }
progress.progresso.ruim::-moz-progress-bar { background: var(--neg); }
progress.progresso.aviso::-webkit-progress-value { background: var(--aviso); }
progress.progresso.aviso::-moz-progress-bar { background: var(--aviso); }

/* ---------- diário e calendário ---------- */
table.calendario { table-layout: fixed; }
table.calendario th { text-align: center; }
table.calendario td.dia { vertical-align: top; height: 92px; padding: 0; border: 1px solid var(--borda); white-space: normal; }
table.calendario td.dia > span.dia-num { display: block; padding: 6px 8px; color: #b3bccb; }
.dia-link { display: flex; flex-direction: column; gap: 2px; height: 100%; padding: 6px 8px; color: var(--texto); text-decoration: none; }
.dia-link:hover { background: rgba(47,111,219,.06); text-decoration: none; }
.dia-num { font-size: 12px; font-weight: 600; color: var(--suave); }
.dia-val { font-weight: 700; font-size: 14px; }
.dia-info, .dia-emocao { font-size: 11px; color: var(--suave); }
.dia-marcas { font-size: 12px; }
td.dia.fora { background: #fafbfd; }
td.dia.feriado { background: #f3f4f7; }
td.dia.hoje { outline: 2px solid var(--azul2); outline-offset: -2px; }
td.dia.pos1 { background: #e9f8f0; } td.dia.pos2 { background: #c9eedb; } td.dia.pos3 { background: #9fdfbe; }
td.dia.neg1 { background: #fdeeee; } td.dia.neg2 { background: #f9d2d2; } td.dia.neg3 { background: #f2abab; }
td.dia.pos1 .dia-val, td.dia.pos2 .dia-val, td.dia.pos3 .dia-val { color: #0f6e40; }
td.dia.neg1 .dia-val, td.dia.neg2 .dia-val, td.dia.neg3 .dia-val { color: #a12b2b; }
td.semana-total { vertical-align: middle; font-weight: 600; background: #f7f9fc; }
.erros-lista { display: flex; flex-wrap: wrap; gap: 6px 8px; align-items: center; margin-top: 10px; }
.check.chip { border: 1px solid var(--borda); border-radius: 20px; padding: 3px 10px; background: #fff; font-size: 12px; }
.trade-diario { border-top: 1px solid var(--borda); padding: 12px 0; }
.trade-diario:first-of-type { border-top: 0; }
.trade-cab { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; margin-bottom: 8px; }
textarea { width: 100%; resize: vertical; }
.prints { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 12px; }
.prints figure { margin: 0; border: 1px solid var(--borda); border-radius: 8px; overflow: hidden; background: #f7f9fc; }
.prints img { display: block; width: 100%; height: 160px; object-fit: cover; }
.prints figcaption { display: flex; justify-content: space-between; align-items: center; gap: 8px; padding: 6px 8px; font-size: 12px; }

/* ---------- casca: menu lateral + barra do topo (mesmas cores de antes) ---------- */
.casca { display: flex; min-height: 100vh; }
.area { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.ico { width: 18px; height: 18px; flex-shrink: 0; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.lateral { width: 240px; background: var(--azul); color: #fff; flex-shrink: 0; position: sticky; top: 0; height: 100vh;
  overflow-y: auto; padding: 16px 12px 24px; transition: width .2s; z-index: 30; }
.logo { display: flex; align-items: center; gap: 10px; color: #fff; padding: 4px 8px 18px; }
.logo:hover { text-decoration: none; }
.logo-icone { width: 38px; height: 38px; border-radius: 10px; background: var(--azul2); display: grid; place-items: center; flex-shrink: 0; }
.logo-icone .ico { width: 22px; height: 22px; }
.logo-texto { font-weight: 700; font-size: 17px; white-space: nowrap; }
.logo-texto small { display: block; font-weight: 400; font-size: 11px; opacity: .7; }
.menu-grupo { font-size: 11px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: #dbe5f5; opacity: .55;
  padding: 16px 12px 6px; white-space: nowrap; }
.menu-item { display: flex; align-items: center; gap: 12px; color: #dbe5f5; padding: 9px 12px; border-radius: 10px; font-size: 14px;
  cursor: pointer; white-space: nowrap; margin-bottom: 2px; }
.menu-item:hover { background: rgba(255,255,255,.08); color: #fff; text-decoration: none; }
.menu-item.ativo { background: var(--azul2); color: #fff; font-weight: 600; }
.menu-item.ativo-pai { color: #fff; }
.menu-sub summary { list-style: none; }
.menu-sub summary::-webkit-details-marker { display: none; }
.menu-sub .seta { margin-left: auto; width: 16px; height: 16px; transition: transform .2s; }
.menu-sub[open] .seta { transform: rotate(180deg); }
.menu-item.filho { padding-left: 42px; font-size: 13.5px; }
.barra-topo { display: flex; align-items: center; gap: 10px; background: var(--card); border-bottom: 1px solid var(--borda);
  padding: 10px 24px; position: sticky; top: 0; z-index: 20; }
.barra-espaco { flex: 1; }
.botao-icone { position: relative; display: grid; place-items: center; width: 38px; height: 38px; border-radius: 10px; border: 0;
  background: none; color: var(--suave); cursor: pointer; list-style: none; }
.botao-icone:hover { background: var(--fundo); color: var(--texto); }
.botao-icone .ico { width: 20px; height: 20px; }
.botao-acao { display: inline-flex; align-items: center; gap: 6px; background: var(--azul2); color: #fff; border-radius: 10px;
  padding: 8px 14px; font-weight: 600; font-size: 13.5px; }
.botao-acao:hover { text-decoration: none; filter: brightness(1.08); }
.contador { position: absolute; top: 3px; right: 3px; min-width: 17px; height: 17px; border-radius: 9px; background: var(--neg);
  color: #fff; font-size: 10.5px; font-weight: 700; display: grid; place-items: center; padding: 0 4px; }
.suspenso { position: relative; }
.suspenso > summary { list-style: none; }
.suspenso > summary::-webkit-details-marker { display: none; }
.painel-suspenso { position: absolute; right: 0; top: calc(100% + 8px); width: 320px; background: var(--card); border: 1px solid var(--borda);
  border-radius: 12px; box-shadow: 0 10px 30px rgba(20,30,50,.15); padding: 8px; z-index: 40; }
.painel-suspenso.direita { width: 250px; }
.suspenso-titulo { font-weight: 600; padding: 8px 10px 10px; border-bottom: 1px solid var(--borda); margin-bottom: 6px; }
.alerta-item { display: flex; align-items: flex-start; gap: 10px; padding: 9px 10px; border-radius: 8px; color: var(--texto);
  width: 100%; background: none; border: 0; font: inherit; text-align: left; cursor: pointer; }
.alerta-item:hover { background: var(--fundo); text-decoration: none; }
.alerta-item.sair { color: var(--neg); }
.ponto { width: 9px; height: 9px; border-radius: 50%; margin-top: 5px; flex-shrink: 0; background: var(--aviso); }
.ponto.ruim { background: var(--neg); }
.sem-alertas { padding: 6px 10px 10px; margin: 0; }
.usuario-botao { display: flex; align-items: center; gap: 8px; cursor: pointer; padding: 4px 8px 4px 4px; border-radius: 22px; }
.usuario-botao:hover { background: var(--fundo); }
.usuario-botao .seta { width: 15px; height: 15px; color: var(--suave); }
.avatar { width: 34px; height: 34px; border-radius: 50%; background: var(--azul); color: #fff; display: grid; place-items: center;
  font-weight: 700; font-size: 13px; }
.usuario-nome { font-weight: 600; }
.menu-fundo { display: none; }
/* menu recolhido (só ícones) */
.menu-recolhido .lateral { width: 72px; }
.menu-recolhido .lateral .logo-texto, .menu-recolhido .lateral .menu-item span, .menu-recolhido .lateral .seta,
.menu-recolhido .lateral .menu-item.filho { display: none; }
.menu-recolhido .lateral .menu-grupo { font-size: 0; padding: 10px 0 4px; border-top: 1px solid rgba(255,255,255,.12); margin: 6px 8px 0; }
.menu-recolhido .lateral .menu-item { justify-content: center; padding: 10px 0; }
@media (max-width: 900px) {
  .lateral { position: fixed; left: 0; top: 0; transform: translateX(-100%); transition: transform .2s; width: 250px; }
  .menu-aberto .lateral { transform: none; }
  .menu-aberto .menu-fundo { display: block; position: fixed; inset: 0; background: rgba(10,20,40,.4); z-index: 25; }
  .menu-recolhido .lateral { width: 250px; }
  .botao-acao span, .usuario-nome { display: none; }
  .barra-topo { padding: 10px 14px; }
  main { padding: 18px 14px 32px; }
  .painel-suspenso { width: min(320px, 90vw); }
}

/* ---------- controle de acesso ---------- */
.faixa-convidado { display: flex; align-items: center; gap: 8px; background: #fff4d6; color: #6b4a00; border: 1px solid #f0d58a;
  border-radius: 10px; padding: 6px 12px; font-size: 13px; }
.faixa-convidado form { margin: 0; }
button.link { background: none; border: 0; padding: 0; font: inherit; color: var(--azul2); cursor: pointer; font-weight: 600; }
button.link:hover { text-decoration: underline; }
.suspenso-secao { font-size: 11px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--suave);
  padding: 10px 10px 4px; border-top: 1px solid var(--borda); margin-top: 6px; }
.painel-suspenso form { margin: 0; }
@media (max-width: 900px) { .faixa-convidado span { display: none; } }

/* ---------- barra de cotações (widget TradingView) ---------- */
.barra-cotacoes { position: relative; background: var(--azul); min-height: 46px; overflow: hidden; }
.barra-cotacoes .tradingview-widget-container { min-height: 46px; padding-right: 120px; }
.cotacoes-fonte { position: absolute; right: 0; top: 0; bottom: 0; display: flex; align-items: center; padding: 0 12px;
  background: var(--azul); color: #9fb3d1; font-size: 11px; white-space: nowrap; }
.cotacoes-fonte:hover { color: #fff; text-decoration: none; }
@media (max-width: 900px) { .barra-cotacoes .tradingview-widget-container { padding-right: 0; } .cotacoes-fonte { display: none; } }
@media print { .barra-cotacoes { display: none !important; } }
.flash.info { background: #eaf1fd; border-color: #bcd2f5; color: #1f3a5f; }

/* ---------- calculadora de posição e trava do dia ---------- */
.calc-painel { width: 340px; }
.calc-campos { display: grid; grid-template-columns: 1fr 1fr; gap: 8px 10px; padding: 4px 10px 8px; }
.calc-campos label { font-size: 12px; color: var(--suave); }
.calc-campos input, .calc-campos select { width: 100%; }
.calc-painel .so-acoes { display: none; }
.calc-painel.modo-acoes .so-acoes { display: block; }
.calc-resultado { margin: 4px 10px; padding: 10px 12px; background: var(--fundo); border-radius: 10px; }
.calc-linha { display: flex; justify-content: space-between; gap: 10px; padding: 3px 0; }
.calc-linha .destaque { font-size: 20px; color: var(--azul2); }
.calc-nota { padding: 6px 10px 4px; margin: 0; }
.trava { display: flex; align-items: center; gap: 12px; padding: 12px 24px; font-size: 14.5px; border-bottom: 1px solid; }
.trava .trava-ico { width: 30px; height: 30px; flex-shrink: 0; }
.trava-limite { background: #d64545; color: #fff; border-color: #b23030; }
.trava-limite a { color: #fff; text-decoration: underline; }
.trava-meta { background: #e3f6ec; color: #155f3c; border-color: #b6e5cb; }
@media (max-width: 900px) { .trava { padding: 10px 14px; font-size: 13.5px; } .calc-painel { width: min(340px, 92vw); } }
@media print { .trava { display: none !important; } }
