:root{
  --paper:#eef2f7; --surface:#fff; --surface-2:#eef2f7; --navy:#1F2B4A; --ink:#1F2B4A;
  --muted:#69748b; --line:#e1e7f0; --accent:#0F9FBC; --accent-d:#0B7E96;
  --cyan:#00B3CC; --blue:#0B82E6; --blue-soft:#e2eefd;
  --ok:#1f9d63; --ok-soft:#dcf3e7; --err:#c0392b; --err-soft:#fbe4e0;
  --amber:#9a6b14; --amber-soft:#f6ecd2; --radius:14px;
  --shadow:0 1px 2px rgba(31,43,74,.05),0 10px 28px -14px rgba(31,43,74,.22);
}
*{box-sizing:border-box}
body{margin:0;background:var(--paper);color:var(--ink);font-family:"Roboto",system-ui,sans-serif;
  background-image:radial-gradient(1100px 520px at 88% -10%,#e3eef5 0%,transparent 60%);}
h1,h2,h3{font-weight:700;letter-spacing:-.01em;color:var(--navy);margin:.2rem 0}
.muted{color:var(--muted)}
.brand{font-weight:700;color:var(--navy);font-size:1.15rem}
.brand span{color:var(--cyan)} .brand em{color:var(--muted);font-style:normal;font-weight:500;font-size:.9rem}

/* login */
.login-body{display:grid;place-items:center;height:100vh}
.login-card{background:var(--surface);padding:2.6rem 2.4rem;border-radius:18px;width:360px;
  border:1px solid var(--line);box-shadow:var(--shadow);text-align:center}
.login-card h1{font-size:1.3rem;margin-top:.6rem}
.login-card input{display:block;width:100%;margin:.55rem 0;padding:.7rem .8rem;border:1px solid var(--line);
  border-radius:10px;background:var(--surface-2);font-size:.95rem}
.erro{color:var(--err);font-size:.85rem}

/* topbar */
.topbar{display:flex;align-items:center;justify-content:space-between;padding:.85rem 1.4rem;
  background:var(--surface);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:5}
.user{font-size:.85rem;color:var(--muted)} .user a{margin-left:1rem;color:var(--accent-d);text-decoration:none}
main{max-width:1280px;margin:1.2rem auto;padding:0 1.2rem}

/* cards / busca */
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:1.1rem}
.busca{display:flex;gap:.8rem;align-items:flex-end;margin-bottom:1.1rem}
.field{display:flex;flex-direction:column;font-size:.8rem;color:var(--muted);gap:.3rem}
.field.grow{flex:1}
.field input{padding:.7rem .8rem;border:1px solid var(--line);border-radius:10px;background:var(--surface-2);font-size:.95rem;color:var(--ink)}
.btn-primary{background:var(--accent);color:#fff;border:0;border-radius:10px;padding:.72rem 1.2rem;font-weight:600;cursor:pointer}
.btn-primary:hover{background:var(--accent-d)}
.btn-ghost{background:transparent;border:1px solid var(--line);border-radius:10px;padding:.72rem 1rem;cursor:pointer;color:var(--navy)}
.status{font-size:.82rem;color:var(--muted);margin:.2rem 0 0}

/* layout */
.grid{display:grid;grid-template-columns:minmax(360px,460px) 1fr;gap:1.1rem;align-items:start}
.membros{display:flex;flex-direction:column;gap:.6rem;max-height:74vh;overflow:auto;padding-right:.3rem}

/* membro card */
.membro{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:.75rem .9rem;cursor:pointer;transition:.12s}
.membro:hover{border-color:var(--accent);transform:translateY(-1px)}
.membro.sel{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}
.membro .top{display:flex;justify-content:space-between;align-items:baseline;gap:.5rem}
.membro .nome{font-weight:600;color:var(--navy)}
.membro .pp{font-size:.75rem;color:var(--muted)}
.chips{display:flex;flex-wrap:wrap;gap:.35rem;margin-top:.5rem}
.chip{font-size:.72rem;padding:.18rem .5rem;border-radius:20px;background:var(--surface-2);color:var(--navy);border:1px solid var(--line)}
.chip.b{background:var(--blue-soft);border-color:#cfe2fb;color:#0b62b6}
.chip.g{background:var(--ok-soft);border-color:#bfe6cf;color:#157346}
.chip.r{background:var(--err-soft);border-color:#f3c7bf;color:#a5301f}
.chip.a{background:var(--amber-soft);border-color:#e9d9ad;color:var(--amber)}
.bar{height:5px;border-radius:3px;background:var(--surface-2);margin-top:.55rem;overflow:hidden}
.bar i{display:block;height:100%;background:linear-gradient(90deg,var(--cyan),var(--accent))}

/* detalhe */
.empty{display:grid;place-items:center;min-height:200px}
.det-head{display:flex;justify-content:space-between;align-items:baseline;border-bottom:1px solid var(--line);padding-bottom:.6rem;margin-bottom:.6rem}
.pl{border:1px solid var(--line);border-radius:10px;padding:.6rem .75rem;margin-bottom:.55rem}
.pl .id{font-weight:600;color:var(--navy)}
.pl .em{font-size:.82rem;color:var(--muted);margin:.25rem 0}
.tags{display:flex;flex-wrap:wrap;gap:.35rem;margin-top:.35rem;align-items:center}
.t{font-size:.72rem;padding:.16rem .5rem;border-radius:6px;font-weight:600}
.t.aut{background:var(--blue-soft);color:#0b62b6} .t.rel{background:#ede0fb;color:#6b3fb0}
.t.sim{background:var(--ok-soft);color:#157346} .t.nao{background:var(--err-soft);color:#a5301f}
.t.obs,.t.abs{background:var(--surface-2);color:var(--muted)}
.t.contra{background:#fde3c2;color:#9a5b14;border:1px solid #f0c98a}
.t.emenda{background:#e6eef7;color:#3a5578;border:1px solid #cdddf0}   /* engajamento neutro, não alerta */
.t.segue{background:var(--ok-soft);color:#157346}
.spin{opacity:.6}

/* abas + posição + grafo */
.tabs{display:flex;gap:.3rem;margin-left:.4rem}
.tab{background:transparent;border:1px solid var(--line);border-radius:8px;padding:.5rem .9rem;cursor:pointer;color:var(--muted);font-weight:600}
.tab.active{background:var(--navy);color:#fff;border-color:var(--navy)}
.view{display:none} .view.active{display:grid}
#view-grafo.view.active{display:block}
.pos{font-size:.72rem;font-weight:700;color:#fff;padding:.16rem .55rem;border-radius:20px}
.grafo-legenda{display:flex;gap:1rem;align-items:center;flex-wrap:wrap;margin-bottom:.8rem;padding:.7rem 1rem}
.lg{display:inline-flex;align-items:center;gap:.4rem;font-size:.8rem;color:var(--navy)}
.lg i{width:12px;height:12px;border-radius:50%;display:inline-block}
.grafo-wrap{display:grid;grid-template-columns:1fr minmax(300px,380px);gap:1.1rem;align-items:start}
#grafo{height:72vh;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}
#grafo-detalhe{max-height:72vh;overflow:auto}
.nivel-toggle{display:inline-flex;gap:.2rem;margin-right:.6rem}
.nivel{background:var(--surface-2);border:1px solid var(--line);border-radius:8px;padding:.35rem .7rem;cursor:pointer;font-size:.8rem;font-weight:600;color:var(--muted)}
.nivel.active{background:var(--accent);color:#fff;border-color:var(--accent)}
.grafo-filtros{display:flex;gap:.8rem;align-items:center;flex-wrap:wrap;margin-bottom:.8rem;padding:.6rem 1rem;font-size:.82rem}
.grafo-filtros label{display:inline-flex;align-items:center;gap:.3rem;color:var(--navy);cursor:pointer}
.grafo-filtros .fl-tit{font-weight:700;color:var(--navy)}
.grafo-filtros .fl-sep{width:1px;height:18px;background:var(--line)}
.grafo-filtros select{padding:.3rem .5rem;border:1px solid var(--line);border-radius:8px;background:var(--surface-2)}

/* ===== Atualização 1: triagem / workspace / mapa ===== */
.ctx{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1.1rem;flex-wrap:wrap}
.ctx-ref{display:flex;flex-direction:column;gap:.15rem}
.ctx-ref strong{color:var(--navy);font-size:1.05rem}
.ref-em{font-size:.8rem;max-width:60ch}
.tab:disabled{opacity:.45;cursor:not-allowed}

/* triagem */
.cands{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:.8rem}
.cand{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:.85rem;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:.5rem}
.cand-top{display:flex;align-items:baseline;gap:.5rem;flex-wrap:wrap}
.cand-em{font-size:.82rem;color:var(--muted);flex:1}
.cand .sim{font-size:.75rem}
.badge{font-size:.68rem;font-weight:700;background:var(--accent);color:#fff;padding:.12rem .5rem;border-radius:20px}
.btn-primary.mini,.btn-ghost.mini{padding:.4rem .7rem;font-size:.8rem;align-self:flex-start}

/* workspace controls */
.ws-controls{display:flex;align-items:center;gap:1rem;margin-bottom:1.1rem;flex-wrap:wrap}
.ws-controls .field{flex-direction:row;align-items:center;gap:.6rem}
.ws-controls input[type=range]{width:200px}
.ws-controls #btn-gerar{margin-left:auto}

/* lista de PLs c/ checkbox */
.pls-box{margin-bottom:.9rem;padding:.8rem 1rem}
.pls-box summary{cursor:pointer;font-weight:600;color:var(--navy)}
.pls-acoes{font-size:.78rem;margin:.4rem 0}
.pls-acoes a{color:var(--accent-d);cursor:pointer}
.pls-list{display:flex;flex-direction:column;gap:.5rem;max-height:42vh;overflow:auto;margin-top:.5rem}
.pl-card{display:flex;gap:.6rem;align-items:flex-start;border:1px solid var(--line);border-radius:10px;padding:.6rem .7rem;background:var(--surface)}
.pl-card .pl-ck{margin-top:.25rem}
.pl-card-body{flex:1;cursor:pointer}
.pl-card-top{display:flex;align-items:baseline;gap:.5rem;flex-wrap:wrap}
.pl-card-top strong{color:var(--navy)}
.pl-card .op{font-size:.82rem;color:var(--ink);margin:.2rem 0}
.pl-card .rsm{font-size:.78rem;line-height:1.35}
.pl-card .lnk-it{font-size:.74rem;color:var(--accent-d)}
.pl-card-body:hover .lnk-it{text-decoration:underline}

/* camadas no detalhe */
.camada{margin:.4rem 0}
.cam-tit{display:inline-block;font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--accent-d);margin-bottom:.2rem}
.desc,.interp{font-size:.85rem;line-height:1.4;color:var(--ink)}
.op-an{font-size:.84rem;font-weight:600;color:var(--navy);margin-bottom:.2rem}
.camada .rel{margin:.15rem 0 0;padding-left:1.1rem;font-size:.82rem;color:var(--ink)}
.camada .rel li{margin:.1rem 0}
.prag-narr{font-size:.85rem;line-height:1.45;color:var(--ink);margin-top:.35rem}
.nota-box{margin-top:1rem;border-top:1px dashed var(--line);padding-top:.7rem}
.nota{width:100%;min-height:60px;border:1px solid var(--line);border-radius:8px;padding:.5rem;background:var(--surface-2);font-family:inherit;font-size:.84rem;resize:vertical}

/* etiquetas no card + camadas + link p/ inteiro teor */
.etq{display:flex;flex-wrap:wrap;gap:.35rem;margin:.35rem 0 .5rem}
.id .lnk{color:var(--navy);cursor:pointer;border-bottom:1px dotted var(--accent)}
.id .lnk:hover{color:var(--accent-d)}
.desc{color:var(--ink)}

/* barra de progresso (cálculo da pragmática) */
.prog{display:flex;align-items:center;gap:.7rem;margin:-.4rem 0 1rem;font-size:.82rem;color:var(--muted)}
.prog-bar{flex:0 0 220px;height:7px;border-radius:4px;background:var(--surface-2);overflow:hidden}
.prog-bar i{display:block;height:100%;width:40%;background:linear-gradient(90deg,var(--cyan),var(--accent));border-radius:4px}
.prog.run .prog-bar i{animation:slide 1.1s ease-in-out infinite}
@keyframes slide{0%{margin-left:-40%}100%{margin-left:100%}}

/* modal inteiro teor */
.modal{position:fixed;inset:0;background:rgba(31,43,74,.45);display:flex;place-items:center;justify-content:center;z-index:20;padding:2rem}
.modal-box{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);max-width:820px;width:100%;max-height:84vh;display:flex;flex-direction:column;padding:1.2rem 1.4rem}
.modal-head{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);padding-bottom:.6rem}
.modal-body{white-space:pre-wrap;overflow:auto;font-family:ui-monospace,monospace;font-size:.8rem;line-height:1.45;color:var(--ink);margin-top:.7rem;background:var(--surface-2);padding:.8rem;border-radius:8px}

/* mapa 2D */
.mapa-head{display:flex;gap:1rem;align-items:center;flex-wrap:wrap;margin-bottom:.9rem}
.mapa-wrap{padding:.6rem}
#mapa svg{display:block}
#mapa .ax{font-size:12px;fill:var(--muted);font-weight:600}
#mapa .lbl{font-size:11px;fill:var(--navy)}
#mapa .lbl .muted{fill:var(--muted)}

/* --- Atualização 3: aderência (gradiente), emendas, export, fora-do-universo --- */
.fl-sep{flex:1}
.mapa-leg{margin:.2rem 0 .8rem;font-size:.8rem;line-height:1.4}
.lg.gap{margin-left:.6rem}
.lg-grad{display:inline-flex;align-items:center;gap:.45rem;font-size:.8rem;color:var(--navy)}
.lg-grad em{font-style:normal;color:var(--muted);font-size:.74rem}
.grad-bar{display:inline-block;width:120px;height:12px;border-radius:7px;
  background:linear-gradient(90deg,rgb(201,42,42),rgb(124,58,160) 50%,rgb(36,90,200));
  border:1px solid var(--line)}
.badge.warn{background:#fde3c2;color:#9a5b14;border:1px solid #f0c98a}
.emendas-box{margin:.35rem 0 .1rem;font-size:.78rem;display:flex;flex-wrap:wrap;gap:.4rem;align-items:center}
.lnk-em{color:var(--accent-d);cursor:pointer;text-decoration:underline dotted}
.lnk-em:hover{text-decoration:underline}
