:root{
  --bg:#15181d; --bg2:#1a1d23; --card:#242830; --card2:#2b303a; --line:#333945;
  --txt:#e6e9ee; --muted:#8a93a2; --accent:#3b8ed0; --accent2:#1f6aa5;
  --verde:#27ae60; --vermelho:#e74c3c; --laranja:#e67e22; --amarelo:#f1c40f;
}
*{box-sizing:border-box;margin:0;padding:0}
[hidden]{display:none !important}
body{font-family:'Segoe UI',Roboto,Arial,sans-serif;background:var(--bg);color:var(--txt);font-size:14px}
button{cursor:pointer;font-family:inherit}
h1{font-size:22px;margin-bottom:16px} h4{font-size:13px;color:var(--muted);margin:6px 0}
.muted{color:var(--muted)}
hr.sep{border:none;border-top:1px solid var(--line);margin:14px 0}

/* Login */
.tela-login{min-height:100vh;display:flex;align-items:center;justify-content:center}
.box-login{background:var(--card);border-radius:12px;padding:36px;width:360px;border:1px solid var(--line)}
.box-login h1{font-size:22px;margin-bottom:4px}
.box-login p{color:var(--muted);margin-bottom:22px;font-size:13px}
.box-login input{width:100%;padding:11px;margin-bottom:12px;border-radius:8px;border:1px solid var(--line);background:var(--card2);color:var(--txt)}
.box-login button{width:100%;padding:12px;border:none;border-radius:8px;background:var(--verde);color:#fff;font-weight:600;font-size:15px}
.erro{color:var(--vermelho);font-size:13px;min-height:18px;margin-bottom:6px}

/* App layout: sidebar + conteudo */
#app{display:flex;min-height:100vh}
.sidebar{width:230px;background:var(--bg2);border-right:1px solid var(--line);display:flex;flex-direction:column;position:sticky;top:0;height:100vh}
.sidebar .logo{padding:20px 20px;font-size:18px;border-bottom:1px solid var(--line)} .logo b{color:var(--accent)}
#menu{flex:1;padding:12px 10px;display:flex;flex-direction:column;gap:4px}
.nav-item{display:flex;align-items:center;gap:10px;padding:11px 14px;border-radius:9px;color:var(--muted);cursor:pointer;font-size:14px;text-decoration:none}
.nav-item:hover{background:var(--card2);color:var(--txt)}
.nav-item.ativo{background:var(--accent2);color:#fff}
.sidebar-rodape{padding:16px 18px;border-top:1px solid var(--line)}
.su-nome{font-weight:600} .su-papel{color:var(--muted);font-size:12px;margin-bottom:10px}
.sidebar-rodape button{background:transparent;border:1px solid var(--line);color:var(--muted);padding:7px 14px;border-radius:7px;width:100%}

.conteudo{flex:1;padding:26px 34px;max-width:1560px;margin:0 auto;width:100%}
.view-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}
.view-head h1{margin:0}
.head-acoes{display:flex;gap:10px;align-items:center}
.chart-vazio{color:var(--muted);font-size:13px;display:flex;align-items:center;justify-content:center;height:100%;width:100%}

/* Filtros */
.barra-filtros,.form-grid{display:flex;flex-wrap:wrap;gap:14px;align-items:end}
.barra-filtros{margin-bottom:20px}
.form-grid{margin-bottom:14px}
.campo{display:flex;flex-direction:column;gap:5px}
.campo label{font-size:11px;color:var(--muted)}
.campo input,.campo select{padding:10px;border-radius:8px;border:1px solid var(--line);background:var(--card2);color:var(--txt);min-width:170px}
.painel{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:22px;margin-top:6px;max-width:900px}
.opcoes{display:flex;flex-direction:column;gap:10px;margin:18px 0}
.check{display:flex;align-items:center;gap:8px;font-size:13px}

/* Botoes */
.btn{padding:10px 18px;border:none;border-radius:8px;font-weight:600;color:#fff;background:var(--accent2)}
.btn.verde{background:var(--verde)} .btn.azul{background:var(--accent2)} .btn:disabled{opacity:.5;cursor:default}
.btn.grande{padding:13px 26px;font-size:15px;margin-top:6px}
.btn:not(.verde):not(.azul){background:var(--card2);border:1px solid var(--line);color:var(--txt)}

/* Cards grandes */
.cards-grandes{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:14px}
.card-g{background:linear-gradient(160deg,var(--card2),var(--card));border:1px solid var(--line);border-radius:14px;padding:22px 24px;position:relative;overflow:hidden}
.card-g::before{content:"";position:absolute;left:0;top:0;bottom:0;width:5px}
.card-g.prest::before{background:#4fc3f7} .card-g.tom::before{background:#ffb74d} .card-g.total::before{background:var(--verde)}
.card-g .lbl{color:var(--muted);font-size:13px;margin-bottom:8px}
.card-g .num{font-size:30px;font-weight:800;letter-spacing:-.5px}
.card-g .sub{color:var(--muted);font-size:12.5px;margin-top:6px}
.card-g.prest .num{color:#4fc3f7} .card-g.tom .num{color:#ffb74d} .card-g.total .num{color:#5fd38d}

/* Cards pequenos (KPIs) */
.cards{display:grid;grid-template-columns:repeat(7,1fr);gap:11px;margin-bottom:18px}
.card{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:15px 12px;text-align:center}
.card .num{font-size:22px;font-weight:700} .card .lbl{font-size:11px;color:var(--muted);margin-top:4px}
.card.prest2 .num{color:#4fc3f7} .card.tom2 .num{color:#ffb74d}
.card.canc .num{color:var(--vermelho)} .card.subst .num{color:var(--laranja)} .card.valor .num{color:var(--verde);font-size:16px}

/* Paineis 2 colunas (dashboard) */
.paineis-2col{display:grid;grid-template-columns:1.35fr 1fr;gap:16px;margin-top:4px;align-items:start}
.painel-bloco{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:18px 20px}
.bloco-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}
.bloco-head h3{font-size:14px;font-weight:600}
.legenda{font-size:11px;color:var(--muted);display:flex;align-items:center;gap:6px}
.pt{display:inline-block;width:10px;height:10px;border-radius:3px;margin-left:10px}
.pt.prest{background:#4fc3f7} .pt.tom{background:#ffb74d}

/* Grafico de barras (CSS) */
.chart{display:flex;align-items:flex-end;gap:10px;height:230px;padding-top:10px}
.chart .col{flex:1;display:flex;flex-direction:column;align-items:center;gap:6px;height:100%;justify-content:flex-end}
.chart .barras{display:flex;align-items:flex-end;gap:3px;height:100%;width:100%;justify-content:center}
.chart .bar{width:14px;border-radius:4px 4px 0 0;min-height:2px;transition:height .3s}
.chart .bar.prest{background:#4fc3f7} .chart .bar.tom{background:#ffb74d}
.chart .bar:hover{filter:brightness(1.2)}
.chart .mes{font-size:10px;color:var(--muted);white-space:nowrap}
.tabela-wrap{max-height:300px;overflow:auto}
.tabela.compacta th,.tabela.compacta td{padding:8px 10px;font-size:12.5px}
.tabela .num-col{text-align:right} td.num-col,th.num-col{text-align:right}

/* Tabela */
.tabela{width:100%;border-collapse:collapse;font-size:13px;background:var(--card);border-radius:10px;overflow:hidden}
.tabela th,.tabela td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--line)}
.tabela th{color:var(--muted);font-weight:600;font-size:11px;text-transform:uppercase;background:var(--bg2)}
.tabela th[data-ord]{cursor:pointer;user-select:none} .tabela th[data-ord]:hover{color:var(--txt)}
.tabela th .seta{color:var(--accent);margin-left:4px}
.tabela tbody tr{cursor:pointer} .tabela tbody tr:hover td{background:var(--card2)}
.tag{padding:2px 9px;border-radius:20px;font-size:11px;font-weight:600}
.tag.normal,.tag.ativo,.tag.ok{background:#1e3a2a;color:#5fd38d}
.tag.cancelada,.tag.inativo,.tag.ruim{background:#3a1e1e;color:#e88}
.tag.substituida,.tag.alerta{background:#3a2e1e;color:#e8b96b}
.paginacao{display:flex;gap:8px;align-items:center;margin-top:12px;color:var(--muted);font-size:13px}
.paginacao button{background:var(--card2);border:1px solid var(--line);color:var(--txt);padding:6px 12px;border-radius:7px}
.aviso{color:var(--muted);font-size:13px;padding:8px 0}

/* Modal */
.modal{position:fixed;inset:0;background:rgba(0,0,0,.65);display:flex;align-items:center;justify-content:center;z-index:50;padding:20px}
.modal-box{background:var(--card);border:1px solid var(--line);border-radius:12px;width:min(820px,100%);max-height:92vh;display:flex;flex-direction:column}
.modal-head{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid var(--line)}
.modal-head h3{font-size:16px}
.fechar{background:transparent;border:none;color:var(--muted);font-size:20px}
.modal-body{padding:18px 20px;overflow:auto}
.m-info{display:grid;grid-template-columns:1fr 1fr;gap:8px 20px;margin-bottom:14px}
.m-info div{font-size:13px} .m-info b{color:var(--muted);font-weight:600;display:block;font-size:11px}
.m-acoes{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:12px}
.acao-linha{display:flex;gap:8px;align-items:center;margin:8px 0;flex-wrap:wrap}
.acao-linha input[type=password],.acao-linha input[type=text]{padding:9px;border-radius:7px;border:1px solid var(--line);background:var(--card2);color:var(--txt)}
#mn-preview iframe{width:100%;height:60vh;border:1px solid var(--line);border-radius:8px;background:#fff}
#mn-preview .carregando{color:var(--muted);padding:30px;text-align:center}

/* ===== Botão de tema ===== */
.btn-tema{background:transparent;border:1px solid var(--line);color:var(--muted);padding:7px 14px;border-radius:7px;width:100%;font-size:13px}
.btn-tema:hover{color:var(--txt);border-color:var(--accent)}
.sidebar-rodape .btn-tema{margin-bottom:8px}
.btn-tema-login{margin-top:12px}

/* ===== Tema CLARO ===== */
html.tema-claro{
  --bg:#eef1f6; --bg2:#ffffff; --card:#ffffff; --card2:#f2f5f9; --line:#dce2ea;
  --txt:#1e2733; --muted:#5d6b7e; --accent:#2f80c7; --accent2:#2f80c7;
}
html.tema-claro body{background:var(--bg);color:var(--txt)}
html.tema-claro .sidebar{box-shadow:1px 0 0 var(--line)}
html.tema-claro .card,html.tema-claro .card-g,html.tema-claro .painel,
html.tema-claro .painel-bloco,html.tema-claro .tabela,
html.tema-claro .modal-box,html.tema-claro .box-login{box-shadow:0 1px 3px rgba(16,24,40,.08)}
/* números grandes mais escuros p/ contraste no fundo claro */
html.tema-claro .card-g.prest .num,html.tema-claro .card.prest2 .num{color:#1f6fb2}
html.tema-claro .card-g.tom .num,html.tema-claro .card.tom2 .num{color:#c4781a}
html.tema-claro .card-g.total .num,html.tema-claro .card.valor .num{color:#1e9e57}
/* etiquetas com fundo claro */
html.tema-claro .tag.normal,html.tema-claro .tag.ativo,html.tema-claro .tag.ok{background:#e3f6ea;color:#1e8a4d}
html.tema-claro .tag.cancelada,html.tema-claro .tag.inativo,html.tema-claro .tag.ruim{background:#fde7e7;color:#c0392b}
html.tema-claro .tag.substituida,html.tema-claro .tag.alerta{background:#fdf0dd;color:#b9770f}
/* cabeçalho da tabela e hover */
html.tema-claro .tabela th{background:#f5f7fa}
html.tema-claro .tabela tbody tr:hover td{background:#f5f7fa}
html.tema-claro .nav-item.ativo{color:#fff}
