/* lista de usuários */
.userslist{display:flex;flex-direction:column;gap:8px;max-height:50vh;overflow-y:auto}
.urow{display:flex;align-items:center;gap:12px;padding:11px 13px;border:1px solid var(--linha);border-radius:10px}
.urow .uemail{flex:1;font-size:13.5px;font-weight:600;color:var(--tinta);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.urow .ucur{font-size:11px;font-weight:800;text-transform:uppercase;padding:2px 8px;border-radius:99px}
.urow .ucur.adm{background:#FCE4A6;color:#8A5A00} .urow .ucur.usr{background:#E9EEF4;color:var(--tinta-2)}
.urow .uset{display:flex;gap:6px}
.urow .uset button{font-size:12px;font-weight:700;padding:6px 11px;border-radius:7px;border:1.5px solid var(--linha);color:var(--suave);background:#fff}
.urow .uset button.on{border-color:var(--azul-esc);background:var(--azul-esc);color:#fff}
.urow.me .uemail::after{content:" (você)";color:var(--suave);font-weight:400;font-size:12px}
@media(max-width:760px){
  .ports{overflow-x:auto;-webkit-overflow-scrolling:touch}
  .ports .thead,.port{min-width:760px}
}
.addsplit{width:100%;padding:14px;border:1.5px dashed var(--linha);border-radius:var(--r);color:var(--azul-esc);font-weight:700;font-size:13.5px;
  display:flex;align-items:center;justify-content:center;gap:8px;background:#fff;transition:.15s}
.addsplit:hover{border-color:var(--azul);background:#F7FCFF}

.modal{position:fixed;inset:0;z-index:1400;display:none;align-items:center;justify-content:center;padding:18px}
.modal.open{display:flex}
.modal .ov{position:absolute;inset:0;background:rgba(11,32,52,.42)}
.modal .box{position:relative;background:#fff;border-radius:16px;width:540px;max-width:100%;max-height:90vh;overflow-y:auto;box-shadow:0 24px 70px rgba(11,32,52,.3)}
.modal .box.wide{width:680px}
.modal .mh{padding:18px 24px;border-bottom:1px solid var(--linha);display:flex;justify-content:space-between;align-items:center}
.modal .mh h3{font-size:17px;color:var(--tinta)}
.modal .mh .x{width:32px;height:32px;border-radius:8px;color:var(--suave);display:grid;place-items:center;font-size:20px}
.modal .mh .x:hover{background:var(--papel)}
.modal .mb{padding:22px 24px}
.modal .mf{padding:16px 24px;border-top:1px solid var(--linha);display:flex;gap:10px;justify-content:flex-end;flex-wrap:wrap}
.field{margin-bottom:14px}
.field label{display:block;font-size:11.5px;font-weight:700;letter-spacing:.03em;text-transform:uppercase;color:var(--suave);margin-bottom:6px}
.field input,.field select,.field textarea{width:100%;padding:11px 13px;border:1.5px solid var(--linha);border-radius:var(--r-sm);font-size:14px;color:var(--texto);background:#FBFDFF;transition:.16s}
.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--azul);background:#fff;box-shadow:0 0 0 3px rgba(0,175,233,.13)}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:13px}
.hint{font-size:12px;color:var(--suave);margin-top:4px;line-height:1.5}
.hint code{background:var(--papel);padding:1px 6px;border-radius:5px;font-size:11.5px;color:var(--azul-esc)}
.tabs{display:flex;gap:4px;background:var(--papel);padding:4px;border-radius:10px;margin-bottom:18px}
.tabs button{flex:1;padding:8px;border-radius:7px;font-size:13px;font-weight:700;color:var(--suave)}
.tabs button.on{background:#fff;color:var(--azul-esc);box-shadow:var(--sombra)}
.seg{display:flex;gap:8px}
.seg button{flex:1;padding:10px;border:1.5px solid var(--linha);border-radius:9px;font-weight:700;font-size:13.5px;color:var(--suave);background:#fff}
.seg button.on{border-color:var(--azul-esc);background:var(--azul-esc);color:#fff}
.seg button:disabled{opacity:.35;cursor:not-allowed;background:#F4F6F9}

.locpick{margin-top:4px}
.locpick .lbl{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}
.locpick .lbl label{font-size:11.5px;font-weight:700;letter-spacing:.03em;text-transform:uppercase;color:var(--suave)}
.locpick .lbl .coord{font-size:11.5px;color:var(--azul-esc);font-weight:700;font-variant-numeric:tabular-nums}
.locpick .searchrow{position:relative;margin-bottom:8px}
.locpick .searchrow input{width:100%;padding:10px 13px 10px 36px;border:1.5px solid var(--linha);border-radius:9px;font-size:13.5px;background:#FBFDFF}
.locpick .searchrow input:focus{outline:none;border-color:var(--azul);box-shadow:0 0 0 3px rgba(0,175,233,.13)}
.locpick .searchrow svg{position:absolute;left:11px;top:11px;color:var(--suave)}
.locpick .searchrow .go{position:absolute;right:6px;top:6px;background:var(--azul-esc);color:#fff;padding:6px 11px;border-radius:7px;font-size:12px;font-weight:700}
.locpick .searchrow .go:hover{background:#063f78}
.locpick .pickmap{height:240px;border-radius:11px;overflow:hidden;border:1.5px solid var(--linha);position:relative;z-index:0}
.locpick .pmhint{font-size:11.5px;color:var(--suave);margin-top:7px;display:flex;align-items:center;gap:6px}
.locpick .geores{position:absolute;left:0;right:0;top:42px;background:#fff;border:1px solid var(--linha);border-radius:9px;
  box-shadow:var(--sombra);z-index:30;max-height:170px;overflow-y:auto;display:none}
.locpick .geores.show{display:block}
.locpick .geores div{padding:9px 13px;font-size:13px;cursor:pointer;border-bottom:1px solid #F2F5F9}
.locpick .geores div:hover{background:var(--papel)}
.locpick .geores div:last-child{border-bottom:none}
.locpick .clearloc{font-size:12px;color:var(--coral);font-weight:600;cursor:pointer}
.locpick .clearloc:hover{text-decoration:underline}
.modal .box.tall{display:flex;flex-direction:column}

/* ===== Login ===== */
.login-screen{position:fixed;inset:0;z-index:1500;display:flex;align-items:center;justify-content:center;padding:20px;overflow:hidden;
  background:radial-gradient(1200px 700px at 20% 10%,#0e3a5f 0%,rgba(14,58,95,0) 60%),radial-gradient(900px 600px at 85% 90%,#00456f 0%,rgba(0,69,111,0) 60%),linear-gradient(160deg,#071a2b 0%,#0b2034 45%,#003a6e 100%)}
#loginBg{position:absolute;inset:0;width:100%;height:100%;display:block}
.login-card{position:relative;background:rgba(255,255,255,.96);backdrop-filter:blur(6px);border-radius:22px;box-shadow:0 30px 90px rgba(0,0,0,.45),0 0 0 1px rgba(255,255,255,.08);padding:38px 40px 30px;width:430px;max-width:100%;text-align:center;animation:login-in .5s cubic-bezier(.2,.8,.2,1)}
@keyframes login-in{from{opacity:0;transform:translateY(14px) scale(.98)}to{opacity:1;transform:none}}
.login-brand{margin-bottom:18px;display:flex;justify-content:center}
.login-brand svg{height:34px;width:auto}
.login-card h1{font-size:21px;color:var(--tinta);font-weight:800;line-height:1.25;letter-spacing:-.01em}
.login-div{display:flex;align-items:center;justify-content:center;gap:10px;margin:10px 0 8px;color:var(--azul)}
.login-div span{width:34px;height:1.5px;background:linear-gradient(90deg,rgba(0,175,233,0),var(--azul))} .login-div span:last-child{transform:scaleX(-1)}
.login-sub{font-size:13.5px;color:var(--suave);margin:0 0 22px}
.login-card .field{margin-bottom:15px;text-align:left}
.login-card .field label{text-transform:none;letter-spacing:0;font-size:13px;color:var(--texto);font-weight:600}
.login-card .field input{background:#EEF4FF;border-color:#DCE7F7;padding:13px 14px;font-size:14.5px}
.login-card .field input:focus{background:#fff}
.login-pass{position:relative}
.login-pass input{padding-right:46px!important}
.login-eye{position:absolute;right:8px;top:50%;transform:translateY(-50%);width:32px;height:32px;border-radius:8px;display:grid;place-items:center;color:var(--suave);background:transparent;cursor:pointer}
.login-eye:hover{background:#E1EBF8;color:var(--azul-esc)}
.login-eye .eye-off{display:none} .login-eye.on .eye-on{display:none} .login-eye.on .eye-off{display:block}
.login-err{background:var(--vermelho-bg);color:var(--vermelho);font-size:13px;font-weight:600;padding:10px 13px;border-radius:9px;margin-bottom:16px;text-align:left}
.login-btn{width:100%;display:flex;align-items:center;justify-content:center;gap:9px;background:linear-gradient(90deg,var(--azul-esc) 0%,#0a6fb8 55%,var(--azul) 100%);color:#fff;padding:14px;border-radius:12px;font-size:15px;font-weight:700;transition:.18s;margin-top:6px;box-shadow:0 10px 24px rgba(0,77,146,.35)}
.login-btn:hover{filter:brightness(1.07);transform:translateY(-1px);box-shadow:0 14px 28px rgba(0,77,146,.4)} .login-btn:disabled{opacity:.65;cursor:default;transform:none}
.login-foot{font-size:12px;color:var(--suave);margin:20px 0 0}
@media (max-width:480px){ .login-card{padding:30px 22px 24px;border-radius:18px} }

/* ===== Barra de usuário ===== */
.topuser{display:flex;align-items:center;gap:10px;margin-right:4px}
.tu-info{display:flex;flex-direction:column;align-items:flex-end;line-height:1.25}
.tu-email{color:#fff;font-size:12.5px;font-weight:600;max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.turole{font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;padding:1px 7px;border-radius:99px}
.turole.adm{background:#FCE4A6;color:#8A5A00} .turole.usr{background:rgba(255,255,255,.18);color:#CFE6F6}
.tu-users,.tu-logout{width:34px;height:34px;border-radius:9px;color:#fff;background:rgba(255,255,255,.1);display:grid;place-items:center;border:1px solid rgba(255,255,255,.14)}
.tu-users:hover,.tu-logout:hover{background:rgba(255,255,255,.22)}
body.is-user .tu-users{display:none}

/* ===== Visibilidade por papel (admin-only) ===== */
body.is-user .admin-only{display:none!important}
/* módulo de vendas (viabilidade) escondido para quem não tem permissão */
body.sem-vendas .sb-item[data-view="viab"],body.sem-vendas #dvViab,body.sem-vendas .dv-card:has(#dvViab){display:none!important}

/* ===== Tela de usuários ===== */
#mUsers .box{width:820px}
.users-top{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}
.users-top .hint{margin:0}
.unovo{border:1.5px solid var(--azul-esc);border-radius:12px;padding:16px;margin-bottom:16px;background:#F5F9FD}
.unovo h4{margin:0 0 12px;font-size:14px;color:var(--azul-esc)}
.unovo .ungrid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.unovo .field{margin:0}
.unovo .unsenha{display:flex;gap:6px}
.unovo .unsenha input{flex:1;min-width:0}
.unovo .unsenha button{border:1.5px solid var(--linha);background:#fff;border-radius:8px;padding:0 10px;font-size:12px;font-weight:700;color:var(--tinta-2);white-space:nowrap}
.unovo .unopts{display:flex;flex-wrap:wrap;gap:16px;margin-top:12px;font-size:13px;color:var(--tinta-2)}
.unovo .unopts label{display:flex;align-items:center;gap:7px;cursor:pointer}
.unovo .unopts input[disabled]+span{opacity:.6}
.unovo .unacts{display:flex;gap:8px;justify-content:flex-end;margin-top:14px}
.unovo .unerr{display:none;color:var(--vermelho);font-size:12.5px;font-weight:600;margin-top:10px}
.urow{flex-wrap:wrap;row-gap:8px}
.urow .uinfo{flex:1;min-width:0;display:flex;flex-direction:column;overflow:hidden}
.urow .uacts{flex-basis:100%;display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.urow .uacts .umore{margin-left:auto}
.urow .usub{font-size:11px;color:var(--suave);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.urow .uoff{color:var(--vermelho)}
.urow.inativo{background:#FBF3F3;border-color:#F1D5D5}
.urow.inativo .uemail{text-decoration:line-through;color:var(--suave)}
.urow .uvendas{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:700;color:var(--tinta-2);padding:5px 9px;border:1.5px solid var(--linha);border-radius:7px;cursor:pointer;white-space:nowrap}
.urow .uvendas.fixo{opacity:.55;cursor:default}
.urow .umore{display:flex;gap:6px}
.urow .umore button{font-size:12px;font-weight:700;padding:6px 10px;border-radius:7px;border:1.5px solid var(--linha);color:var(--tinta-2);background:#fff;white-space:nowrap}
.urow .umore button.desativar:hover{border-color:var(--vermelho);color:var(--vermelho)}
.urow .umore button.ativar{border-color:var(--verde);color:var(--verde)}
.urow .umore button.excluir{color:var(--vermelho);border-color:#F1D5D5}
.urow .umore button.excluir:hover{background:var(--vermelho);border-color:var(--vermelho);color:#fff}
.urow .umore button[disabled],.urow .uset button[disabled]{opacity:.45;cursor:not-allowed}
@media (max-width:640px){ .unovo .ungrid{grid-template-columns:1fr} }

.toast{position:fixed;bottom:22px;left:50%;transform:translateX(-50%) translateY(20px);background:var(--tinta);color:#fff;
  padding:12px 20px;border-radius:11px;font-size:13.5px;font-weight:600;z-index:1600;opacity:0;pointer-events:none;transition:.28s;
  box-shadow:0 10px 30px rgba(11,32,52,.3);display:flex;align-items:center;gap:9px;max-width:90vw}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
.toast.ok{background:var(--verde)} .toast.err{background:var(--vermelho)}
/* barra "Desfazer" (aparece após ações reversíveis) */
.undo-bar{position:fixed;bottom:22px;left:50%;transform:translateX(-50%) translateY(20px);
  background:var(--azulEsc,#004D92);color:#fff;padding:11px 14px 11px 18px;border-radius:11px;
  font-size:13.5px;font-weight:600;z-index:1650;opacity:0;pointer-events:none;transition:.28s;
  box-shadow:0 10px 30px rgba(11,32,52,.34);display:flex;align-items:center;gap:14px;max-width:90vw}
.undo-bar.show{opacity:1;pointer-events:auto;transform:translateX(-50%) translateY(0)}
.undo-bar button{background:#fff;color:var(--azulEsc,#004D92);border:none;border-radius:8px;
  padding:6px 14px;font-weight:700;font-size:13px;cursor:pointer}
.undo-bar button:hover{filter:brightness(.96)}
.undo-bar button:disabled{opacity:.6;cursor:default}
/* resumo da importação de ONUs */
.imp-onus-resumo{margin-top:14px;font-size:13px;color:var(--tinta)}
.ior-linha{font-size:15px;margin-bottom:2px}
.ior-sub{color:var(--suave);margin-bottom:10px}
.ior-prob{color:#B3283A;font-weight:600;margin:10px 0 4px}
.ior-problista{background:#FDE7E9;border-radius:8px;padding:8px 11px;font-size:12px;color:#8A2833;max-height:140px;overflow-y:auto}
.ior-amostra{margin-top:12px;background:#F5F8FC;border-radius:8px;padding:9px 12px;font-size:12.5px}
.ior-amostra>div{margin-top:3px}
.ior-old{color:#B3283A;font-family:ui-monospace,monospace} .ior-new{color:#137A52;font-weight:700;font-family:ui-monospace,monospace}

.leaflet-popup-content-wrapper{border-radius:11px}
.pin-pop b{color:var(--tinta);font-size:14px}
.pin-pop .row{font-size:12.5px;color:var(--suave);margin-top:3px}
.pin-pop button{margin-top:8px;background:var(--azul-esc);color:#fff;padding:6px 12px;border-radius:7px;font-size:12px;font-weight:700;width:100%}

.skeleton{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px;grid-column:1/-1}
.sk{height:150px;background:linear-gradient(90deg,#eef3f8 25%,#f6f9fc 50%,#eef3f8 75%);background-size:200% 100%;animation:sh 1.3s infinite;border-radius:var(--r)}
@keyframes sh{0%{background-position:200% 0}100%{background-position:-200% 0}}

.impreview{border:1px solid var(--linha);border-radius:10px;overflow:hidden;margin-top:14px;max-height:300px;overflow-y:auto}
.impreview .ih{background:var(--papel);padding:9px 13px;font-size:12px;font-weight:800;color:var(--tinta);position:sticky;top:0;border-bottom:1px solid var(--linha)}
.impreview .ir{padding:8px 13px;font-size:12.5px;border-bottom:1px solid #F0F4F8;display:flex;justify-content:space-between;gap:10px}
.impreview .ir .l{color:var(--suave)}

/* ===== Fundo animado opcional do portal (botão na barra de cima) ===== */
#appBg{display:none;position:fixed;inset:0;width:100%;height:100%;z-index:0;pointer-events:none}
.tu-fundo{width:34px;height:34px;border-radius:9px;color:#fff;background:rgba(255,255,255,.1);display:grid;place-items:center;border:1px solid rgba(255,255,255,.14);cursor:pointer}
.tu-fundo:hover{background:rgba(255,255,255,.22)}
.tu-fundo.on{background:var(--azul);border-color:var(--azul);color:#fff;box-shadow:0 0 0 3px rgba(0,175,233,.25)}
body.fundo-rede{background:radial-gradient(1200px 700px at 20% 10%,#0e3a5f 0%,rgba(14,58,95,0) 60%),radial-gradient(900px 600px at 85% 90%,#00456f 0%,rgba(0,69,111,0) 60%),linear-gradient(160deg,#071a2b 0%,#0b2034 45%,#003a6e 100%);background-attachment:fixed}
body.fundo-rede #appBg{display:block;opacity:.45}   /* conexões mais discretas atrás das telas */
body.fundo-rede .shell{position:relative;z-index:1}
body.fundo-rede .topbar{position:relative;z-index:2;box-shadow:0 6px 24px rgba(0,0,0,.35)}
body.fundo-rede .mapcard,body.fundo-rede .previewcard,body.fundo-rede .logcard,body.fundo-rede .stat,body.fundo-rede .ponfiltro,body.fundo-rede .results-panel,body.fundo-rede .dash-actions>*,body.fundo-rede .searchhero,body.fundo-rede .chips .chip{box-shadow:0 10px 30px rgba(0,0,0,.28)}
body.fundo-rede .chips .chip{background:rgba(255,255,255,.92)}
body.fundo-rede .chip-clear{color:#fff}

.ucur.vnd{background:#E6F4FC;color:var(--azul-esc)}
.turole.vnd{background:#E6F4FC;color:var(--azul-esc)}
