/* ==========================================================================
   Portal UP Controladoria — folha de estilos
   Identidade baseada em upestrategia.com.br (Spectral + Archivo + IBM Plex Mono,
   fundo grafite e acento ciano). Dois temas: escuro (padrão) e claro.
   ========================================================================== */

:root {
  --fonte-titulo: 'Spectral', Georgia, 'Times New Roman', serif;
  --fonte-texto: 'Archivo', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
  --fonte-mono: 'IBM Plex Mono', ui-monospace, 'Cascadia Mono', Consolas, monospace;

  --raio-sm: 10px;
  --raio: 16px;
  --raio-lg: 22px;
  --raio-pill: 100px;
  --largura-max: 1240px;
  --altura-topo: 64px;
  --transicao: .18s ease;
  --sombra: 0 10px 30px -12px rgba(0, 0, 0, .35);
}

:root, :root[data-theme="escuro"] {
  color-scheme: dark;
  --bg: #1B1D22;
  --bg-2: #23262D;
  --bg-3: #2B2F37;
  --bg-hover: rgba(255, 255, 255, .04);
  --borda: rgba(255, 255, 255, .08);
  --borda-forte: rgba(255, 255, 255, .16);
  --texto: #ECEDEA;
  --texto-forte: #F3F2EC;
  --texto-suave: #AEB2B8;
  --texto-mudo: #9096A0;
  --acento: #01CED1;
  --acento-hover: #12DADE;
  --acento-texto: #0A2B2C;
  --acento-suave: rgba(1, 206, 209, .12);
  --acento-link: #3FE3E5;
  --sucesso: #3DD68C;
  --sucesso-suave: rgba(61, 214, 140, .14);
  --aviso: #F2C14E;
  --aviso-suave: rgba(242, 193, 78, .14);
  --erro: #FF6B6B;
  --erro-suave: rgba(255, 107, 107, .14);
  --info: #6CB6FF;
  --info-suave: rgba(108, 182, 255, .14);
  --campo-bg: #1B1D22;
  --campo-borda: rgba(255, 255, 255, .12);
  --sombra-card: 0 1px 0 rgba(255, 255, 255, .03) inset;
  --seletor-fundo: #01CED1;
}

:root[data-theme="claro"] {
  color-scheme: light;
  --bg: #F4F3EE;
  --bg-2: #FFFFFF;
  --bg-3: #ECEBE5;
  --bg-hover: rgba(0, 0, 0, .035);
  --borda: rgba(27, 29, 34, .10);
  --borda-forte: rgba(27, 29, 34, .20);
  --texto: #23262D;
  --texto-forte: #1B1D22;
  --texto-suave: #4F5560;
  --texto-mudo: #5F6572;
  --acento: #01CED1;
  --acento-hover: #00B9BC;
  --acento-texto: #0A2B2C;
  --acento-suave: rgba(1, 206, 209, .16);
  --acento-link: #007177;
  --sucesso: #15804E;
  --sucesso-suave: rgba(30, 158, 99, .12);
  --aviso: #8A6100;
  --aviso-suave: rgba(242, 193, 78, .22);
  --erro: #C23030;
  --erro-suave: rgba(212, 63, 63, .10);
  --info: #2B6FD6;
  --info-suave: rgba(43, 111, 214, .10);
  --campo-bg: #FFFFFF;
  --campo-borda: rgba(27, 29, 34, .18);
  --sombra: 0 10px 30px -14px rgba(27, 29, 34, .25);
  --sombra-card: none;
}

