/* Portado do protótipo prototipo-qualyvortice-v14.html — Fase 1 (MVP) */
:root{
  --bg:#F8F4F5; --side:#0B0B0D; --card:#FFFFFF;
  --violet:#F2295B; --violet-deep:#C4143F;
  /* Tons derivados via `color-mix()` a partir de `--violet`/`--side` (que
     vêm de `BRAND_PRIMARY_COLOR`/`BRAND_SECONDARY_COLOR`, injetadas por
     `templates/base.html`) em vez de hex fixo — assim, trocando a marca via
     variável de ambiente, os badges/fundos suaves acompanham a cor nova
     sozinhos, sem precisar de uma variável de ambiente pra cada tom. */
  --side-2:color-mix(in srgb, var(--side) 92%, white);
  --violet-ink:color-mix(in srgb, var(--violet) 45%, black);
  --violet-soft:color-mix(in srgb, var(--violet) 12%, white);
  --violet-tab:color-mix(in srgb, var(--violet) 35%, white);
  --violet-line:color-mix(in srgb, var(--violet) 20%, white);
  --ink:#251A1E; --text:#4A3A40; --mut:#9A8790; --line:#F1E4E8;
  --green:#149A5B; --green-soft:#E2F6EC;
  --amber:#D98A0F; --amber-soft:#FCF0DA;
  --red:#C21807;   --red-soft:#FBE3E0;
  --blue:#3B6FD4;  --blue-soft:#E3ECFB;
  --pink:#E8590C;  --pink-soft:#FBE8DC;
  --r:14px; --shadow:0 1px 2px rgba(37,26,30,.05),0 10px 30px rgba(220,40,90,.08);
  --disp:"Plus Jakarta Sans",system-ui,sans-serif;
  --body:"Inter",system-ui,sans-serif;
}
*{box-sizing:border-box;margin:0;padding:0}
html{font-size:15px}
body{font-family:var(--body);background:var(--bg);color:var(--text)}
h1,h2,h3,h4{font-family:var(--disp);color:var(--ink);letter-spacing:-.015em}
a{color:inherit}
button{font-family:inherit;cursor:pointer}
input,select,textarea{font-family:inherit;font-size:.9rem;color:var(--ink)}
:focus-visible{outline:2px solid var(--violet);outline-offset:2px}

.btn{display:inline-flex;align-items:center;gap:8px;border:none;border-radius:12px;
  padding:9px 16px;font-size:.87rem;font-weight:600;transition:.15s;text-decoration:none}
.btn-primary{background:var(--violet);color:#fff;box-shadow:0 6px 16px color-mix(in srgb, var(--violet) 35%, transparent)}
.btn-primary:hover{background:var(--violet-deep)}
.btn-ghost{background:#fff;color:var(--violet-deep);border:1px solid var(--violet-line)}
.btn-ghost:hover{background:var(--violet-soft)}
.btn-soft{background:var(--violet-soft);color:var(--violet-deep);border:none}
.btn-soft:hover{background:var(--violet-tab)}
.btn-sm{padding:6px 12px;font-size:.78rem}
.field{margin-bottom:14px}
.field label{display:block;font-size:.78rem;font-weight:600;color:var(--ink);margin-bottom:5px}
.field input,.field select,.field textarea{width:100%;padding:9px 12px;border:1px solid var(--line);
  border-radius:10px;background:#fff}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--violet);outline:none;
  box-shadow:0 0 0 3px var(--violet-soft)}
.field .hint{font-size:.73rem;color:var(--mut);margin-top:4px}
.field .erro{font-size:.73rem;color:var(--red);margin-top:4px;font-weight:600}

/* ============ DROPDOWN MULTI-SELECT (respostas de múltipla escolha) ============ */
.dropdown-multiselect{position:relative}
.dropdown-multiselect-trigger{width:100%;display:flex;align-items:center;justify-content:space-between;
  gap:8px;padding:9px 12px;border:1px solid var(--line);border-radius:10px;background:#fff;
  font-size:.87rem;color:var(--ink);text-align:left;cursor:pointer}
.dropdown-multiselect-trigger:hover{border-color:var(--violet-line)}
.dropdown-multiselect.aberto .dropdown-multiselect-trigger{border-color:var(--violet);
  box-shadow:0 0 0 3px var(--violet-soft)}
.dropdown-multiselect-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--mut)}
.dropdown-multiselect.tem-selecionados .dropdown-multiselect-label{color:var(--ink);font-weight:600}
.dropdown-multiselect-arrow{flex:none;color:var(--mut);font-size:.72rem;transition:transform .15s}
.dropdown-multiselect.aberto .dropdown-multiselect-arrow{transform:rotate(180deg)}
.dropdown-multiselect-panel{display:none;position:absolute;top:calc(100% + 6px);left:0;right:0;
  z-index:40;background:#fff;border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);
  padding:10px}
