
:root{
  --bg:#f4f6f8;--bg-card:#fff;--bg-sidebar:#1f2937;--bg-soft:#f9fafb;
  --text-primary:#111827;--text-secondary:#4b5563;--text-tertiary:#5f6672;
  --border:#d6d8db;--line:#eef0f2;--primary:#1d4ed8;--primary-hover:#1e40af;
  --green:#16a34a;--red:#dc2626;--red-dark:#b91c1c;--amber:#d97706;--radius:8px;
  --shadow-sm:0 1px 2px rgba(0,0,0,0.05);
  font-family:ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0;background:var(--bg);color:var(--text-primary)}
[hidden]{display:none!important}
::selection{background:#bfdbfe;color:#111827}
:focus-visible{outline:2px solid var(--primary);outline-offset:2px}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.nw{white-space:nowrap}
.ico{width:15px;height:15px;flex:none;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}


/* shell (mesmo do WSfaturamento) */
.app-shell{display:grid;grid-template-columns:220px minmax(0,1fr);min-height:100vh}
.sidebar{background:var(--bg-sidebar);color:#fff;padding:20px 0;display:flex;flex-direction:column}
.sidebar__brand{padding:0 20px 18px;border-bottom:1px solid #374151;margin-bottom:12px}
.sidebar__brand img{height:15px;width:auto;display:block;margin-bottom:12px;opacity:.85}
.sidebar__brand strong{display:block;font-size:1.35rem;letter-spacing:-.01em;line-height:1.1}
.sidebar__brand small{color:#9ca3af;font-size:.78rem;display:block;margin-top:3px;white-space:nowrap}
.sidebar nav{display:flex;flex-direction:column}
.sidebar nav a{display:block;padding:10px 20px;color:#d1d5db;text-decoration:none;font-size:.9rem}
.sidebar nav a:hover,.sidebar nav a.is-active{background:#374151;color:#fff}
.sidebar nav a:focus-visible{outline-offset:-2px}
.sidebar__foot{margin-top:auto;padding:16px 20px;border-top:1px solid #374151}
.sidebar__user{font-size:.85rem;color:#e5e7eb;margin-bottom:10px;line-height:1.35}
.sidebar__user span{display:block;color:#9ca3af;font-size:.75rem}
.logout-btn{width:100%;padding:8px 12px;background:transparent;border:1px solid #4b5563;color:#d1d5db;border-radius:6px;font-size:.85rem;cursor:pointer;font-family:inherit}
.logout-btn:hover{background:#374151}

.main{padding:24px 32px;min-width:0}
.main>section>*{max-width:1024px;margin-left:auto;margin-right:auto}
.main h1{margin:0 0 4px;font-size:1.6rem;letter-spacing:-.01em}
.lead{color:var(--text-secondary);font-size:.9rem;margin:0 0 16px;line-height:1.45}
.head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;flex-wrap:wrap;margin-bottom:16px}
.head .lead{margin:0}

.card{background:var(--bg-card);border-radius:var(--radius);padding:20px;box-shadow:var(--shadow-sm);margin-bottom:16px}
.card h2{margin:0 0 4px;font-size:1.05rem}
.card h2+.lead{margin-bottom:14px}

/* resumo */
.kpis{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:16px}
.kpi{background:#fff;border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:14px 16px;min-width:0}
.kpi small{display:block;color:var(--text-secondary);font-size:.78rem;font-weight:600}
.kpi strong{display:block;font-size:1.4rem;margin:4px 0 6px;font-variant-numeric:tabular-nums}
.kpi strong em{font-style:normal;font-size:.85rem;color:var(--text-tertiary);font-weight:500}
.kpi p{margin:6px 0 0;font-size:.78rem;color:var(--text-secondary);line-height:1.35}
.bar{height:6px;background:#e5e7eb;border-radius:3px;overflow:hidden}
.bar i{display:block;height:100%;background:var(--primary);border-radius:3px}
.bar i.warn{background:var(--amber)}.bar i.crit{background:var(--red)}

/* botões */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:10px 16px;border-radius:var(--radius);border:1px solid transparent;font-size:.9rem;font-weight:600;cursor:pointer;font-family:inherit;white-space:nowrap;line-height:1.1;text-decoration:none}
.btn--primary{background:var(--primary);color:#fff}.btn--primary:hover{background:var(--primary-hover)}
.btn--ghost{background:#fff;color:var(--text-primary);border-color:var(--border)}.btn--ghost:hover{background:#f3f4f6}
.btn--danger{background:var(--red);color:#fff}.btn--danger:hover{background:var(--red-dark)}
.btn:disabled,.btn:disabled:hover{background:#e5e7eb;color:#6b7280;border-color:transparent;cursor:not-allowed}
/* ação de linha: contornada, nunca sólida (regra king55) */
.btn-sm{display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 11px;border:1px solid var(--border);background:#fff;color:var(--text-primary);border-radius:6px;font:inherit;font-size:.8rem;font-weight:600;cursor:pointer;white-space:nowrap}
.btn-sm:hover{background:#f3f4f6;border-color:#c4c7cc}
.btn-sm .ico{width:14px;height:14px;color:var(--text-secondary)}
.btn-sm--alerta{border-color:#f59e0b;color:#92400e;background:#fffbeb}
.btn-sm--alerta .ico{color:#b45309}
.btn-sm--alerta:hover{background:#fef3c7;border-color:#d97706}
.btn-sm--icone{width:32px;padding:0;justify-content:center}
.btn-sm--icone .ico{width:16px;height:16px}
.btn-sm[aria-expanded="true"]{background:#f3f4f6;border-color:#9ca3af}
.link{background:none;border:0;padding:2px 0;font:inherit;font-size:.85rem;color:var(--primary);cursor:pointer;text-decoration:none}
.link:hover{text-decoration:underline;text-underline-offset:2px}

/* menu ⋯ */
.menu{position:fixed;z-index:30;background:#fff;border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 8px 24px rgba(17,24,39,.14);padding:4px;min-width:220px;max-width:280px}
.menu button{display:flex;align-items:center;gap:8px;width:100%;padding:9px 10px;border:0;background:none;border-radius:6px;font:inherit;font-size:.86rem;text-align:left;cursor:pointer;color:var(--text-primary)}
.menu button:hover{background:#f3f4f6}
.menu button.perigo{color:var(--red-dark)}
.menu button.perigo:hover{background:#fef2f2}
.menu button:disabled{color:#9ca3af;cursor:not-allowed;background:none}
.menu__nota{font-size:.75rem;color:var(--text-secondary);padding:2px 10px 8px 33px;line-height:1.35}

/* filtros */
.filtros{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:12px}
.filtros input,.filtros select{padding:8px 10px;border:1px solid var(--border);border-radius:6px;font-size:.9rem;font-family:inherit;background:#fff;color:var(--text-primary)}
.filtros input{flex:1 1 200px;min-width:0}
.filtros select{flex:0 1 auto;min-width:0}

/* tabela (densidade das NFs) */
table{width:100%;border-collapse:collapse;font-size:.85rem}
th,td{padding:7px 8px;text-align:left;border-bottom:1px solid var(--line);vertical-align:middle}
th{font-size:.75rem;color:var(--text-secondary);font-weight:600;text-transform:uppercase;letter-spacing:.3px}
th.dir{text-align:right}
tbody tr:hover{background:var(--bg-soft)}
.addr{white-space:nowrap;font-weight:600}
.addr .dom{font-weight:400;color:var(--text-tertiary)}
td .sub{display:block;color:var(--text-secondary);font-size:.78rem;margin-top:1px}
.col-uso{width:150px}
.col-uso .bar{margin-top:4px}
.uso-num{white-space:nowrap;font-variant-numeric:tabular-nums}
.acoes{text-align:right;width:1%}
.acoes__in{display:flex;gap:6px;justify-content:flex-end;flex-wrap:nowrap}
tr.is-off .addr,tr.is-off .sub,tr.is-off .uso-num{color:var(--text-tertiary)}
tr.is-off .addr b{text-decoration:line-through;text-decoration-color:#d1d5db}
.badge{display:inline-block;font-size:.72rem;font-weight:600;border-radius:999px;padding:2px 8px;white-space:nowrap}
.badge--ok{background:#dcfce7;color:#166534}
.badge--off{background:#fee2e2;color:#991b1b}
.badge--warn{background:#fef3c7;color:#92400e}
.chips{display:flex;flex-wrap:wrap;gap:4px}
.chip{display:inline-flex;align-items:center;gap:0;white-space:nowrap;background:#f3f4f6;border:1px solid #e5e7eb;border-radius:999px;padding:1px 8px;font-size:.8rem}
.chip .dom{color:var(--text-tertiary)}
.alerta-mini{display:inline-flex;align-items:center;gap:6px;margin-top:8px;padding:3px 9px 3px 7px;border-radius:6px;background:#fffbeb;border:1px solid #fde68a;color:#92400e;font-size:.76rem;font-weight:600;line-height:1.3}
.alerta-mini .ico{width:13px;height:13px;color:#d97706}
.vazio{color:var(--text-secondary);text-align:center;padding:28px 12px}
.vazio p{margin:0 0 10px}

/* avisos */
.aviso{border-radius:var(--radius);padding:10px 12px;font-size:.85rem;line-height:1.45;margin:0 0 12px}
.aviso--info{background:#eff6ff;color:#1e3a8a;border:1px solid #bfdbfe}
.aviso--warn{background:#fffbeb;color:#92400e;border:1px solid #fcd34d}
.aviso--erro{background:#fef2f2;color:#991b1b;border:1px solid #fecaca}
.aviso ul{margin:4px 0 0;padding-left:18px}
.aviso li+li{margin-top:3px}
.aviso strong{font-weight:700}

/* form */
.form{display:grid;gap:14px}
.form label,.form .campo{display:grid;gap:6px;font-size:.85rem;font-weight:600;color:var(--text-secondary)}
.form small,.dica{font-weight:400;color:var(--text-tertiary);font-size:.78rem;line-height:1.4}
.form input,.form select{padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius);font-size:.95rem;font-family:inherit;background:#fff;color:var(--text-primary);width:100%}
.form input:focus,.form select:focus{outline:2px solid var(--primary);outline-offset:-1px;border-color:transparent}
.form input[aria-invalid="true"]{border-color:var(--red)}
.campo-dominio{display:flex;align-items:stretch}
.campo-dominio input{border-radius:var(--radius) 0 0 var(--radius);min-width:0}
.campo-dominio span{display:flex;align-items:center;padding:0 12px;background:#f3f4f6;border:1px solid var(--border);border-left:0;border-radius:0 var(--radius) var(--radius) 0;color:var(--text-secondary);font-size:.9rem;white-space:nowrap}
.previa{font-size:.82rem;color:var(--text-secondary);font-weight:400}
.previa b{color:var(--text-primary)}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.fato{display:flex;justify-content:space-between;gap:12px;font-size:.85rem;padding:8px 0;border-top:1px solid var(--line);color:var(--text-secondary)}
.fato b{color:var(--text-primary);font-variant-numeric:tabular-nums;white-space:nowrap}
.add-dest{display:flex;gap:8px}
.add-dest input{flex:1;min-width:0}
.dests{display:flex;flex-wrap:wrap;gap:6px;min-height:8px}
.dests .chip{padding:3px 4px 3px 10px;font-size:.82rem}
.dests .chip.erro{background:#fef2f2;border-color:#fca5a5}
.dests .chip.warn{background:#fffbeb;border-color:#fcd34d}
.chip button{margin-left:4px;display:inline-grid;place-items:center;width:20px;height:20px;border:0;background:none;border-radius:50%;cursor:pointer;color:var(--text-secondary);padding:0}
.chip button:hover{background:rgba(0,0,0,.08)}
.chip button .ico{width:12px;height:12px}

/* diálogo nativo */
dialog{border:0;padding:0;border-radius:var(--radius);box-shadow:0 10px 40px rgba(0,0,0,.2);width:calc(100% - 32px);max-width:480px;max-height:calc(100vh - 32px);color:var(--text-primary)}
dialog::backdrop{background:rgba(17,24,39,.45)}
.modal{padding:22px}
.modal h2{margin:0 0 6px;font-size:1.15rem}
.modal .lead{margin-bottom:14px}
.modal__acoes{display:flex;justify-content:flex-end;gap:8px;margin-top:18px;flex-wrap:wrap}
.alvo{display:block;background:var(--bg-soft);border:1px solid var(--border);border-radius:var(--radius);padding:10px 12px;font-size:.95rem;margin:0 0 14px;overflow:hidden;text-overflow:ellipsis}
.alvo--perigo{background:#fef2f2;border-color:#fecaca}
.senha{display:flex;gap:10px;align-items:center;justify-content:space-between;flex-wrap:wrap;background:var(--bg-soft);border:1px solid var(--border);border-radius:var(--radius);padding:10px 12px}
.senha code{font-family:ui-monospace,Menlo,monospace;font-size:1.1rem;letter-spacing:.5px;white-space:nowrap}

/* login */
.login{min-height:100vh;display:grid;place-items:center;padding:24px 16px}
.login-card{background:#fff;border-radius:var(--radius);box-shadow:0 10px 40px rgba(0,0,0,.1);padding:32px;width:100%;max-width:400px}
.login-card .marca{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:22px}
.login-card .marca strong{font-size:1.5rem;letter-spacing:-.01em}
.login-card .marca img{height:13px;width:auto;opacity:.8}
.login-card h1{margin:0 0 4px;font-size:1.15rem}
.login-card p{color:var(--text-secondary);font-size:.875rem;margin:0 0 16px;line-height:1.45}
.login-card .rodape{margin:18px 0 0;padding-top:14px;border-top:1px solid var(--line);font-size:.8rem}
.linha-links{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap}
.codigo{letter-spacing:8px;text-align:center;font-size:1.3rem!important;font-family:ui-monospace,Menlo,monospace!important}

/* aparelhos */
.aparelhos{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(170px,100%),1fr));gap:8px}
.aparelhos a{display:flex;align-items:center;gap:8px;padding:12px;border:1px solid var(--border);border-radius:var(--radius);color:var(--text-primary);text-decoration:none;font-size:.88rem;font-weight:600}
.aparelhos a:hover{border-color:var(--primary);background:#eff6ff}
.aparelhos a .ico{color:var(--primary)}
.dados{display:grid;grid-template-columns:max-content minmax(0,1fr) auto;gap:0 16px;font-size:.88rem;margin:0;align-items:stretch}
.dados dt,.dados dd:not(.v){display:flex;align-items:center}
.dados dd.v{align-self:stretch;display:flex;flex-direction:column;justify-content:center}
.dados dt,.dados dd{padding:9px 0;border-top:1px solid var(--line);margin:0}
.dados>:nth-child(-n+3){border-top:0}
.dados dt{color:var(--text-secondary);font-weight:600}
.dados dd.v{font-family:ui-monospace,Menlo,monospace;font-size:.85rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dados dd.v.txt{font-family:inherit;font-size:.88rem;white-space:normal}

.toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);background:#111827;color:#fff;padding:8px 8px 8px 16px;border-radius:var(--radius);font-size:.88rem;box-shadow:0 6px 20px rgba(0,0,0,.25);z-index:40;max-width:calc(100% - 32px);display:flex;align-items:center;gap:12px;min-height:40px}
.toast button{background:none;border:1px solid #4b5563;color:#93c5fd;font:inherit;font-weight:600;border-radius:6px;padding:5px 10px;cursor:pointer;white-space:nowrap}
.toast button:hover{background:#374151}
.toast:not(:has(button)){padding-right:16px}

/* até ~1200 px a tabela de contas vira lista de cartões: nada de endereço quebrado nem rolagem lateral */
@media (max-width:1200px){
  table.resp thead{display:none}
  table.resp,table.resp tbody,table.resp tr,table.resp td{display:block;width:100%}
  table.resp tr{border-bottom:1px solid #e5e7eb;padding:12px 4px}
  table.resp td{border:0;padding:3px 0;text-align:left}
  table.resp td[data-r]::before{content:attr(data-r) ": ";color:var(--text-secondary);font-size:.78rem}
  table.resp .col-uso{width:auto}
  table.resp .col-uso .bar{max-width:240px}
  table.resp td.acoes{padding-top:8px}
  table.resp .acoes__in{justify-content:flex-start;flex-wrap:wrap}
}
@media (max-width:1000px){
  .dados{grid-template-columns:minmax(0,1fr) auto}
  .dados dt{grid-column:1 / -1;padding-bottom:0}
  .dados dd{border-top:0}
  .dados dt:not(:first-of-type){border-top:1px solid var(--line);margin-top:4px}
  .dados dd.v{font-family:inherit;font-size:.88rem}
}
@media (max-width:768px){
  .app-shell{grid-template-columns:minmax(0,1fr);grid-template-rows:auto 1fr}
  .sidebar{flex-direction:row;flex-wrap:wrap;padding:10px 16px 12px;align-items:center;gap:10px}
  .sidebar__brand{padding:0;border:0;margin:0;flex:1 1 auto;display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
  .sidebar__brand img{height:12px;margin:0;order:2}
  .sidebar__brand strong{font-size:1.15rem}
  .sidebar__brand small{display:none}
  .sidebar nav{display:grid;grid-template-columns:1fr 1fr;width:100%;order:3;gap:4px}
  .sidebar nav a{padding:8px 10px;font-size:.85rem;border-radius:6px;background:#273244;text-align:center}
  .sidebar__foot{margin:0;padding:0;border:0}
  .sidebar__user{display:none}
  .logout-btn{padding:6px 12px;font-size:.8rem}
  .main{padding:16px}
  .main h1{font-size:1.35rem}
  .card{padding:14px}
  .grid2{grid-template-columns:1fr}
  .head .btn{width:100%}
  .kpis{gap:0;background:#fff;border-radius:var(--radius);box-shadow:var(--shadow-sm)}
  .kpi{box-shadow:none;border-radius:0;padding:12px 10px}
  .kpi+.kpi{border-left:1px solid var(--line)}
  .kpi strong{font-size:1.15rem;margin:2px 0 4px}
  .kpi strong em{display:block;font-size:.72rem}
  .kpi small{font-size:.72rem}
  .kpi p{display:none}
  .btn-sm{height:40px;padding:0 12px}
  .btn-sm--icone{width:40px;padding:0}
  .modal{padding:18px}
  .kpi small{min-height:2.5em}
  .dados dd.v{font-family:inherit;font-size:.85rem}
}

/* menu: item externo */
.sidebar nav a .ext{width:12px;height:12px;margin-left:6px;vertical-align:-1px;opacity:.7}
.sidebar nav .sep{height:1px;background:#374151;margin:8px 20px}

/* carregando / erro de carga */
.carregando{color:var(--text-secondary);text-align:center;padding:28px 12px;font-size:.9rem}
.falha-carga{margin:0 0 16px}

/* usuários (padrão do painel OVD) */
.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;align-items:start}
.form-grid .wide{grid-column:1 / -1}
.form-acoes{display:flex;justify-content:flex-end;margin-top:14px}
.toolbar{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:12px}
.toolbar input{flex:1 1 220px;min-width:0;padding:8px 10px;border:1px solid var(--border);border-radius:6px;font:inherit;font-size:.9rem}
.toolbar select{padding:8px 10px;border:1px solid var(--border);border-radius:6px;font:inherit;font-size:.9rem;background:#fff}
.toolbar .meta{margin-left:auto;color:var(--text-secondary);font-size:.82rem;white-space:nowrap}
.badge--papel-owner{background:#ede9fe;color:#5b21b6}
.badge--papel-admin{background:#dbeafe;color:#1e40af}
.badge--papel-operador{background:#e0f2fe;color:#075985}
.badge--papel-leitura{background:#f3f4f6;color:#374151}
.badge--plain{background:#f3f4f6;color:#374151}
tr.is-sel>td{background:#f8fafc}
tr.edicao>td{background:#f8fafc;padding:12px 8px 16px}
.subcards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.subcard{background:#fff;border:1px solid var(--border);border-radius:var(--radius);padding:14px;display:flex;flex-direction:column;gap:8px}
.subcard--perigo{border-color:#fecaca;background:#fffafa}
.subcard .rot{font-size:.82rem;font-weight:600;color:var(--text-secondary)}
.subcard select,.subcard input{padding:8px 10px;border:1px solid var(--border);border-radius:6px;font:inherit;font-size:.9rem;width:100%}
.subcard input.mono{font-family:ui-monospace,Menlo,monospace}
.subcard .btn{align-self:flex-start;padding:8px 12px;font-size:.84rem}
.btn--perigo-suave{background:#fff;color:var(--red-dark);border-color:#fca5a5}.btn--perigo-suave:hover{background:#fef2f2}
.papeis-lista{list-style:none;margin:0;padding:0;display:grid;gap:8px;font-size:.88rem}
.papeis-lista li{display:flex;gap:10px;align-items:baseline;flex-wrap:wrap}
.alerta-ok{background:#ecfdf5;border:1px solid #a7f3d0;color:#065f46;border-radius:var(--radius);padding:10px 12px;font-size:.86rem;margin:0 0 12px}
@media (max-width:900px){.subcards{grid-template-columns:1fr}.form-grid{grid-template-columns:1fr}}
.dados dd.v .dica-dado{display:block;font-family:ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;font-size:.78rem;color:var(--text-tertiary);white-space:normal;margin-top:2px}
td .sub.sem-nome{color:var(--text-tertiary);font-style:italic}