/* ---------- Base ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
body {
  margin: 0;
  background: var(--bg);
  color: var(--texto);
  font-family: var(--fonte-texto);
  font-size: 15px;
  line-height: 1.55;
  -webkit-font-smoothing: antialiased;
  min-height: 100vh;
  display: flex;
  flex-direction: column;
}
a { color: var(--acento-link); text-decoration: none; }
a:hover { text-decoration: underline; text-underline-offset: 3px; }
img, svg { max-width: 100%; display: block; }
button, input, select, textarea { font: inherit; color: inherit; }
::selection { background: var(--acento); color: var(--acento-texto); }
:focus-visible { outline: 2px solid var(--acento); outline-offset: 2px; border-radius: 4px; }
hr { border: 0; border-top: 1px solid var(--borda); margin: 24px 0; }
code, .mono { font-family: var(--fonte-mono); font-size: .92em; }

h1, h2, h3, h4 { font-family: var(--fonte-titulo); font-weight: 400; color: var(--texto-forte); margin: 0 0 .4em; line-height: 1.15; letter-spacing: -.01em; }
h1 { font-size: clamp(30px, 4vw, 40px); font-weight: 300; }
h2 { font-size: clamp(24px, 3vw, 30px); }
h3 { font-size: 20px; }
h4 { font-size: 17px; font-family: var(--fonte-texto); font-weight: 600; }
p { margin: 0 0 1em; }
.lead { font-size: 17px; color: var(--texto-suave); }
.mudo { color: var(--texto-mudo); }
.suave { color: var(--texto-suave); }
.pequeno { font-size: 13px; }
.destaque { color: var(--acento-link); }
.italico { font-style: italic; }
.rotulo {
  font-family: var(--fonte-mono);
  font-size: 11.5px;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: var(--acento-link);
  font-weight: 500;
}
.rotulo.mudo { color: var(--texto-mudo); }
.truncar { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.centro { text-align: center; }
.direita { text-align: right; }
.flex { display: flex; gap: 12px; align-items: center; }
.flex.entre { justify-content: space-between; }
.flex.quebra { flex-wrap: wrap; }
.flex.topo { align-items: flex-start; }
.col { display: flex; flex-direction: column; gap: 8px; }
.cresce { flex: 1 1 auto; min-width: 0; }
.mt-0 { margin-top: 0 } .mt-1 { margin-top: 8px } .mt-2 { margin-top: 16px } .mt-3 { margin-top: 24px } .mt-4 { margin-top: 40px }
.mb-0 { margin-bottom: 0 } .mb-1 { margin-bottom: 8px } .mb-2 { margin-bottom: 16px } .mb-3 { margin-bottom: 24px } .mb-4 { margin-bottom: 40px }
.oculto { display: none !important; }
.sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.so-mobile { display: none; }
@media (max-width: 760px) { .so-mobile { display: initial; } .so-desktop { display: none !important; } }

.container { width: 100%; max-width: var(--largura-max); margin: 0 auto; padding: 0 20px; }
.container.estreito { max-width: 860px; }
.container.medio { max-width: 1040px; }

/* ---------- Ícones ---------- */
.ic { width: 18px; height: 18px; flex: 0 0 auto; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.ic.pq { width: 15px; height: 15px; }
.ic.gr { width: 24px; height: 24px; }
.ic.cheio { fill: currentColor; stroke: none; }

/* ---------- Topo ---------- */
.topo {
  position: sticky; top: 0; z-index: 40;
  height: var(--altura-topo);
  background: color-mix(in srgb, var(--bg) 88%, transparent);
  backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px);
  border-bottom: 1px solid var(--borda);
}
.topo .container { height: 100%; display: flex; align-items: center; gap: 18px; }
.marca { display: flex; align-items: center; gap: 10px; color: var(--texto-forte); text-decoration: none !important; }
.marca img { height: 34px; width: auto; }
.marca-texto { line-height: 1; }
.marca-texto b { display: block; font-family: var(--fonte-texto); font-weight: 600; font-size: 17px; letter-spacing: .02em; }
.marca-texto span { display: block; font-family: var(--fonte-mono); font-size: 8.5px; letter-spacing: .18em; color: var(--texto-mudo); margin-top: 4px; text-transform: uppercase; }
.nav { display: flex; align-items: center; gap: 4px; margin-left: 10px; }
.nav a {
  display: inline-flex; align-items: center; gap: 7px;
  padding: 8px 12px; border-radius: var(--raio-pill);
  color: var(--texto-suave); font-weight: 500; font-size: 14px; text-decoration: none !important;
  transition: background var(--transicao), color var(--transicao);
}
.nav a:hover { background: var(--bg-hover); color: var(--texto-forte); }
.nav a.ativo { color: var(--texto-forte); background: var(--acento-suave); }
.nav a.ativo .ic { color: var(--acento-link); }
.topo-acoes { margin-left: auto; display: flex; align-items: center; gap: 8px; }

.btn-icone {
  display: inline-flex; align-items: center; justify-content: center;
  width: 38px; height: 38px; border-radius: 50%;
  border: 1px solid var(--borda); background: transparent; color: var(--texto-suave);
  cursor: pointer; transition: background var(--transicao), color var(--transicao), border-color var(--transicao);
}
.btn-icone:hover { background: var(--bg-hover); color: var(--texto-forte); border-color: var(--borda-forte); }
[data-alternar-tema] .ic-sol { display: none; }
:root[data-theme="claro"] [data-alternar-tema] .ic-sol { display: block; }
:root[data-theme="claro"] [data-alternar-tema] .ic-lua { display: none; }