.dropdown-multiselect.aberto .dropdown-multiselect-panel{display:block}
.dropdown-multiselect-busca{width:100%;padding:8px 10px;border:1px solid var(--line);border-radius:8px;
  font-size:.83rem;margin-bottom:8px;background:#fff}
.dropdown-multiselect-busca:focus{border-color:var(--violet);outline:none;box-shadow:0 0 0 3px var(--violet-soft)}
.dropdown-multiselect-opcoes{max-height:230px;overflow-y:auto;display:flex;flex-direction:column;gap:1px}
.dropdown-multiselect-opcao{display:flex;align-items:center;gap:9px;padding:7px 8px;border-radius:8px;
  font-size:.83rem;color:var(--ink);cursor:pointer}
.dropdown-multiselect-opcao:hover{background:var(--violet-soft)}
.dropdown-multiselect-opcao input{width:auto;accent-color:var(--violet)}
.dropdown-multiselect-opcao.oculta{display:none}
.dropdown-multiselect-vazio{font-size:.78rem;color:var(--mut);text-align:center;padding:10px 0;margin:0}
.check{display:flex;gap:10px;align-items:flex-start;font-size:.83rem;line-height:1.5;margin-bottom:14px}
.check input{margin-top:3px;width:auto}
.badge{display:inline-flex;align-items:center;gap:5px;font-size:.71rem;font-weight:600;
  padding:3.5px 10px;border-radius:99px;white-space:nowrap}
.b-violet{background:var(--violet-soft);color:var(--violet-deep)}
.b-green{background:var(--green-soft);color:var(--green)}
.b-amber{background:var(--amber-soft);color:#9A6408}
.b-red{background:var(--red-soft);color:#B03225}
.b-blue{background:var(--blue-soft);color:var(--blue)}
.b-pink{background:var(--pink-soft);color:var(--pink)}
.b-gray{background:#EDEBF4;color:#6C6584}
.av{width:32px;height:32px;border-radius:50%;display:inline-grid;place-items:center;
  font-size:.7rem;font-weight:700;color:#fff;border:2px solid #fff;flex:none;
  background:linear-gradient(135deg,var(--violet),var(--accent))}
.av.g0{background:linear-gradient(135deg,var(--violet),var(--accent))}
.av.g1{background:linear-gradient(135deg,#FF6B2C,#FFB36B)}
.av.g2{background:linear-gradient(135deg,#3B6FD4,#7FB0F5)}
.av.g3{background:linear-gradient(135deg,#149A5B,#5ED49E)}
.av.g4{background:linear-gradient(135deg,#D98A0F,#F3BF63)}

#viewLogin{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;
  background:linear-gradient(90deg,var(--side) 50%,var(--violet) 100%)}
.login-card{width:100%;max-width:410px;background:#fff;border-radius:22px;padding:36px 32px 26px;
  box-shadow:0 30px 80px rgba(0,0,0,.45)}
.login-card.wide{max-width:600px}
.brand{display:flex;align-items:center;justify-content:center}
.brand-logo{height:56px;width:auto;display:block}
.login-sub{color:var(--mut);font-size:.86rem;margin:6px 0 24px}
.login-lgpd{margin-top:20px;padding-top:16px;border-top:1px solid var(--line);
  font-size:.72rem;color:var(--mut)}
.btn-block{width:100%;justify-content:center}
.form-erro{background:var(--red-soft);color:#B03225;border-radius:10px;padding:10px 14px;margin-bottom:14px;font-size:.83rem;font-weight:600}

#app{display:grid;grid-template-columns:250px 1fr;min-height:100vh}
.sidebar{background:var(--side);color:#C9BEC2;padding:22px 16px 16px;position:sticky;top:0;height:100vh;
  display:flex;flex-direction:column;overflow:auto}
.sidebar .brand{margin-bottom:20px;padding:0 6px}
.nav-label{font-size:.66rem;text-transform:uppercase;letter-spacing:.1em;color:#8A7078;padding:0 10px;margin:14px 0 7px}
.nav-item{display:flex;align-items:center;gap:11px;width:100%;text-align:left;background:none;border:none;
  color:#C9BEC2;padding:9.5px 12px;border-radius:11px;font-size:.88rem;margin-bottom:2px;font-weight:500;text-decoration:none}
.nav-item:hover{background:var(--side-2);color:#fff}
.nav-item.active{background:linear-gradient(90deg,var(--violet),var(--accent));color:#fff;font-weight:600;
  box-shadow:0 8px 20px color-mix(in srgb, var(--violet) 35%, transparent)}
.nav-group{margin-bottom:2px}
.nav-group > summary{display:flex;align-items:center;gap:11px;width:100%;list-style:none;cursor:pointer;
  color:#C9BEC2;padding:9.5px 12px;border-radius:11px;font-size:.88rem;font-weight:500}
.nav-group > summary::-webkit-details-marker{display:none}
.nav-group > summary:hover{background:var(--side-2);color:#fff}
.nav-group .chev{margin-left:auto;transition:transform .15s;opacity:.7}
.nav-group[open] > summary .chev{transform:rotate(180deg)}
.nav-sub{margin:2px 0 6px 21px;padding-left:9px;border-left:1px solid rgba(255,255,255,.14)}
.nav-sub .nav-item{font-size:.84rem;padding:8px 11px}
.alerts{margin-top:auto}
.alerts .nav-label{display:flex;align-items:center;gap:8px}
.alerts .nav-label b{background:var(--violet);color:#fff;border-radius:99px;font-size:.62rem;padding:1px 7px}
.alert-card{background:var(--side-2);border-radius:13px;padding:11px 30px 11px 13px;margin-bottom:8px;position:relative}
.alert-card h4{color:#fff;font-size:.8rem;font-weight:600;margin-bottom:3px}
.alert-card p{font-size:.72rem;color:#9C8C93;line-height:1.4}
.alert-dismiss{display:contents}
.alert-x{position:absolute;top:6px;right:6px;background:none;border:none;color:#9C8C93;
  font-size:1rem;line-height:1;cursor:pointer;padding:3px 7px;border-radius:6px}
.alert-x:hover{background:rgba(255,255,255,.1);color:#fff}
.side-foot{border-top:1px solid rgba(255,255,255,.09);margin-top:auto;padding-top:12px;display:flex;align-items:center;gap:10px}
.side-foot-link{display:flex;align-items:center;gap:10px;flex:1;min-width:0;text-decoration:none;color:inherit;border-radius:10px}
.side-foot-link:hover{background:var(--side-2)}
.side-foot .u-name{color:#fff;font-size:.84rem;font-weight:600;line-height:1.2}
.side-foot .u-role{font-size:.7rem;color:#9C8C93}
.btn-logout{margin-left:auto;background:none;border:1px solid rgba(255,255,255,.16);color:#C9BEC2;
  border-radius:9px;padding:6px 10px;font-size:.75rem}
.btn-logout:hover{background:var(--side-2);color:#fff}

.main{display:flex;flex-direction:column;min-width:0}
.topbar{background:#fff;border-bottom:1px solid var(--line);padding:14px 30px;display:flex;
  align-items:center;gap:18px;position:sticky;top:0;z-index:20}
.crumbs{font-size:.83rem;color:var(--mut)}
.crumbs b{color:var(--ink);font-weight:600}
.top-right{margin-left:auto;display:flex;align-items:center;gap:12px}
.content{padding:26px 30px 60px;width:100%}
.messages{list-style:none;margin-bottom:16px;display:flex;flex-direction:column;gap:8px}
.messages li{padding:10px 16px;border-radius:10px;font-size:.85rem;font-weight:600}
.messages .success{background:var(--green-soft);color:var(--green)}
.messages .error{background:var(--red-soft);color:#B03225}
.messages .info{background:var(--blue-soft);color:var(--blue)}
.messages .warning{background:var(--amber-soft);color:#9A6408}

.status-select{border:none;border-radius:99px;padding:4px 22px 4px 10px;font-size:.71rem;
  font-weight:600;cursor:pointer;appearance:none;-webkit-appearance:none;-moz-appearance:none;
  background-repeat:no-repeat;background-position:right 8px center;background-size:8px;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3E%3Cpath d='M0 2l4 4 4-4' fill='none' stroke='%234A3A40' stroke-width='1.4'/%3E%3C/svg%3E")}
.status-select:focus-visible{outline:2px solid var(--violet);outline-offset:1px}

.paginacao{display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:14px 18px;border-top:1px solid var(--line);flex-wrap:wrap}
.pg-nav{display:flex;align-items:center;gap:6px}
.pg-info{font-size:.8rem;color:var(--mut);padding:0 6px}
.pg-total{font-size:.78rem;color:var(--mut)}

#flash-erros{position:fixed;top:20px;right:20px;z-index:200;display:flex;flex-direction:column;
  gap:10px;max-width:380px}
.flash-card{background:#fff;border-left:4px solid var(--red);border-radius:10px;
  box-shadow:0 10px 30px rgba(220,40,90,.18);padding:14px 16px;font-size:.83rem;color:var(--ink);
  animation:flash-in .2s ease-out}
.flash-card h4{font-size:.85rem;font-weight:700;color:#B03225;margin-bottom:6px;
  display:flex;align-items:center;justify-content:space-between;gap:10px}
.flash-card ul{margin:0;padding-left:18px}
.flash-card li{margin-bottom:3px;line-height:1.4}
.flash-card li b{color:var(--ink)}
.flash-close{background:none;border:none;color:var(--mut);font-size:1rem;line-height:1;
  cursor:pointer;padding:0 2px}
.flash-close:hover{color:var(--ink)}
@keyframes flash-in{from{opacity:0;transform:translateX(14px)}to{opacity:1;transform:translateX(0)}}

.balao-copiado{position:absolute;bottom:calc(100% + 8px);left:50%;transform:translateX(-50%) translateY(4px);
  background:var(--ink);color:#fff;font-size:.72rem;font-weight:600;padding:5px 10px;border-radius:8px;
  white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .15s,transform .15s;z-index:60}
.balao-copiado::after{content:"";position:absolute;top:100%;left:50%;transform:translateX(-50%);
  border:5px solid transparent;border-top-color:var(--ink)}
.balao-copiado.visivel{opacity:1;transform:translateX(-50%) translateY(0)}
.view-title{margin-bottom:18px;display:flex;justify-content:space-between;align-items:flex-end;flex-wrap:wrap;gap:12px}
.view-title h2{font-size:1.45rem;font-weight:800}
.view-title .sub{color:var(--mut);font-size:.85rem;margin-top:3px}

.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(215px,1fr));gap:14px;margin-bottom:26px}
.kpi{background:var(--card);border-radius:var(--r);padding:16px 18px 12px;box-shadow:var(--shadow)}
.kpi-top{display:flex;align-items:center;gap:9px;font-size:.82rem;font-weight:600;color:var(--ink)}
.chip{width:30px;height:30px;border-radius:10px;display:grid;place-items:center;flex:none}
.kpi .v{font-family:var(--disp);font-weight:800;font-size:1.9rem;color:var(--ink);margin:8px 0 2px}
.kpi .foot{border-top:1px solid var(--line);padding-top:8px;font-size:.74rem;color:var(--mut)}

.panel{background:var(--card);border-radius:var(--r);box-shadow:var(--shadow);overflow:hidden}
.panel + .panel{margin-top:18px}
.panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 18px;flex-wrap:wrap}
.search input{padding:8px 12px;border:1px solid var(--line);border-radius:11px;width:220px;background:#fff}
.filtros{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.filtros input,.filtros select{padding:8px 12px;border:1px solid var(--line);border-radius:11px;background:#fff}
.filtros input{width:200px}
table{width:100%;border-collapse:collapse;font-size:.86rem}
th{font-size:.68rem;text-transform:uppercase;letter-spacing:.07em;color:var(--mut);text-align:left;
  padding:10px 16px;background:#F6F4FC;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
td{padding:12px 16px;border-bottom:1px solid var(--line);vertical-align:middle}
tr:last-child td{border-bottom:none}
tbody tr:hover{background:#FAF9FE}
.cell-main{font-weight:600;color:var(--ink)}
.cell-sub{font-size:.74rem;color:var(--mut);margin-top:1px}
.mono{font-family:ui-monospace,monospace;font-size:.8rem;overflow-wrap:anywhere}
.empty{padding:30px;text-align:center;color:var(--mut);font-size:.85rem}
.tbl-wrap{overflow-x:auto}
/* Trava só as colunas de conteúdo curto (badge, botões de ação) pra nunca
   quebrar linha — são elas que ficavam feias/ilegíveis espremidas. A coluna
   de texto longo (ex.: "Nome" com a pergunta inteira do formulário)
   continua quebrando em várias linhas normalmente, leitura razoável — bem
   diferente de forçar a tabela inteira numa largura mínima
   (`min-width:max-content` numa rodada anterior): isso fazia a rolagem
   horizontal do `.tbl-wrap` só ficar alcançável depois de rolar a página
   inteira até a última linha da tabela, praticamente inacessível em tabela
   longa. `.mono` (chave/código, ex.: "como_voce_costuma_descobrir_..." — um
   identificador comprido sem espaço nenhum onde quebrar) usa
   `overflow-wrap:anywhere` em vez de nowrap: quebra em qualquer caractere
   quando precisa, o que é aceitável pra um código (diferente de texto
   normal) e evita que uma chave comprida sozinha force a tabela inteira a
   ficar larga. Sem essas travas gerais, a tabela cabe na maioria das
   larguras sem precisar de rolagem nenhuma — e o `overflow-x:auto` acima
   continua como rede de segurança pros casos realmente extremos. */
.badge,.td-acoes{white-space:nowrap}
.td-acoes{display:flex;gap:6px;justify-content:flex-end}

/* Linha de correção/edição do wizard (revisão de importação) — fechada por
   padrão, abre com a classe `.wiz-aberta` (alternada pelo botão "Editar" em
   cada linha, sem depender de JS externo além de um toggle simples). Linha
   com erro já nasce com a classe aplicada pelo servidor. */
.wiz-linha-correcao{display:none}
.wiz-linha-correcao.wiz-aberta{display:table-row}

/* ============ TABELAS RESPONSIVAS (viram cards no mobile) ============
   Cada <td> ganha `data-label="Coluna"` (menos a de ações) — o rótulo some
   no desktop e reaparece via `::before` só abaixo de 700px, quando a linha
   inteira vira um cartão com pares rótulo→valor em vez de espremer 5+
   colunas numa tela estreita. */
@media (max-width:700px){
  .tbl-wrap{overflow-x:visible}
  .tbl-wrap table,.tbl-wrap tbody{display:block}
  .tbl-wrap thead{display:none}
  .tbl-wrap tr{display:block;border:1px solid var(--line);border-radius:var(--r);
    padding:4px 14px;margin-bottom:10px;background:#fff}
  .tbl-wrap tbody tr:hover{background:#fff}
  .tbl-wrap td{display:flex;justify-content:space-between;align-items:center;gap:12px;
    padding:9px 0;border-bottom:1px solid var(--line);text-align:right}
  .tbl-wrap tr td:last-child{border-bottom:none}
  .tbl-wrap td::before{content:attr(data-label);font-size:.68rem;text-transform:uppercase;
    letter-spacing:.06em;color:var(--mut);font-weight:700;text-align:left;flex:none}
  .tbl-wrap td:not([data-label]){justify-content:flex-start;flex-wrap:wrap;gap:8px}
  /* Linha de correção do wizard (um <td colspan> só, com um form-row dentro)
     não é par rótulo→valor — deixa em bloco normal em vez de espremer no flex. */
  .tbl-wrap tr.wiz-linha-correcao{border:none;padding:0;margin-bottom:0;background:none}
  .tbl-wrap tr.wiz-linha-correcao td{display:block;border-bottom:none;padding:0 0 10px}
  .wiz-linha-correcao.wiz-aberta{display:block}
}

.folders{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,260px));gap:16px;margin-bottom:26px}
.folder{position:relative;background:var(--card);border-radius:16px;padding:16px;box-shadow:var(--shadow);
  display:flex;flex-direction:column;gap:8px;margin-top:12px;text-decoration:none;color:inherit;
  transition:transform .15s}
.folder:hover{transform:translateY(-2px)}
.folder > *{position:relative;z-index:1}
.folder .f-tab{position:absolute;top:-9px;left:12px;height:26px;padding:0 14px;
  border-radius:10px 14px 0 0;transform:skewX(-14deg);z-index:0;opacity:.92;
  display:flex;align-items:center;background:var(--violet-tab)}
.folder .f-tab span{display:block;transform:skewX(14deg);font-size:.68rem;font-weight:700;
  letter-spacing:.02em;white-space:nowrap;color:var(--violet-ink)}
.folder .f-tab.st-em_campo{background:var(--amber-soft)}
.folder .f-tab.st-em_campo span{color:#9A6408}
.folder .f-tab.st-concluido{background:var(--green-soft)}
.folder .f-tab.st-concluido span{color:var(--green)}
.folder .f-icon{width:32px;height:32px;border-radius:10px;background:var(--violet-soft);color:var(--violet-deep);
  display:grid;place-items:center;flex:none}
.folder h4{font-size:.95rem;font-weight:700}
.folder .f-sub{font-size:.75rem;color:var(--mut)}
.folder .f-perfil{font-size:.76rem;font-weight:700;color:var(--violet-ink);background:var(--violet-soft);
  border-radius:10px;padding:8px 10px;line-height:1.4}
.folder .f-row{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:2px}
.mini-bar{height:5px;background:var(--violet-soft);border-radius:99px;overflow:hidden;margin-top:6px;flex:1}
.mini-bar i{display:block;height:100%;background:linear-gradient(90deg,var(--violet),var(--accent))}

fieldset{border:1px solid var(--line);border-radius:14px;padding:16px;margin-bottom:16px}
legend{font-family:var(--disp);font-weight:700;font-size:.9rem;color:var(--ink);padding:0 8px}
.form-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(165px,1fr));gap:12px}
.form-row .field{margin-bottom:0}
.cadastro-secao{padding-top:20px;margin-top:20px;border-top:1px solid var(--line)}
.cadastro-secao:first-child{padding-top:0;margin-top:0;border-top:none}
.cadastro-secao-titulo{font-family:var(--disp);font-weight:700;font-size:.92rem;color:var(--violet-deep);
  margin-bottom:12px}
.pii{display:inline-flex;align-items:center;gap:5px;font-family:ui-monospace,monospace;font-size:.79rem}
.pii .eye{background:none;border:none;color:var(--mut);padding:2px;border-radius:6px;line-height:1;cursor:pointer;font-size:.82rem}
.pii .eye:hover{color:var(--violet);background:var(--violet-soft)}
.pii .eye:disabled{opacity:.5;cursor:wait}
.pii .val[data-revelado="1"]{color:var(--violet-deep);font-weight:600}
.lock-note{display:flex;gap:9px;background:#fff;border:1px dashed var(--violet-line);border-radius:12px;
  padding:11px 14px;font-size:.75rem;color:var(--mut);margin-top:12px}

.board{display:grid;grid-template-columns:repeat(4,minmax(212px,1fr));gap:14px;overflow-x:auto;
  align-items:start;padding-bottom:8px}
.col{background:#EFEDF7;border-radius:16px;padding:12px;min-height:120px}
.col-head{display:flex;align-items:center;gap:8px;padding:2px 4px 10px}
.col-head h4{font-size:.8rem;font-weight:700}
.col-head .count{margin-left:auto;background:#fff;border-radius:99px;font-size:.7rem;font-weight:700;
  color:var(--mut);padding:2px 9px}
.pcard{background:#fff;border-radius:13px;padding:12px 13px;margin-bottom:10px;box-shadow:0 2px 8px rgba(36,30,51,.07)}
.pcard .nm{font-size:.83rem;font-weight:600;color:var(--ink)}
.pcard .cod{font-family:ui-monospace,monospace;font-size:.72rem;color:var(--mut)}
.pcard .proj-tag{font-size:.72rem;color:var(--violet-deep);background:var(--violet-soft);border-radius:8px;
  padding:3px 8px;display:inline-block;margin-top:6px}
.pcard-foot{display:flex;align-items:center;justify-content:space-between;margin-top:9px}
.adv{border:none;background:var(--violet-soft);color:var(--violet-deep);border-radius:8px;
  padding:5px 9px;font-size:.72rem;font-weight:700}
.adv:hover{background:var(--violet-tab)}

.rating-group{display:flex;gap:6px}
.rating-group label{flex:1;text-align:center;border:1px solid var(--line);border-radius:9px;
  padding:7px 0;font-size:.84rem;font-weight:700;color:var(--mut);cursor:pointer;user-select:none}
.rating-group input{position:absolute;opacity:0;pointer-events:none}
.rating-group input:checked + label,.rating-group label:has(input:checked){background:var(--violet);border-color:var(--violet);color:#fff}

/* Estrelas de avaliação (1 a 5) — os rádios nascem em ordem 5→1 no HTML
   (ver participacoes/forms.py::NOTAS) e a linha vira 1→5 na tela por causa
   do row-reverse; o seletor de irmãos gerais (~) pinta a estrela marcada
   e todas as que vieram antes dela no HTML — ou seja, todas à esquerda
   dela na tela. Só CSS, sem precisar de JS pra "pintar" nada. */
.star-rating{display:inline-flex;flex-direction:row-reverse;gap:3px}
.star-rating input{position:absolute;opacity:0;pointer-events:none}
.star-rating label{font-size:1.6rem;line-height:1;color:#E4E0EF;cursor:pointer;user-select:none;transition:color .1s}
.star-rating input:checked ~ label,
.star-rating label:hover,
.star-rating label:hover ~ label{color:var(--amber)}

/* ============ MODAL ============ */
.overlay{position:fixed;inset:0;background:rgba(23,18,33,.55);backdrop-filter:blur(2px);display:none;
  align-items:flex-start;justify-content:center;padding:42px 16px;overflow:auto;z-index:60}
.overlay.on{display:flex}
.modal{background:#fff;border-radius:20px;width:100%;max-width:640px;box-shadow:0 30px 80px rgba(0,0,0,.4)}
.modal.slim{max-width:480px}
.modal.wide{max-width:760px}
.modal-head{display:flex;justify-content:space-between;align-items:center;padding:18px 24px;border-bottom:1px solid var(--line)}
.modal-head h3{font-size:1.08rem;font-weight:800}
.modal-x{background:#F2F0F9;border:none;font-size:1.15rem;color:var(--mut);line-height:1;
  width:30px;height:30px;border-radius:9px;cursor:pointer}
.modal-x:hover{background:var(--violet-soft);color:var(--violet-deep)}
.modal-body{padding:20px 24px;max-height:64vh;overflow:auto}
.modal-foot{display:flex;justify-content:flex-end;gap:10px;padding:14px 24px;border-top:1px solid var(--line);
  background:#FAF9FE;border-radius:0 0 20px 20px}

.matriz{width:100%;border-collapse:collapse}
.matriz th,.matriz td{padding:9px 12px;border-bottom:1px solid var(--line);text-align:center;font-size:.82rem}
.matriz td:first-child,.matriz th:first-child{text-align:left}
.matriz input[type=checkbox]{width:17px;height:17px;accent-color:var(--violet)}

/* ============ ABAS DE SEGMENTO ============ */
.seg-tabs{display:flex;gap:9px;flex-wrap:wrap;margin-bottom:18px}
.seg-tab{display:inline-flex;align-items:center;gap:8px;border:1.5px solid var(--line);background:#fff;
  border-radius:12px;padding:9px 15px;font-size:.85rem;font-weight:700;color:var(--text);cursor:pointer;
  transition:.12s;text-decoration:none}
.seg-tab:hover{border-color:var(--violet-line);background:var(--violet-soft)}
.seg-tab.sel{border-color:var(--violet);background:var(--violet-soft);color:var(--violet-ink)}

/* ============ DASHBOARD / GRÁFICOS ============ */
.sec-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin:22px 0 14px;flex-wrap:wrap}
.sec-head h2{font-size:1.06rem;font-weight:700}
.sec-head .sub{font-size:.8rem;color:var(--mut)}
.dp-grid{display:grid;grid-template-columns:1.08fr 1fr;gap:16px;align-items:start}
.dp-col{display:flex;flex-direction:column;gap:16px;min-width:0}
.chart-body{padding:14px 18px 18px}
.chart-note{font-size:.72rem;color:var(--mut);font-weight:600}
.chart-canvas-wrap{position:relative;height:240px}
.chart-canvas-wrap.tall{height:300px}
.chart-canvas-wrap.short{height:210px}
@media (max-width:960px){.dp-grid{grid-template-columns:1fr}}

/* ============ FILTROS ATIVOS (Visão participantes) ============ */
.filters-bar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:2px 0 16px;min-height:30px}
.filters-bar .lbl{font-size:.76rem;color:var(--mut);font-weight:600}
.fchip{display:inline-flex;align-items:center;gap:7px;background:var(--violet);color:#fff;
  border:none;border-radius:99px;padding:5px 12px;font-size:.74rem;font-weight:600;cursor:pointer}
.fchip:hover{background:var(--violet-deep)}
.fchip small{opacity:.75;font-weight:500}
.fclear{background:none;border:none;color:var(--violet-deep);font-size:.76rem;font-weight:700;
  text-decoration:underline;cursor:pointer}

/* ============ CARTOGRAMA (participantes por estado) ============ */
.map{display:grid;grid-template-columns:repeat(9,minmax(0,1fr));gap:5px;max-width:430px;margin:4px auto 0}
.tile{aspect-ratio:1;border-radius:8px;background:#EFEDF7;display:flex;flex-direction:column;align-items:center;
  justify-content:center;cursor:pointer;border:2px solid transparent;transition:transform .12s;line-height:1.15}
.tile b{font-size:.62rem;font-weight:800}
.tile span{font-size:.56rem;font-weight:600;opacity:.9}
.tile:hover{transform:scale(1.07)}
.tile.sel{border-color:var(--ink)}

/* ============ ROSCA (donut) com texto no centro ============ */
.donut-wrap{display:flex;align-items:center;gap:20px;flex-wrap:wrap;justify-content:center}
.donut{width:180px;height:180px;border-radius:50%;position:relative;flex:none;background:#F1E4E8}
.donut::after{content:attr(data-center);position:absolute;inset:26%;background:var(--card);border-radius:50%;
  display:grid;place-items:center;font-family:var(--disp);font-weight:800;font-size:1.05rem;color:var(--ink);
  text-align:center;white-space:pre-line;line-height:1.25}
.donut.pie::after{display:none}
.donut-legend{display:flex;flex-direction:column;gap:7px;min-width:180px}

/* ============ BARRA EMPILHADA (stackbar) + legenda ============ */
.stackbar{display:flex;height:16px;border-radius:99px;overflow:hidden;margin-bottom:12px;background:#EFEDF7}
.stackbar i{display:block;height:100%;transition:width .25s}
.legend{display:flex;flex-wrap:wrap;gap:8px}
.lg{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--line);border-radius:99px;
  padding:5px 11px;font-size:.74rem;font-weight:600;color:var(--text);background:#fff;cursor:pointer}
.lg .sw{width:9px;height:9px;border-radius:3px;flex:none}
.lg .ct{color:var(--mut);font-weight:600}
.lg.sel{border-color:var(--violet);background:var(--violet-soft);color:var(--violet-deep)}

/* ============ BARRAS VERTICAIS (classe social, faixa etária) ============ */
.vbars{display:flex;align-items:flex-end;gap:10px;height:150px;padding-top:4px}
.vbar{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%;gap:5px;
  cursor:pointer;border:none;background:none;padding:0;font:inherit}
.vbar .ct{font-size:.7rem;font-weight:700;color:var(--ink)}
.vbar b{width:100%;max-width:46px;border-radius:8px 8px 0 0;background:linear-gradient(180deg,var(--accent),var(--violet));
  min-height:4px;transition:height .25s;display:block}
.vbar span{font-size:.66rem;color:var(--mut);font-weight:600;text-align:center}
.vbar.sel b{background:linear-gradient(180deg,var(--violet-deep),var(--violet-ink))}
.vbar.sel span{color:var(--violet-deep)}

/* ============ BARRAS HORIZONTAIS (pipeline, top-N compactos) ============ */
.hbar-row{display:grid;grid-template-columns:150px 1fr 90px;align-items:center;gap:10px;margin-bottom:10px}
.hbar-row:last-child{margin-bottom:0}
.hbar-row .lb{font-size:.78rem;font-weight:600;color:var(--ink)}
.hbar{height:12px;background:#EFEDF7;border-radius:99px;overflow:hidden}
.hbar i{display:block;height:100%;border-radius:99px;transition:width .25s}
.hbar-row .ct{font-size:.71rem;color:var(--mut);text-align:right;font-weight:600;white-space:nowrap}

/* ============ WIZARD DE IMPORTAÇÃO ============ */
.wiz-steps{display:flex;align-items:flex-start;justify-content:center;gap:0;margin-bottom:26px;flex-wrap:wrap}
.wiz-step{display:flex;flex-direction:column;align-items:center;gap:6px;width:110px}
.wiz-step .circ{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;font-weight:800;font-size:.8rem;
  background:#EFEDF7;color:var(--mut);border:2px solid #EFEDF7;transition:.15s}
.wiz-step.done .circ{background:var(--violet);color:#fff;border-color:var(--violet)}
.wiz-step.active .circ{background:#fff;color:var(--violet);border-color:var(--violet);box-shadow:0 0 0 4px var(--violet-soft)}
.wiz-step .lb{font-size:.66rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--mut);text-align:center;line-height:1.3}
.wiz-step.active .lb,.wiz-step.done .lb{color:var(--violet-deep)}
.wiz-line{width:40px;height:2px;background:#EFEDF7;margin:14px 2px 0}
.wiz-line.done{background:var(--violet)}
.wiz-modo-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;max-width:640px;margin:0 auto}
.wiz-modo-card{border:1.5px solid var(--line);border-radius:14px;padding:26px 18px;text-align:center;background:#fff;
  cursor:pointer;transition:.12s;display:flex;flex-direction:column;align-items:center;gap:8px;width:100%}
.wiz-modo-card:hover{border-color:var(--violet-line);background:var(--violet-soft)}
.wiz-modo-card b{font-family:var(--disp);font-size:.95rem;color:var(--ink)}
.wiz-modo-card small{font-size:.78rem;color:var(--mut);line-height:1.4}
.wiz-card{border:1px solid var(--line);border-radius:13px;padding:14px 16px;margin-bottom:12px;background:#FAF9FE}
.wiz-card-top{display:flex;align-items:center;gap:10px;margin-bottom:4px}
.wiz-card .badge-ok{background:var(--green-soft);color:var(--green)}
.wiz-card .badge-erro{background:var(--red-soft);color:#B03225}
.wiz-erro-lista{font-size:.73rem;color:#B03225;margin:4px 0 0;padding-left:16px}
.wiz-import-bar{display:flex;align-items:center;gap:10px;margin-bottom:14px;flex-wrap:wrap}

/* ---------- Indicador Automático ---------- */
.indic-step{margin-bottom:18px}
.indic-step-head{display:flex;align-items:flex-start;gap:12px}
.indic-step-num{width:26px;height:26px;border-radius:50%;background:var(--violet);color:#fff;
  display:flex;align-items:center;justify-content:center;font-size:.78rem;font-weight:800;flex:none;margin-top:2px}
.indic-step-head h3{font-size:.98rem;margin:0}
.indic-step-head p{font-size:.78rem;color:var(--mut);margin:3px 0 0}
.indic-body{padding:16px 20px 20px}
.indic-campo{margin-bottom:16px}
.indic-campo:last-child{margin-bottom:0}
.indic-campo b{display:block;font-size:.8rem;color:var(--ink);margin-bottom:8px}

.pill-grid{display:flex;flex-wrap:wrap;gap:8px}
.pill-check{position:absolute;opacity:0;width:1px;height:1px;overflow:hidden}
.pill-check + label{display:inline-flex;align-items:center;gap:6px;padding:8px 15px;border-radius:99px;
  border:1.5px solid var(--line);background:#fff;font-size:.82rem;font-weight:600;color:var(--text);
  cursor:pointer;transition:background-color .12s,border-color .12s,color .12s;user-select:none}
.pill-check:checked + label{background:var(--violet);border-color:var(--violet);color:#fff}
.pill-check:focus-visible + label{outline:2px solid var(--violet-deep);outline-offset:2px}

.var-card{background:var(--bg);border:1px solid var(--line);border-radius:13px;padding:14px 16px;margin-bottom:10px}
.var-card:last-child{margin-bottom:0}
.var-card > b{display:block;font-size:.85rem;color:var(--ink);margin-bottom:10px}

.indic-run{display:flex;justify-content:center;margin:22px 0 8px}
.indic-run .btn{padding:14px 34px;font-size:.95rem}

.rank-card{display:flex;gap:14px;align-items:flex-start;background:#fff;border:1px solid var(--line);
  border-radius:14px;padding:16px 18px;margin-bottom:10px;box-shadow:var(--shadow)}
.rank-card.top{border-color:var(--violet-line)}
.rank-pos{width:30px;height:30px;border-radius:50%;background:var(--bg);color:var(--mut);font-weight:800;
  font-size:.85rem;display:flex;align-items:center;justify-content:center;flex:none}
.rank-card.top .rank-pos{background:linear-gradient(135deg,var(--violet),var(--accent));color:#fff}
.rank-score{font-family:var(--disp);font-weight:800;font-size:1.5rem;color:var(--ink);line-height:1}
.rank-score-bar{width:100%;height:6px;background:var(--line);border-radius:99px;overflow:hidden;margin-top:8px}
.rank-score-bar i{display:block;height:100%;background:linear-gradient(90deg,var(--violet),var(--accent))}
.rank-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
.rank-chip{font-size:.72rem;padding:3px 10px;border-radius:99px;font-weight:600;white-space:nowrap}
.rank-chip.ok{background:var(--green-soft);color:var(--green)}
.rank-chip.no{background:var(--line);color:var(--mut)}
.rank-meta{font-size:.76rem;color:var(--mut);margin-top:10px;display:flex;gap:14px;flex-wrap:wrap;align-items:center}

.rank-detalhe{margin-top:10px;font-size:.78rem}
.rank-detalhe summary{cursor:pointer;color:var(--violet-deep);font-weight:600;list-style:none}
.rank-detalhe summary::-webkit-details-marker{display:none}
.rank-detalhe summary::before{content:"▸ ";display:inline-block}
.rank-detalhe[open] summary::before{content:"▾ "}
.rank-detalhe ul{list-style:none;margin:10px 0 0;padding:10px 14px;background:var(--bg);border-radius:10px}
.rank-detalhe li{display:flex;justify-content:space-between;gap:14px;padding:4px 0;color:var(--text)}
.rank-detalhe li b{flex:none;color:var(--ink);font-weight:700}
.rank-detalhe-total{border-top:1px solid var(--line);margin-top:4px;padding-top:8px !important;font-weight:700}
.rank-detalhe-total span{color:var(--ink)}

/* Barra de idade (dois <input type="range"> sobrepostos) */
.range-slider{position:relative;height:34px;margin-top:8px}
.range-slider-track{position:absolute;top:14px;left:0;right:0;height:6px;background:var(--line);border-radius:99px}
.range-slider-fill{position:absolute;top:0;height:100%;background:var(--violet);border-radius:99px}
.range-thumb{position:absolute;top:0;left:0;width:100%;margin:0;height:34px;background:transparent;
  -webkit-appearance:none;appearance:none;pointer-events:none}
.range-thumb::-webkit-slider-runnable-track{background:transparent;height:34px}
.range-thumb::-moz-range-track{background:transparent;height:34px}
.range-thumb::-webkit-slider-thumb{-webkit-appearance:none;pointer-events:auto;width:18px;height:18px;
  border-radius:50%;background:var(--violet);border:3px solid #fff;box-shadow:0 1px 4px rgba(37,26,30,.35);
  cursor:pointer;margin-top:8px}
.range-thumb::-moz-range-thumb{pointer-events:auto;width:18px;height:18px;border-radius:50%;
  background:var(--violet);border:3px solid #fff;box-shadow:0 1px 4px rgba(37,26,30,.35);cursor:pointer}
.range-slider-labels{display:flex;justify-content:space-between;font-size:.8rem;color:var(--text);margin-top:6px}
.range-slider-labels b{color:var(--ink)}

@media (max-width:960px){
  #app{grid-template-columns:1fr}
  .sidebar{position:static;height:auto}
  .board{grid-template-columns:repeat(4,240px)}
  .content{padding:18px 16px 60px}
  .topbar{padding:12px 16px;flex-wrap:wrap}
}
