.btn { display: inline-flex; align-items: center; gap: var(--sp-2); padding: var(--sp-2) var(--sp-4); border: 1px solid var(--border); border-radius: var(--radius-sm); background: var(--surface); color: var(--text); font-size: var(--fs-sm); cursor: pointer; transition: .15s; }
.btn:hover { border-color: var(--accent); }
.btn-primary { background: var(--accent); border-color: var(--accent); color: #fff; font-weight: 600; }
.btn-primary:hover { background: var(--accent-hover); }
.btn-danger { background: var(--danger); border-color: var(--danger); color: #fff; }
.btn-sm { padding: var(--sp-1) var(--sp-3); font-size: var(--fs-xs); }
.btn-icon { background:none; border:none; cursor:pointer; color:var(--text-dim); padding:var(--sp-1); }
.btn-icon:hover { color:var(--accent); }
.card { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius); padding: var(--sp-5); box-shadow: var(--shadow); }
.table { width: 100%; border-collapse: collapse; }
.table th, .table td { padding: var(--sp-3) var(--sp-4); text-align: left; border-bottom: 1px solid var(--border); }
.table th { color: var(--text-dim); font-size: var(--fs-xs); text-transform: uppercase; letter-spacing: .5px; }
.table tr:hover td { background: var(--bg-elev); }
.table .acoes { white-space: nowrap; }
.field { margin-bottom: var(--sp-4); }
.field label { display: block; font-size: var(--fs-sm); color: var(--text-dim); margin-bottom: var(--sp-2); }
.input, .textarea, select.input { width: 100%; padding: var(--sp-3) var(--sp-4); background: var(--bg-elev); border: 1px solid var(--border); border-radius: var(--radius-sm); color: var(--text); font-size: var(--fs-base); }
.input:focus, .textarea:focus, select.input:focus { outline: none; border-color: var(--accent); }
.textarea { min-height: 80px; resize: vertical; }
select.input option { background: var(--bg-elev); color: var(--text); }
.badge { padding: 2px 10px; border-radius: 999px; font-size: var(--fs-xs); font-weight: 600; }
.badge-success { background: rgba(46,204,113,.15); color: var(--success); }
.badge-danger { background: rgba(231,76,60,.15); color: var(--danger); }
.badge-warning { background: rgba(241,196,15,.15); color: var(--warning); }
.badge-info { background: rgba(255,117,0,.12); color: var(--accent); }
.filtros { display: flex; gap: var(--sp-3); flex-wrap: wrap; margin-bottom: var(--sp-4); align-items: flex-end; }
.filtros .field { margin-bottom: 0; min-width: 140px; }
.flash { padding: var(--sp-3) var(--sp-4); border-radius: var(--radius-sm); margin-bottom: var(--sp-3); display:flex; align-items:center; gap:var(--sp-2); }
.flash.success { background: rgba(46,204,113,.12); color: var(--success); }
.flash.error { background: rgba(231,76,60,.12); color: var(--danger); }
.icon { font-size: 1.1rem; line-height: 1; display: inline-flex; vertical-align: middle; }
.icon-xl { font-size: 2.5rem; }
.btn .icon, .btn-primary .icon { margin-right: 0.4rem; }
.nav-item .icon { font-size: 1.15rem; color: var(--accent); }
.icon-accent { color: var(--accent); }
.icon-success { color: var(--success); }
.icon-danger { color: var(--danger); }
.kpi-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: var(--sp-4); margin-bottom: var(--sp-5); }
.kpi-card { background: var(--surface); border:1px solid var(--border); border-radius: var(--radius); padding: var(--sp-4); }
.kpi-card .kpi-label { font-size: var(--fs-xs); color: var(--text-dim); text-transform: uppercase; margin-bottom: var(--sp-2); display:flex; align-items:center; gap:var(--sp-2); }
.kpi-card .kpi-value { font-size: var(--fs-2xl); font-weight: 700; }
.kpi-card .kpi-value.positivo { color: var(--success); }
.kpi-card .kpi-value.negativo { color: var(--danger); }
.modal-overlay { display:none; position:fixed; inset:0; background:rgba(0,0,0,.6); z-index:100; align-items:center; justify-content:center; }
.modal-overlay.open { display:flex; }
.modal { background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-lg); padding:var(--sp-5); width:90%; max-width:500px; max-height:90vh; overflow-y:auto; }
.modal h3 { margin-bottom: var(--sp-4); }
.form-row { display:flex; gap:var(--sp-3); }
.form-row .field { flex:1; }
.inline-check { display:flex; align-items:center; gap:var(--sp-2); cursor:pointer; }
.tela-publica { display:flex; align-items:center; justify-content:center; min-height:100vh; }
.publico-bg { width:100%; display:flex; align-items:center; justify-content:center; padding:var(--sp-5); }
.login-card { width:100%; max-width:420px; }
.login-marca { display:flex; align-items:center; gap:var(--sp-3); margin-bottom:var(--sp-5); }
.login-marca .nm { font-size:var(--fs-lg); font-weight:700; color:var(--accent); }
.login-marca .sb { font-size:var(--fs-xs); color:var(--text-dim); }
.login-card h1 { font-size:var(--fs-xl); margin-bottom:var(--sp-2); }
.login-card .intro { color:var(--text-dim); margin-bottom:var(--sp-5); }
.campo { margin-bottom:var(--sp-4); }
.campo label { display:block; font-size:var(--fs-sm); color:var(--text-dim); margin-bottom:var(--sp-2); }
.input-senha { position:relative; }
.input-senha .toggle-senha { position:absolute; right:var(--sp-3); top:50%; transform:translateY(-50%); background:none; border:none; color:var(--text-dim); cursor:pointer; }
.btn-bloco { width:100%; justify-content:center; padding:var(--sp-3); }
.pp-cab-info { margin-bottom:var(--sp-4); }
.nome-perfil { font-size:var(--fs-xl); font-weight:600; display:flex; align-items:center; gap:var(--sp-2); }
.desc-perfil { color:var(--text-dim); font-size:var(--fs-sm); }
.pp-barra-global { display:flex; align-items:center; gap:var(--sp-3); flex-wrap:wrap; padding:var(--sp-3); background:var(--bg-elev); border-radius:var(--radius-sm); margin-bottom:var(--sp-4); }
.ppg-acao, .pp-grupo-acao { font-size:var(--fs-xs); padding:var(--sp-1) var(--sp-3); border:1px solid var(--border); border-radius:var(--radius-sm); background:var(--surface); color:var(--text-dim); cursor:pointer; }
.ppg-acao:hover, .pp-grupo-acao:hover { border-color:var(--accent); color:var(--accent); }
.pp-grupo { margin-bottom:var(--sp-4); border:1px solid var(--border); border-radius:var(--radius); overflow:hidden; }
.pp-grupo-cab { display:flex; align-items:center; justify-content:space-between; padding:var(--sp-3) var(--sp-4); background:var(--bg-elev); }
.pp-grupo-cab h4 { font-size:var(--fs-sm); }
.pp-grupo-cab .qtd { color:var(--text-dim); font-weight:400; font-size:var(--fs-xs); }
.acoes-grupo { display:flex; gap:var(--sp-2); }
.pp-grupo-acoes-extra { padding:var(--sp-2) var(--sp-4); background:var(--surface); display:flex; align-items:center; gap:var(--sp-3); flex-wrap:wrap; font-size:var(--fs-xs); color:var(--text-dim); border-bottom:1px solid var(--border); }
.pp-grupo-acoes-extra label { display:flex; align-items:center; gap:var(--sp-1); cursor:pointer; }
.pp-tabela { width:100%; border-collapse:collapse; }
.pp-tabela th, .pp-tabela td { padding:var(--sp-2) var(--sp-4); border-bottom:1px solid var(--border); }
.pp-tabela th { text-align:left; color:var(--text-dim); font-size:var(--fs-xs); }
.pp-rodape-fixo { position:sticky; bottom:0; background:var(--surface); border-top:1px solid var(--border); padding:var(--sp-3) var(--sp-4); display:flex; align-items:center; justify-content:space-between; }
.pp-rodape-fixo .info { font-size:var(--fs-xs); color:var(--text-dim); }
.chart-grid { display:grid; grid-template-columns:1fr 1fr; gap:var(--sp-4); margin-bottom:var(--sp-4); }
.chart-card { background:var(--surface); border:1px solid var(--border); border-radius:var(--radius); padding:var(--sp-4); }
.chart-card h3 { font-size:var(--fs-sm); color:var(--text-dim); margin-bottom:var(--sp-3); text-transform:uppercase; letter-spacing:.5px; }
@media (max-width: 900px) { .chart-grid { grid-template-columns:1fr; } }
.orc-wrap { overflow-x:auto; }
.orc-table { width:100%; border-collapse:collapse; font-size:var(--fs-xs); }
.orc-table th, .orc-table td { padding:var(--sp-2); border:1px solid var(--border); text-align:center; }
.orc-table th { background:var(--bg-elev); color:var(--text-dim); position:sticky; top:0; z-index:2; }
.orc-table td input { width:80px; text-align:right; background:var(--bg-elev); border:1px solid var(--border); color:var(--text); padding:2px 4px; border-radius:4px; font-size:var(--fs-xs); }
.orc-table .cat-nome { text-align:left; font-weight:600; white-space:nowrap; }
.orc-over { color:var(--danger); font-weight:600; }
.orc-ok { color:var(--success); }
.selectbusca { position: relative; min-width: 160px; }
.selectbusca .sb-display { padding: var(--sp-3) var(--sp-4); background: var(--bg-elev); border: 1px solid var(--border); border-radius: var(--radius-sm); cursor: pointer; display: flex; justify-content: space-between; align-items: center; font-size: var(--fs-base); color: var(--text); }
.selectbusca .sb-panel { position: absolute; top: 100%; left: 0; right: 0; z-index: 50; background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-sm); margin-top: 4px; box-shadow: var(--shadow); max-height: 280px; overflow-y: auto; display: none; }
.selectbusca.open .sb-panel { display: block; }
.selectbusca .sb-search { width: 100%; padding: var(--sp-3); background: var(--bg-elev); border: none; border-bottom: 1px solid var(--border); color: var(--text); font-size:var(--fs-sm); }
.selectbusca .sb-opt { padding: var(--sp-3) var(--sp-4); cursor: pointer; font-size:var(--fs-sm); }
.selectbusca .sb-opt:hover { background: var(--accent-soft); color: var(--accent); }