.menu-usuario { position: relative; }
.menu-usuario > button {
  display: flex; align-items: center; gap: 10px; padding: 4px 10px 4px 4px;
  border-radius: var(--raio-pill); border: 1px solid var(--borda); background: transparent; cursor: pointer; color: var(--texto);
}
.menu-usuario > button:hover { background: var(--bg-hover); }
.avatar {
  width: 32px; height: 32px; border-radius: 50%; object-fit: cover; flex: 0 0 auto;
  background: var(--acento); color: var(--acento-texto); font-weight: 700; font-size: 12px;
  display: inline-flex; align-items: center; justify-content: center; letter-spacing: .02em;
}
.avatar.gr { width: 56px; height: 56px; font-size: 18px; }
.avatar.xg { width: 112px; height: 112px; font-size: 34px; }
.menu-usuario .nome { font-size: 14px; font-weight: 500; max-width: 160px; }
.dropdown {
  position: absolute; right: 0; top: calc(100% + 8px); min-width: 230px;
  background: var(--bg-2); border: 1px solid var(--borda); border-radius: var(--raio);
  box-shadow: var(--sombra); padding: 8px; display: none; z-index: 50;
}
.dropdown.aberto { display: block; }
.dropdown .cabecalho { padding: 8px 10px 10px; border-bottom: 1px solid var(--borda); margin-bottom: 6px; }
.dropdown .cabecalho b { display: block; font-weight: 600; }
.dropdown a, .dropdown button {
  display: flex; align-items: center; gap: 10px; width: 100%; text-align: left;
  padding: 9px 10px; border-radius: var(--raio-sm); color: var(--texto); background: none; border: 0; cursor: pointer; font-size: 14px; text-decoration: none !important;
}
.dropdown a:hover, .dropdown button:hover { background: var(--bg-hover); }
.dropdown .ic { color: var(--texto-mudo); }

.btn-menu { display: none; }
@media (max-width: 900px) {
  .nav { display: none; }
  .nav.aberto {
    display: flex; flex-direction: column; align-items: stretch; gap: 2px;
    position: absolute; left: 0; right: 0; top: var(--altura-topo);
    background: var(--bg-2); border-bottom: 1px solid var(--borda); padding: 10px 14px 14px; margin: 0;
    box-shadow: var(--sombra);
  }
  .nav.aberto a { padding: 12px 14px; border-radius: var(--raio-sm); font-size: 15px; }
  .btn-menu { display: inline-flex; }
  .menu-usuario .nome { display: none; }
  .marca-texto span { display: none; }
}

/* ---------- Conteúdo ---------- */
main.pagina { flex: 1; padding: 36px 0 60px; }
.cabecalho-pagina { display: flex; align-items: flex-end; justify-content: space-between; gap: 20px; flex-wrap: wrap; margin-bottom: 28px; }
.cabecalho-pagina h1 { margin-bottom: 6px; }
.cabecalho-pagina p { margin: 0; color: var(--texto-suave); }
.acoes { display: flex; gap: 10px; flex-wrap: wrap; align-items: center; }
.rodape { padding: 24px 0; border-top: 1px solid var(--borda); color: var(--texto-mudo); font-size: 13px; }
.rodape .container { display: flex; justify-content: space-between; flex-wrap: wrap; gap: 8px; }

/* ---------- Botões ---------- */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  padding: 11px 20px; border-radius: var(--raio-pill); border: 1px solid transparent;
  font-weight: 600; font-size: 14px; line-height: 1.2; cursor: pointer; white-space: nowrap;
  text-decoration: none !important; transition: background var(--transicao), color var(--transicao), border-color var(--transicao), transform var(--transicao);
}
.btn:active { transform: translateY(1px); }
.btn.primario { background: var(--acento); color: var(--acento-texto); }
.btn.primario:hover { background: var(--acento-hover); }
.btn.secundario { background: transparent; color: var(--texto-forte); border-color: var(--borda-forte); }
.btn.secundario:hover { background: var(--bg-hover); }
.btn.fantasma { background: transparent; color: var(--texto-suave); }
.btn.fantasma:hover { background: var(--bg-hover); color: var(--texto-forte); }
.btn.perigo { background: transparent; color: var(--erro); border-color: color-mix(in srgb, var(--erro) 40%, transparent); }
.btn.perigo:hover { background: var(--erro-suave); }
.btn.pq { padding: 7px 13px; font-size: 13px; }
.btn.bloco { width: 100%; }
.btn[disabled], .btn.desabilitado { opacity: .55; cursor: not-allowed; }
.btn .ic { width: 16px; height: 16px; }

/* ---------- Cards ---------- */
.card {
  background: var(--bg-2); border: 1px solid var(--borda); border-radius: var(--raio-lg);
  padding: 26px; box-shadow: var(--sombra-card);
}
.card.compacto { padding: 18px 20px; border-radius: var(--raio); }
.card + .card { margin-top: 18px; }
.card-titulo { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 18px; flex-wrap: wrap; }
.card-titulo h2, .card-titulo h3 { margin: 0; }

.grade { display: grid; gap: 18px; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); }
.grade.estreita { grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); }
.grade-2 { display: grid; gap: 18px; grid-template-columns: 1fr 1fr; }
.grade-3 { display: grid; gap: 18px; grid-template-columns: repeat(3, 1fr); }
@media (max-width: 760px) { .grade-2, .grade-3 { grid-template-columns: 1fr; } }

/* Indicadores (visão geral) */
.indicador { padding: 22px 24px; }
.indicador .valor { font-family: var(--fonte-titulo); font-weight: 300; font-size: 44px; line-height: 1; color: var(--texto-forte); }
.indicador .nome { color: var(--texto-mudo); margin-top: 8px; font-size: 13px; }

/* ---------- Cartão de painel ---------- */
.painel-card {
  position: relative; display: flex; flex-direction: column;
  background: var(--bg-2); border: 1px solid var(--borda); border-radius: var(--raio-lg);
  overflow: hidden; transition: border-color var(--transicao), transform var(--transicao), box-shadow var(--transicao);
}
.painel-card:hover { border-color: var(--borda-forte); transform: translateY(-2px); box-shadow: var(--sombra); }
.painel-card.oculto-pelo-usuario { opacity: .6; }
.painel-capa {
  aspect-ratio: 16 / 9; display: flex; align-items: center; justify-content: center;
  background: var(--bg-3); padding: 22px; position: relative;
}
:root[data-theme="escuro"] .painel-capa.com-imagem { background: #F3F2EC; }
.painel-capa img { max-height: 100%; max-width: 78%; object-fit: contain; }
.painel-capa .sem-capa { font-family: var(--fonte-titulo); font-size: 40px; font-weight: 300; color: var(--texto-mudo); }
.painel-tipo {
  position: absolute; top: 12px; left: 12px; padding: 4px 10px; border-radius: var(--raio-pill);
  font-family: var(--fonte-mono); font-size: 10px; letter-spacing: .12em; text-transform: uppercase;
  background: rgba(27, 29, 34, .78); color: #ECEDEA; backdrop-filter: blur(6px);
}
.painel-corpo { padding: 16px 18px 18px; display: flex; flex-direction: column; gap: 6px; flex: 1; }
.painel-corpo .cliente { font-family: var(--fonte-mono); font-size: 11px; letter-spacing: .14em; text-transform: uppercase; color: var(--texto-mudo); }
.painel-corpo h3 { margin: 0; font-size: 19px; }
.painel-corpo .descricao { color: var(--texto-suave); font-size: 13.5px; margin: 0; }
.painel-acoes { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-top: auto; padding-top: 12px; }
.painel-acoes .icones { display: flex; gap: 2px; }
.btn-estrela { background: none; border: 0; cursor: pointer; color: var(--texto-mudo); width: 34px; height: 34px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; }
.btn-estrela:hover { background: var(--bg-hover); color: var(--texto-forte); }
.btn-estrela.ativo { color: var(--aviso); }
.btn-estrela.ativo .ic { fill: currentColor; }
.link-cobre { position: absolute; inset: 0; z-index: 1; }
.painel-acoes, .painel-acoes * { position: relative; z-index: 2; }

.grupo-cliente { margin-bottom: 36px; }
.grupo-cliente-titulo { display: flex; align-items: center; gap: 14px; margin-bottom: 16px; }
.grupo-cliente-titulo h2 { margin: 0; font-size: 22px; }
.grupo-cliente-titulo .logo { height: 30px; width: auto; max-width: 110px; border-radius: 6px; object-fit: contain; }
.grupo-cliente-titulo .contagem { font-family: var(--fonte-mono); font-size: 11px; color: var(--texto-mudo); letter-spacing: .1em; }

/* ---------- Formulários ---------- */
.campo { display: flex; flex-direction: column; gap: 7px; margin-bottom: 18px; }
.campo label, .campo > .rotulo-campo { font-weight: 500; font-size: 13.5px; color: var(--texto-suave); }
.campo .ajuda { font-size: 12.5px; color: var(--texto-mudo); margin: 0; }
.campo .erro-campo { font-size: 12.5px; color: var(--erro); margin: 0; }
.entrada, select.entrada, textarea.entrada {
  width: 100%; background: var(--campo-bg); border: 1px solid var(--campo-borda); border-radius: 12px;
  padding: 12px 14px; font-size: 15px; color: var(--texto-forte); transition: border-color var(--transicao), box-shadow var(--transicao);
}
.entrada::placeholder { color: var(--texto-mudo); opacity: .8; }
.entrada:focus { outline: none; border-color: var(--acento); box-shadow: 0 0 0 3px var(--acento-suave); }
.entrada.invalida { border-color: var(--erro); }
.entrada[readonly] { opacity: .75; }
textarea.entrada { min-height: 110px; resize: vertical; line-height: 1.5; }
textarea.entrada.codigo { font-family: var(--fonte-mono); font-size: 13px; min-height: 320px; white-space: pre; tab-size: 2; }
select.entrada { appearance: none; -webkit-appearance: none; background-image: linear-gradient(45deg, transparent 50%, var(--texto-mudo) 50%), linear-gradient(135deg, var(--texto-mudo) 50%, transparent 50%); background-position: calc(100% - 20px) 50%, calc(100% - 14px) 50%; background-size: 6px 6px; background-repeat: no-repeat; padding-right: 38px; }
.entrada-grupo { display: flex; gap: 8px; }
.entrada-grupo .entrada { flex: 1; }
.entrada-icone { position: relative; }
.entrada-icone .ic { position: absolute; left: 14px; top: 50%; transform: translateY(-50%); color: var(--texto-mudo); pointer-events: none; }
.entrada-icone .entrada { padding-left: 42px; }
.entrada-icone .btn-olho { position: absolute; right: 8px; top: 50%; transform: translateY(-50%); background: none; border: 0; color: var(--texto-mudo); cursor: pointer; padding: 6px; border-radius: 50%; display: inline-flex; }
.entrada-icone .btn-olho:hover { color: var(--texto-forte); background: var(--bg-hover); }
.entrada-icone .btn-olho + .entrada, .entrada-icone .entrada.com-olho { padding-right: 44px; }
.check { display: flex; align-items: center; gap: 10px; cursor: pointer; user-select: none; font-size: 14px; color: var(--texto-suave); }
.check input { width: 18px; height: 18px; accent-color: var(--acento); cursor: pointer; margin: 0; }
.campo-linha { display: grid; grid-template-columns: 1fr 1fr; gap: 0 18px; }
@media (max-width: 640px) { .campo-linha { grid-template-columns: 1fr; } }
.form-acoes { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; margin-top: 8px; }
.arquivo-area {
  border: 1.5px dashed var(--borda-forte); border-radius: var(--raio); padding: 20px; text-align: center; color: var(--texto-suave);
  cursor: pointer; transition: border-color var(--transicao), background var(--transicao);
}
.arquivo-area:hover, .arquivo-area.arrastando { border-color: var(--acento); background: var(--acento-suave); }
.arquivo-area input { display: none; }
.arquivo-area .nome-arquivo { color: var(--texto-forte); font-weight: 500; margin-top: 6px; }
.previa-imagem { max-height: 120px; margin: 0 auto 10px; border-radius: 10px; }

/* Interruptor (switch) */
.interruptor { position: relative; display: inline-flex; align-items: center; gap: 10px; cursor: pointer; }
.interruptor input { position: absolute; opacity: 0; width: 0; height: 0; }
.interruptor .trilho { width: 42px; height: 24px; border-radius: 24px; background: var(--borda-forte); position: relative; transition: background var(--transicao); flex: 0 0 auto; }
.interruptor .trilho::after { content: ""; position: absolute; top: 3px; left: 3px; width: 18px; height: 18px; border-radius: 50%; background: #fff; transition: transform var(--transicao); box-shadow: 0 1px 3px rgba(0,0,0,.3); }
.interruptor input:checked + .trilho { background: var(--acento); }
.interruptor input:checked + .trilho::after { transform: translateX(18px); }
.interruptor input:focus-visible + .trilho { outline: 2px solid var(--acento); outline-offset: 2px; }
.interruptor input:disabled + .trilho { opacity: .45; cursor: not-allowed; }
.interruptor.salvando .trilho { opacity: .6; }

/* ---------- Tabelas ---------- */
.tabela-wrap { overflow-x: auto; border: 1px solid var(--borda); border-radius: var(--raio); background: var(--bg-2); }
table.tabela { width: 100%; border-collapse: collapse; font-size: 14px; }
.tabela th, .tabela td { padding: 13px 16px; text-align: left; border-bottom: 1px solid var(--borda); vertical-align: middle; }
.tabela th { font-family: var(--fonte-mono); font-size: 11px; letter-spacing: .12em; text-transform: uppercase; color: var(--texto-mudo); font-weight: 500; white-space: nowrap; }
.tabela th a { color: inherit; }
.tabela tbody tr:last-child td { border-bottom: 0; }
.tabela tbody tr:hover td { background: var(--bg-hover); }
.tabela td.acoes-col { text-align: right; white-space: nowrap; }
.tabela td.acoes-col form { display: inline; }
.tabela .num { text-align: right; font-variant-numeric: tabular-nums; }
.tabela .pessoa { display: flex; align-items: center; gap: 12px; min-width: 200px; }
.tabela .pessoa b { display: block; font-weight: 600; color: var(--texto-forte); }
.tabela .pessoa span { font-size: 12.5px; color: var(--texto-mudo); }
.tabela .miniatura { width: 72px; height: 44px; object-fit: contain; border-radius: 6px; background: #F3F2EC; padding: 4px; }
.vazio { padding: 48px 20px; text-align: center; color: var(--texto-mudo); }
.vazio .ic { width: 36px; height: 36px; margin: 0 auto 12px; opacity: .6; }
.vazio h3 { color: var(--texto-suave); font-family: var(--fonte-texto); font-weight: 500; font-size: 17px; }
@media (max-width: 760px) {
  .tabela th, .tabela td { padding: 11px 12px; }
  .tabela .esconder-mobile { display: none; }
}

/* ---------- Etiquetas (badges) ---------- */
.etiqueta {
  display: inline-flex; align-items: center; gap: 6px; padding: 3px 10px; border-radius: var(--raio-pill);
  font-size: 12px; font-weight: 500; line-height: 1.5; background: var(--bg-3); color: var(--texto-suave); white-space: nowrap;
}
.etiqueta.acento { background: var(--acento-suave); color: var(--acento-link); }
.etiqueta.sucesso { background: var(--sucesso-suave); color: var(--sucesso); }
.etiqueta.aviso { background: var(--aviso-suave); color: var(--aviso); }
.etiqueta.erro { background: var(--erro-suave); color: var(--erro); }
.etiqueta.info { background: var(--info-suave); color: var(--info); }
.etiqueta.mono { font-family: var(--fonte-mono); font-size: 11px; letter-spacing: .08em; text-transform: uppercase; }
.ponto { width: 8px; height: 8px; border-radius: 50%; background: currentColor; display: inline-block; }

/* ---------- Alertas / toasts ---------- */
.alerta { display: flex; gap: 12px; align-items: flex-start; padding: 14px 16px; border-radius: var(--raio); border: 1px solid; margin-bottom: 18px; font-size: 14px; }
.alerta .ic { margin-top: 1px; }
.alerta.sucesso { background: var(--sucesso-suave); border-color: color-mix(in srgb, var(--sucesso) 35%, transparent); color: var(--sucesso); }
.alerta.erro { background: var(--erro-suave); border-color: color-mix(in srgb, var(--erro) 35%, transparent); color: var(--erro); }
.alerta.aviso { background: var(--aviso-suave); border-color: color-mix(in srgb, var(--aviso) 40%, transparent); color: var(--aviso); }
.alerta.info { background: var(--info-suave); border-color: color-mix(in srgb, var(--info) 35%, transparent); color: var(--info); }
.alerta ul { margin: 4px 0 0 18px; padding: 0; }
.toasts { position: fixed; right: 16px; bottom: 16px; z-index: 100; display: flex; flex-direction: column; gap: 10px; max-width: min(380px, calc(100vw - 32px)); }
.toast { padding: 12px 16px; border-radius: var(--raio); background: var(--bg-2); border: 1px solid var(--borda-forte); box-shadow: var(--sombra); font-size: 14px; display: flex; gap: 10px; align-items: center; animation: toast-in .25s ease; }
.toast.sucesso { border-color: var(--sucesso); }
.toast.erro { border-color: var(--erro); }
@keyframes toast-in { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }

/* ---------- Abas / filtros ---------- */
.abas { display: flex; gap: 4px; border-bottom: 1px solid var(--borda); margin-bottom: 22px; overflow-x: auto; }
.abas a { padding: 10px 14px; color: var(--texto-suave); font-weight: 500; border-bottom: 2px solid transparent; margin-bottom: -1px; white-space: nowrap; text-decoration: none !important; }
.abas a.ativa { color: var(--texto-forte); border-color: var(--acento); }
.filtros { display: flex; gap: 10px; flex-wrap: wrap; align-items: flex-end; margin-bottom: 20px; }
.filtros .campo { margin: 0; min-width: 160px; flex: 1 1 160px; }
.filtros .campo.busca { flex: 2 1 240px; }
.filtros .entrada { padding: 10px 12px; font-size: 14px; }

/* ---------- Paginação ---------- */
.paginacao { display: flex; gap: 6px; justify-content: center; align-items: center; margin-top: 22px; flex-wrap: wrap; }
.paginacao a, .paginacao span { min-width: 36px; height: 36px; padding: 0 10px; display: inline-flex; align-items: center; justify-content: center; border-radius: var(--raio-pill); border: 1px solid var(--borda); color: var(--texto-suave); font-size: 13px; text-decoration: none !important; }
.paginacao a:hover { background: var(--bg-hover); color: var(--texto-forte); }
.paginacao .atual { background: var(--acento); color: var(--acento-texto); border-color: var(--acento); font-weight: 600; }

/* ---------- Layout de autenticação (login) ---------- */
body.auth { display: grid; grid-template-columns: 1.05fr .95fr; min-height: 100vh; }
.auth-marca { position: relative; overflow: hidden; padding: 48px 56px; display: flex; flex-direction: column; justify-content: space-between; border-right: 1px solid var(--borda); background: var(--bg); }
.auth-marca .anel { position: absolute; border-radius: 50%; border: 1px solid var(--acento-suave); pointer-events: none; }
.auth-marca .anel.a { top: -180px; right: -160px; width: 640px; height: 640px; border-color: rgba(1, 206, 209, .14); }
.auth-marca .anel.b { top: -80px; right: -60px; width: 440px; height: 440px; border-color: rgba(1, 206, 209, .10); }
.auth-marca .anel.c { bottom: -220px; left: -140px; width: 520px; height: 520px; border-color: rgba(1, 206, 209, .08); }
.auth-marca .conteudo { position: relative; }
.auth-marca h1 { font-size: clamp(40px, 4.6vw, 58px); font-weight: 300; letter-spacing: -.015em; margin: 0; }
.auth-marca h1 em { font-style: italic; color: var(--acento); }
.auth-marca .lead { max-width: 440px; margin-top: 24px; font-size: 17px; }
.auth-stats { display: flex; gap: 32px; margin-top: 40px; }
.auth-stats .sep { width: 1px; background: var(--borda-forte); }
.auth-stats .n { font-family: var(--fonte-titulo); font-weight: 300; font-size: 34px; line-height: 1; color: var(--texto-forte); }
.auth-stats .l { font-size: 13px; color: var(--texto-mudo); margin-top: 6px; }
.auth-simbolo { position: absolute; right: -40px; bottom: -60px; width: 330px; opacity: .18; pointer-events: none; }
.auth-form { background: var(--bg-2); display: flex; align-items: center; justify-content: center; padding: 48px 32px; position: relative; }
.auth-form .caixa { width: 100%; max-width: 400px; }
.auth-form .caixa h2 { font-size: 32px; margin: 0 0 10px; }
.auth-form .caixa > p { color: var(--texto-mudo); margin-bottom: 32px; }
.auth-form .marca { margin-bottom: 36px; }
.auth-form .btn-icone.tema { position: absolute; top: 18px; right: 18px; }
.auth-form .rodape-auth { margin-top: 28px; padding-top: 22px; border-top: 1px solid var(--borda); color: var(--texto-mudo); text-align: center; font-size: 14px; }
.auth-form .link-topo { position: absolute; top: 22px; left: 24px; font-size: 13px; color: var(--texto-mudo); display: inline-flex; gap: 6px; align-items: center; }
@media (max-width: 900px) {
  body.auth { grid-template-columns: 1fr; }
  .auth-marca { display: none; }
  .auth-form { padding: 72px 20px 40px; align-items: flex-start; }
}

/* ---------- Visualizador de painel ---------- */
body.visualizador { height: 100vh; height: 100dvh; overflow: hidden; }
.barra-painel {
  height: 52px; display: flex; align-items: center; gap: 10px; padding: 0 14px;
  background: var(--bg); border-bottom: 1px solid var(--borda); flex: 0 0 auto;
}
.barra-painel .titulo { display: flex; flex-direction: column; min-width: 0; line-height: 1.15; }
.barra-painel .titulo b { font-weight: 600; font-size: 15px; color: var(--texto-forte); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.barra-painel .titulo span { font-family: var(--fonte-mono); font-size: 10.5px; letter-spacing: .12em; text-transform: uppercase; color: var(--texto-mudo); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.barra-painel .acoes { margin-left: auto; gap: 4px; flex-wrap: nowrap; }
.barra-painel .btn-icone { width: 36px; height: 36px; border-color: transparent; }
.quadro-painel { flex: 1 1 auto; position: relative; background: var(--bg-2); }
.quadro-painel iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; background: #fff; }
body.visualizador.tela-cheia .barra-painel { display: none; }
.btn-sair-tela-cheia { position: fixed; top: 10px; left: 10px; z-index: 60; display: none; }
body.visualizador.tela-cheia .btn-sair-tela-cheia { display: inline-flex; background: rgba(27, 29, 34, .78); color: #ECEDEA; border-color: rgba(255,255,255,.2); }
.quadro-painel .carregando { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; color: var(--texto-mudo); font-family: var(--fonte-mono); font-size: 12px; letter-spacing: .14em; text-transform: uppercase; pointer-events: none; }
.quadro-painel iframe.pronto + .carregando { display: none; }

/* ---------- Matriz de acessos ---------- */
.acesso-cliente { border: 1px solid var(--borda); border-radius: var(--raio); background: var(--bg-2); margin-bottom: 12px; overflow: hidden; }
.acesso-cliente > .linha { display: flex; align-items: center; gap: 14px; padding: 14px 18px; }
.acesso-cliente > .linha b { font-weight: 600; font-size: 15px; }
.acesso-cliente .paineis { border-top: 1px solid var(--borda); background: var(--bg); }
.acesso-cliente .paineis .linha { display: flex; align-items: center; gap: 14px; padding: 10px 18px 10px 40px; border-bottom: 1px solid var(--borda); font-size: 14px; }
.acesso-cliente .paineis .linha:last-child { border-bottom: 0; }
.acesso-cliente.liberado .paineis .linha { opacity: .55; }
.acesso-cliente .descricao-origem { font-size: 12px; color: var(--texto-mudo); }

/* ---------- Diversos ---------- */
.lista-simples { list-style: none; margin: 0; padding: 0; }
.lista-simples li { display: flex; align-items: center; gap: 12px; padding: 11px 0; border-bottom: 1px solid var(--borda); }
.lista-simples li:last-child { border-bottom: 0; }
.lista-simples .quando { margin-left: auto; font-size: 12.5px; color: var(--texto-mudo); white-space: nowrap; }
.definicoes { display: grid; grid-template-columns: max-content 1fr; gap: 8px 20px; font-size: 14px; }
.definicoes dt { color: var(--texto-mudo); }
.definicoes dd { margin: 0; color: var(--texto-forte); }
.barra-progresso { height: 6px; background: var(--bg-3); border-radius: 6px; overflow: hidden; }
.barra-progresso > span { display: block; height: 100%; background: var(--acento); }
.caixa-codigo { background: var(--bg); border: 1px solid var(--borda); border-radius: var(--raio-sm); padding: 12px 14px; font-family: var(--fonte-mono); font-size: 12.5px; overflow-x: auto; }
details.recolhivel summary { cursor: pointer; font-weight: 500; color: var(--texto-suave); list-style: none; display: flex; align-items: center; gap: 8px; }
details.recolhivel summary::-webkit-details-marker { display: none; }
details.recolhivel[open] summary { margin-bottom: 12px; }
.arrastavel { cursor: grab; }
.arrastando-item { opacity: .4; }
.modal-fundo { position: fixed; inset: 0; background: rgba(0,0,0,.55); z-index: 90; display: none; align-items: center; justify-content: center; padding: 20px; }
.modal-fundo.aberto { display: flex; }
.modal { background: var(--bg-2); border: 1px solid var(--borda-forte); border-radius: var(--raio-lg); padding: 26px; width: 100%; max-width: 460px; box-shadow: var(--sombra); }
.modal h3 { margin-bottom: 8px; }
.modal p { color: var(--texto-suave); }
.modal .acoes { justify-content: flex-end; margin-top: 18px; }

/* Resultado de busca de produtos (Venum) */
.produtos-resultado { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 10px; max-height: 320px; overflow: auto; padding: 4px; }
.produto-item { display: flex; gap: 12px; align-items: center; padding: 10px; border: 1px solid var(--borda); border-radius: var(--raio-sm); background: var(--bg-2); cursor: pointer; text-align: left; color: var(--texto); }
.produto-item:hover { border-color: var(--acento); }
.produto-item.selecionado { border-color: var(--acento); background: var(--acento-suave); }
.produto-item img { width: 56px; height: 56px; object-fit: contain; border-radius: 8px; background: #fff; flex: 0 0 auto; }
.produto-item b { display: block; font-size: 13px; font-weight: 600; }
.produto-item span { font-size: 12px; color: var(--texto-mudo); font-family: var(--fonte-mono); }

@media print {
  .topo, .rodape, .acoes, .btn, .filtros, .paginacao { display: none !important; }
  body { background: #fff; color: #000; }
}

/* Painel que exige login Microsoft: no celular mostra botão em vez do iframe */
.aviso-celular { display: none; }
@media (max-width: 600px) {
  .quadro-painel.nova-aba-celular iframe, .quadro-painel.nova-aba-celular .carregando { display: none; }
  .quadro-painel.nova-aba-celular .aviso-celular { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 14px; padding: 32px 24px; text-align: center; height: 100%; color: var(--texto-suave); }
}
.sem-conteudo { display: flex; align-items: center; justify-content: center; height: 100%; padding: 32px; text-align: center; color: var(--texto-suave); }
.barra-painel .avatar-link { display: inline-flex; }

/* Grade com coluna lateral (formulários do admin) e select compacto */
.grade-lateral { display: grid; gap: 18px; grid-template-columns: 1fr 320px; align-items: start; }
@media (max-width: 760px) { .grade-lateral { grid-template-columns: 1fr; } }
select.entrada.pq { width: auto; padding: 6px 32px 6px 10px; font-size: 13px; }

[data-mover] { width: 28px; height: 28px; }
[data-mover="cima"] .ic { transform: rotate(-90deg); }
[data-mover="baixo"] .ic { transform: rotate(90deg); }
