/* ==========================================================================
   Stratosage Backoffice — estilos compartilhados
   Paleta e tipografia herdadas de www.stratosage.cc
   ========================================================================== */

:root{
  --cream:#F7F5EE;
  --paper:#FFFFFF;
  --ink:#15271C;
  --green:#235C39;
  --clay:#B5612C;
  --moss:#CFE3B4;
  --muted:#5B6A60;
  --line:#E4DFD1;
}

*{box-sizing:border-box}
html,body{margin:0;padding:0}

body{
  font-family:'Hanken Grotesk',system-ui,-apple-system,sans-serif;
  background:var(--cream);
  color:var(--ink);
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
}

.wrap{max-width:880px;margin:0 auto;padding:0 24px}
.wrap-wide{max-width:1040px;margin:0 auto;padding:0 24px}

/* ---------- topo ---------- */
.nav{background:var(--green);color:#fff}
.nav-in{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 24px;flex-wrap:wrap}
.brand{display:flex;align-items:center;gap:11px;font-family:'Fraunces',serif;font-weight:600;font-size:22px;color:#fff;text-decoration:none;letter-spacing:-.02em}
.brand img{width:38px;height:38px;border-radius:9px;display:block}
.tag{
  font-size:12px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;
  background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.28);
  padding:5px 11px;border-radius:999px;
}

/* ---------- shell: menu à esquerda + conteúdo ---------- */
.shell{
  max-width:1320px;margin:0 auto;padding:0 24px;
  display:grid;grid-template-columns:minmax(0,1fr);gap:26px;
}
@media (min-width:900px){
  .shell{grid-template-columns:212px minmax(0,1fr)}
}

/* min-width:0 é obrigatório: sem isso o item de grid não encolhe abaixo da
   largura dos seus filhos, o overflow-x do <ul> nunca entra em ação e a página
   inteira fica mais larga que a viewport no mobile. */
.menu{padding-top:28px;min-width:0}
@media (min-width:900px){
  .menu{position:sticky;top:0;align-self:start;max-height:100vh;overflow-y:auto}
}
.menu ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}
@media (max-width:899px){
  .menu ul{flex-direction:row;overflow-x:auto;padding-bottom:6px;gap:6px}
  .menu li{flex-shrink:0}
}

.menu a,.menu .breve{
  display:flex;align-items:center;gap:10px;
  padding:9px 12px;border-radius:10px;
  font-size:14px;font-weight:600;text-decoration:none;color:var(--muted);
  transition:background-color .12s ease,color .12s ease;
}
.menu a:hover{background:var(--paper);color:var(--ink)}
.menu a[aria-current="page"]{background:var(--moss);color:var(--green)}
.menu a:focus-visible{outline:2px solid var(--green);outline-offset:2px}
.menu svg{width:17px;height:17px;flex-shrink:0}

.menu .breve{color:#9AA69E;cursor:default}
.menu .breve .tagbreve{
  margin-left:auto;font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;
  background:var(--line);color:var(--muted);padding:2px 6px;border-radius:999px;
}
@media (max-width:899px){.menu .breve .tagbreve{margin-left:6px}}

.conteudo{min-width:0;padding-bottom:56px}

/* ---------- cartões ---------- */
.card{background:var(--paper);border:1px solid var(--line);border-radius:14px;padding:22px}
.card .ico{
  width:38px;height:38px;border-radius:10px;background:var(--moss);color:var(--green);
  display:flex;align-items:center;justify-content:center;margin-bottom:14px;
}
.card .ico svg{width:20px;height:20px}
.card h2{font-family:'Fraunces',serif;font-weight:600;font-size:18px;margin:0 0 6px;color:var(--ink)}
.card p{margin:0;font-size:14.5px;color:var(--muted)}

/* cartão que é link */
a.card{
  display:block;text-decoration:none;color:inherit;
  transition:border-color .15s ease, box-shadow .15s ease, transform .15s ease;
}
a.card:hover{
  border-color:var(--green);
  box-shadow:0 4px 14px rgba(21,39,28,.07);
  transform:translateY(-2px);
}
a.card:focus-visible{outline:2px solid var(--green);outline-offset:3px}
a.card .go{
  display:inline-flex;align-items:center;gap:6px;
  margin-top:12px;font-size:14px;font-weight:600;color:var(--green);
}
a.card .go svg{width:15px;height:15px}
a.card:hover .go svg{transform:translateX(3px)}
a.card .go svg{transition:transform .15s ease}

/* cartão de recurso ainda não construído */
.card.breve{opacity:.62}
.card.breve .ico{background:var(--line);color:var(--muted)}
.card.breve h2{color:var(--muted)}
.card .selo{
  display:inline-block;margin-top:12px;
  font-size:10.5px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;
  background:var(--line);color:var(--muted);padding:3px 9px;border-radius:999px;
}

@media (prefers-reduced-motion:reduce){
  a.card,a.card .go svg{transition:none}
  a.card:hover{transform:none}
}

/* ---------- rodapé ---------- */
footer{border-top:1px solid var(--line);padding:26px 0 40px;font-size:13.5px;color:var(--muted)}
.foot-in{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap}
footer a{color:var(--green);text-decoration:none;font-weight:600}
footer a:hover{text-decoration:underline}

/* ---------- cabeçalho de página interna ---------- */
.page-head{padding:34px 0 26px}
.back{
  display:inline-flex;align-items:center;gap:7px;
  font-size:14px;font-weight:600;color:var(--muted);text-decoration:none;margin-bottom:14px;
}
.back:hover{color:var(--green)}
.back svg{width:15px;height:15px}
.page-head h1{
  font-family:'Fraunces',serif;font-weight:600;
  font-size:clamp(28px,4.5vw,40px);line-height:1.12;letter-spacing:-.025em;
  margin:0 0 8px;color:var(--green);
}
.page-head .sub{margin:0;color:var(--muted);font-size:15.5px}

/* ---------- KPI row (stat tiles) ----------
   Valores em Hanken Grotesk, não em Fraunces: números grandes pedem a sans.
   Figuras proporcionais (sem tabular-nums) — estes valores ficam soltos, não
   empilhados em coluna.                                                     */
.kpi{display:flex;gap:14px;flex-wrap:wrap;margin-bottom:28px}
.tile{
  background:var(--paper);border:1px solid var(--line);border-radius:14px;
  padding:16px 20px;min-width:150px;
}
.tile .label{font-size:13px;color:var(--muted);margin-bottom:2px}
.tile .value{
  font-family:'Hanken Grotesk',system-ui,sans-serif;
  font-weight:600;font-size:34px;line-height:1.15;color:var(--ink);
}

/* ---------- lista de aceleradoras ---------- */
.acc-list{display:flex;flex-direction:column;gap:16px;padding-bottom:56px}

.acc{background:var(--paper);border:1px solid var(--line);border-radius:14px;overflow:hidden}
.acc-head{
  display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;
  padding:18px 22px;border-bottom:1px solid var(--line);background:#FCFBF7;
}
.acc-head h2{font-family:'Fraunces',serif;font-weight:600;font-size:20px;margin:0;color:var(--green)}
.acc-head .pasta{font-size:12.5px;color:var(--muted);font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
.count{
  font-size:12.5px;font-weight:600;color:var(--green);
  background:var(--moss);padding:4px 11px;border-radius:999px;white-space:nowrap;
}

.startups{
  list-style:none;margin:0;padding:14px 22px 20px;
  display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:2px 18px;
}
.startups li{padding:8px 0;border-bottom:1px solid var(--line)}
.startups li:last-child{border-bottom:none}
.startups .nome{font-weight:600;font-size:15px;display:block}
.startups .pasta{font-size:12.5px;color:var(--muted);font-family:ui-monospace,SFMono-Regular,Menlo,monospace}

/* ---------- startup clicável ---------- */
.startups li{padding:0;border-bottom:1px solid var(--line)}
.startups li:last-child{border-bottom:none}
.startups button{
  display:block;width:100%;text-align:left;font:inherit;cursor:pointer;
  background:none;border:none;border-radius:8px;padding:8px 10px;margin:0 -10px;
  transition:background-color .12s ease;
}
.startups button:hover{background:var(--cream)}
.startups button:focus-visible{outline:2px solid var(--green);outline-offset:-2px}
.startups button[aria-current="true"]{background:var(--moss)}
.startups button[aria-current="true"] .nome{color:var(--green)}

/* ---------- layout com painel ---------- */
.layout{display:grid;grid-template-columns:minmax(0,1fr);gap:20px;padding-bottom:56px}
/* 1240px e não 1040: o menu lateral consome 212px, então o painel de 430px só
   cabe ao lado da lista a partir daí sem espremer os nomes das startups. */
@media (min-width:1240px){
  .layout.com-painel{grid-template-columns:minmax(0,1fr) 430px}
}

.painel{
  background:var(--paper);border:1px solid var(--line);border-radius:14px;
  align-self:start;overflow:hidden;
}
@media (min-width:1240px){
  .painel{position:sticky;top:20px;max-height:calc(100vh - 40px);display:flex;flex-direction:column}
  .painel-corpo{overflow-y:auto}
}

.painel-topo{
  display:flex;align-items:flex-start;gap:13px;
  padding:18px 20px;border-bottom:1px solid var(--line);background:#FCFBF7;
}
.painel-topo .emoji{font-size:30px;line-height:1.1}
.painel-topo h2{font-family:'Fraunces',serif;font-weight:600;font-size:21px;margin:0;color:var(--green)}
.painel-topo .setor{font-size:13.5px;color:var(--muted)}
.painel-fechar{
  margin-left:auto;font:inherit;font-size:20px;line-height:1;cursor:pointer;
  background:none;border:none;color:var(--muted);padding:2px 6px;border-radius:8px;
}
.painel-fechar:hover{background:var(--cream);color:var(--ink)}
.painel-fechar:focus-visible{outline:2px solid var(--green);outline-offset:2px}

.painel-corpo{padding:18px 20px 22px}
.painel-corpo section{margin-bottom:22px}
.painel-corpo section:last-child{margin-bottom:0}
.painel-corpo h3{
  font-size:11.5px;font-weight:700;letter-spacing:.09em;text-transform:uppercase;
  color:var(--muted);margin:0 0 10px;
}
.painel-corpo p{margin:0;font-size:14px;color:var(--ink)}
.painel-corpo p.texto{color:var(--muted);line-height:1.62}

.badges{display:flex;gap:7px;flex-wrap:wrap}
.badge{
  font-size:12px;font-weight:600;padding:4px 10px;border-radius:999px;
  background:var(--cream);border:1px solid var(--line);color:var(--muted);
}
.badge.destaque{background:var(--moss);border-color:var(--moss);color:var(--green)}

/* mini stat tiles dentro do painel */
.mini-kpi{display:grid;grid-template-columns:repeat(auto-fit,minmax(96px,1fr));gap:9px}
.mini{background:var(--cream);border:1px solid var(--line);border-radius:11px;padding:10px 12px}
.mini .label{font-size:11px;color:var(--muted);line-height:1.35}
.mini .value{
  font-family:'Hanken Grotesk',system-ui,sans-serif;
  font-weight:600;font-size:19px;color:var(--ink);line-height:1.25;
}

/* ---------- dumbbell: declarado x real ----------
   Dois valores por dimensão = dumbbell, uma matiz em dois tons.
   Sem número em cada ponto: só o valor real à direita; o declarado é o ponto
   fantasma. O conector fica em clay quando há distância relevante entre os dois. */
.legenda{display:flex;gap:14px;align-items:center;margin-bottom:12px;font-size:12px;color:var(--muted)}
.legenda span{display:inline-flex;align-items:center;gap:6px}
.dot{width:10px;height:10px;border-radius:50%;display:inline-block}
.dot.declarado{background:var(--moss);border:2px solid var(--paper);box-shadow:0 0 0 1px var(--line)}
.dot.real{background:var(--green)}

.scores{display:flex;flex-direction:column;gap:7px}
.score-row{display:grid;grid-template-columns:96px minmax(0,1fr) 34px;align-items:center;gap:9px}
.score-row .dim{font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.score-row .val{
  font-family:'Hanken Grotesk',system-ui,sans-serif;font-variant-numeric:tabular-nums;
  font-size:12.5px;font-weight:600;color:var(--ink);text-align:right;
}
.track{position:relative;height:14px}
.track .base{position:absolute;top:6px;left:0;right:0;height:2px;background:var(--line);border-radius:2px}
.track .conector{position:absolute;top:6px;height:2px;background:var(--muted);border-radius:2px;opacity:.45}
.track .conector.gap{background:var(--clay);opacity:.85}
.track .pt{position:absolute;top:2px;width:10px;height:10px;border-radius:50%;margin-left:-5px}
.track .pt.declarado{background:var(--moss);box-shadow:0 0 0 1px var(--line), 0 0 0 3px var(--paper)}
.track .pt.real{background:var(--green);box-shadow:0 0 0 2px var(--paper)}

.aviso-gap{
  margin-top:11px;font-size:12.5px;color:var(--clay);
  display:flex;gap:7px;align-items:flex-start;line-height:1.5;
}
.aviso-gap svg{width:15px;height:15px;flex-shrink:0;margin-top:2px}

/* estado do painel */
.painel-estado{padding:34px 20px;text-align:center;color:var(--muted);font-size:14px}
.painel-estado .spinner{margin-bottom:12px}

/* ---------- estados ---------- */
.state{
  background:var(--paper);border:1px solid var(--line);border-radius:14px;
  padding:40px 24px;text-align:center;color:var(--muted);
}
.state h2{font-family:'Fraunces',serif;font-size:19px;color:var(--ink);margin:0 0 8px}
.state p{margin:0 auto;max-width:460px;font-size:14.5px}
.state code{
  font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px;
  background:var(--cream);border:1px solid var(--line);border-radius:6px;padding:2px 6px;
}
.state button{
  margin-top:18px;font:inherit;font-weight:600;font-size:14.5px;cursor:pointer;
  background:var(--green);color:#fff;border:none;border-radius:10px;padding:10px 20px;
}
.state button:hover{background:#1c4a2e}
.state button:focus-visible{outline:2px solid var(--green);outline-offset:3px}

.spinner{
  width:26px;height:26px;margin:0 auto 16px;border-radius:50%;
  border:3px solid var(--line);border-top-color:var(--green);
  animation:spin .8s linear infinite;
}
@keyframes spin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){.spinner{animation-duration:2.4s}}

/* ---------- formulários ---------- */
.campo{margin-bottom:15px}
.campo label{display:block;font-size:13px;font-weight:600;color:var(--muted);margin-bottom:5px}
.campo input{
  width:100%;font:inherit;font-size:15px;color:var(--ink);
  background:var(--paper);border:1px solid var(--line);border-radius:10px;
  padding:11px 13px;transition:border-color .12s ease,box-shadow .12s ease;
}
.campo input:focus{
  outline:none;border-color:var(--green);
  box-shadow:0 0 0 3px rgba(35,92,57,.13);
}
.campo input[type="password"],.campo input.mono,
/* revelada continua monoespaçada: sem isto o texto muda de largura e o campo pula */
.campo input.senha-visivel{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}

/* mostrar/ocultar senha */
.campo-senha{position:relative;display:block}
.campo-senha input{padding-right:42px}
.olho{
  position:absolute;right:5px;top:50%;transform:translateY(-50%);
  display:flex;align-items:center;justify-content:center;
  width:32px;height:32px;padding:0;cursor:pointer;
  background:none;border:none;border-radius:8px;color:var(--muted);
  transition:color .12s ease,background-color .12s ease;
}
.olho:hover{color:var(--ink);background:var(--cream)}
.olho:focus-visible{outline:2px solid var(--green);outline-offset:1px;color:var(--ink)}
.olho svg{width:18px;height:18px}
.campo .ajuda{font-size:12.5px;color:var(--muted);margin-top:5px}

.btn{
  width:100%;font:inherit;font-weight:600;font-size:15px;cursor:pointer;
  background:var(--green);color:#fff;border:none;border-radius:10px;padding:12px 20px;
  transition:background-color .12s ease;
}
.btn:hover:not(:disabled){background:#1c4a2e}
.btn:disabled{opacity:.5;cursor:not-allowed}
.btn:focus-visible{outline:2px solid var(--green);outline-offset:3px}
.btn.secundario{background:var(--paper);color:var(--green);border:1px solid var(--line)}
.btn.secundario:hover:not(:disabled){background:var(--cream)}
.btn.auto{width:auto}

.link-btn{
  font:inherit;font-size:13.5px;font-weight:600;color:var(--green);
  background:none;border:none;padding:0;cursor:pointer;text-decoration:none;
}
.link-btn:hover{text-decoration:underline}

.alerta{
  font-size:13.5px;border-radius:10px;padding:11px 13px;margin-bottom:15px;line-height:1.5;
}
.alerta.erro{background:#FBF0EA;border:1px solid #E8CDBA;color:#8C4520}
.alerta.ok{background:#EDF4E4;border:1px solid var(--moss);color:var(--green)}
/* divergência entre duas fontes do mesmo ambiente: não é erro da tela, é estado do dado */
.alerta.atencao{background:#FCF6E8;border:1px solid #E4D3A8;color:#7A5A16}

/* checklist da política de senha */
.regras{list-style:none;margin:9px 0 0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:3px 12px}
.regras li{font-size:12.5px;color:var(--muted);display:flex;align-items:center;gap:6px}
.regras li::before{content:"○";font-size:11px;color:var(--line)}
.regras li.ok{color:var(--green)}
.regras li.ok::before{content:"●";color:var(--green)}

/* ---------- tela de autenticação ---------- */
.auth{min-height:100vh;display:flex;flex-direction:column;justify-content:center;align-items:center;padding:32px 20px}
.auth-marca{display:flex;align-items:center;gap:11px;margin-bottom:22px;text-decoration:none}
.auth-marca img{width:44px;height:44px;border-radius:11px}
.auth-marca span{font-family:'Fraunces',serif;font-weight:600;font-size:25px;color:var(--green);letter-spacing:-.02em}
.auth-card{
  width:100%;max-width:420px;background:var(--paper);
  border:1px solid var(--line);border-radius:16px;padding:28px;
}
.auth-card h1{font-family:'Fraunces',serif;font-weight:600;font-size:24px;margin:0 0 6px;color:var(--ink)}
.auth-card .intro{font-size:14px;color:var(--muted);margin:0 0 20px;line-height:1.55}
.auth-rodape{margin-top:16px;display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap}
.auth-nota{margin-top:22px;font-size:12.5px;color:var(--muted);text-align:center;max-width:420px}

/* ---------- barra de sessão ---------- */
.sessao{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.sessao .quem{font-size:13px;color:rgba(255,255,255,.85)}
.sessao .quem strong{color:#fff;font-weight:600}
.nav a.item{
  color:rgba(255,255,255,.85);text-decoration:none;font-size:13.5px;font-weight:600;
  padding:5px 10px;border-radius:8px;
}
.nav a.item:hover,.nav a.item[aria-current="page"]{background:rgba(255,255,255,.14);color:#fff}
.nav .sair{
  font:inherit;font-size:13.5px;font-weight:600;cursor:pointer;color:#fff;
  background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.28);
  padding:5px 12px;border-radius:999px;
}
.nav .sair:hover{background:rgba(255,255,255,.24)}

/* ---------- tabela de usuários ---------- */
.tabela{width:100%;border-collapse:collapse;font-size:14px}
.tabela th{
  text-align:left;font-size:11.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;
  color:var(--muted);padding:0 12px 9px;border-bottom:1px solid var(--line);
}
.tabela td{padding:11px 12px;border-bottom:1px solid var(--line);vertical-align:middle}
.tabela tr:last-child td{border-bottom:none}
.tabela .login{font-weight:600}
.tabela .email{color:var(--muted);font-size:13.5px}
.tabela .quando{color:var(--muted);font-size:13px;font-variant-numeric:tabular-nums;white-space:nowrap}
.pill{font-size:11.5px;font-weight:600;padding:3px 9px;border-radius:999px;white-space:nowrap}
.pill.ativo{background:var(--moss);color:var(--green)}
.pill.pendente{background:#FBF0EA;color:#8C4520}
.tabela-wrap{overflow-x:auto}

/* ---------- carga de ambiente (seed) ---------- */
.campo select,.campo textarea{
  width:100%;font:inherit;font-size:15px;color:var(--ink);
  background:var(--paper);border:1px solid var(--line);border-radius:10px;
  padding:11px 13px;transition:border-color .12s ease,box-shadow .12s ease;
}
.campo select:focus,.campo textarea:focus{
  outline:none;border-color:var(--green);
  box-shadow:0 0 0 3px rgba(35,92,57,.13);
}
.campo textarea{
  font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12.5px;
  line-height:1.5;resize:vertical;min-height:76px;
}

.opcoes{display:flex;gap:16px;flex-wrap:wrap;margin-top:2px}
.opcoes label{display:inline-flex;align-items:center;gap:7px;font-size:14px;cursor:pointer}
.opcoes input{accent-color:var(--green);width:16px;height:16px;margin:0}

.acoes{display:flex;gap:10px;flex-wrap:wrap}

/* painel de status: uma linha por chamada */
.seed-resumo{display:flex;gap:9px;flex-wrap:wrap;margin-bottom:14px}
.seed-resumo .mini{flex:1 1 76px}
.seed-resumo .mini.falhas .value{color:var(--clay)}

.barra{height:6px;background:var(--line);border-radius:999px;overflow:hidden;margin-bottom:16px}
.barra i{display:block;height:100%;background:var(--green);border-radius:999px;transition:width .18s ease}

.seed-linhas{
  list-style:none;margin:0;padding:0;max-height:52vh;overflow-y:auto;
  border-top:1px solid var(--line);
}
.seed-linha{
  display:grid;grid-template-columns:9px minmax(0,1fr) auto;align-items:baseline;gap:9px;
  padding:8px 2px;border-bottom:1px solid var(--line);font-size:13px;
}
.seed-linha .marca{
  width:9px;height:9px;border-radius:50%;background:var(--green);
  align-self:center;flex-shrink:0;
}
.seed-linha.falha .marca{background:var(--clay)}
.seed-linha .rotulo{
  font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;
  overflow-wrap:anywhere;
}
.seed-linha .http{
  font-variant-numeric:tabular-nums;font-size:12px;font-weight:600;color:var(--muted);
}
.seed-linha.falha .http{color:var(--clay)}
.seed-linha .erro{
  grid-column:2 / -1;font-size:12.5px;color:var(--clay);line-height:1.45;margin-top:2px;
}
.seed-linha .repeticoes{grid-column:2 / -1;font-size:12px;color:var(--muted);margin-top:2px}

.seed-vazio{padding:30px 4px;text-align:center;color:var(--muted);font-size:14px}

/* ---------- dashboard ---------- */
.secao{
  font-family:'Fraunces',serif;font-weight:600;font-size:16px;color:var(--muted);
  margin:30px 0 14px;
}
.secao:first-of-type{margin-top:0}

.tile .detalhe{font-size:11.5px;color:var(--muted);margin-top:3px}
.tile.alerta-tile .value{color:var(--clay)}

.graficos{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:16px}
.card.grafico{padding:18px 20px 20px}
.card.grafico.larga{grid-column:1/-1}
.card.grafico h3{
  font-size:11.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;
  color:var(--muted);margin:0 0 14px;
}

/* barras de série única: a categoria se identifica pelo rótulo, não pela cor —
   por isso uma hue só e nenhuma legenda */
.barras{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:9px}
.barra-linha{
  display:grid;grid-template-columns:minmax(74px,34%) minmax(0,1fr) 30px;
  align-items:center;gap:10px;
}
.barra-rotulo{
  font-size:12.5px;color:var(--ink);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.barra-linha.outras .barra-rotulo{color:var(--muted);font-style:italic}
.barra-trilha{display:block;height:10px;background:var(--line);border-radius:0 5px 5px 0}
.barra-preenche{
  display:block;height:100%;background:var(--green);
  /* extremidade do dado arredondada; a base fica reta, ancorada no eixo */
  border-radius:0 4px 4px 0;
}
.barra-linha.outras .barra-preenche{background:var(--muted)}
.barra-valor{
  font-size:12.5px;font-weight:600;font-variant-numeric:tabular-nums;
  color:var(--ink);text-align:right;
}
.grafico-vazio{margin:0;font-size:13px;color:var(--muted);line-height:1.55}

/* resultado: números headline em vez de gráfico */
.financeiro{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:16px}
.fin-grupo{background:var(--paper);border:1px solid var(--line);border-radius:14px;padding:18px 20px}
.fin-grupo h3{
  font-size:11.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;
  color:var(--muted);margin:0 0 12px;
}
.fin-linha{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:5px 0}
.fin-linha.destaque{border-top:1px solid var(--line);margin-top:6px;padding-top:11px}
.fin-rotulo{font-size:13.5px;color:var(--muted)}
.fin-valor{
  font-size:15px;font-weight:600;font-variant-numeric:tabular-nums;color:var(--ink);
}
.fin-linha.destaque .fin-valor{font-size:19px;color:var(--green)}
.fin-valor.negativo{color:var(--clay)}

/* ---------- gestão de clientes ---------- */
.barra-topo{
  display:flex;align-items:flex-end;justify-content:space-between;
  gap:16px;flex-wrap:wrap;margin-bottom:20px;
}
.campo.compacto{margin-bottom:0;min-width:150px}

.abas{display:flex;gap:4px;background:var(--paper);border:1px solid var(--line);border-radius:11px;padding:4px}
.aba{
  font:inherit;font-size:14px;font-weight:600;cursor:pointer;color:var(--muted);
  background:none;border:none;border-radius:8px;padding:7px 15px;
}
.aba:hover{color:var(--ink)}
.aba[aria-selected="true"]{background:var(--moss);color:var(--green)}
.aba:focus-visible{outline:2px solid var(--green);outline-offset:2px}

.emoji-cel{font-size:15px}
.emoji-cel img{width:20px;height:20px;border-radius:5px;vertical-align:-4px;display:inline-block}

/* ícone: emoji ou imagem enviada */
.icone-linha{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.icone-previa{
  width:38px;height:38px;flex-shrink:0;display:flex;align-items:center;justify-content:center;
  font-size:20px;background:var(--cream);border:1px solid var(--line);border-radius:10px;
}
.icone-previa img{width:100%;height:100%;border-radius:9px;object-fit:cover;display:block}
.icone-emoji{
  width:78px;font:inherit;font-size:15px;text-align:center;
  background:var(--paper);border:1px solid var(--line);border-radius:10px;padding:9px 6px;
}
.icone-emoji:focus{outline:none;border-color:var(--green);box-shadow:0 0 0 3px rgba(35,92,57,.13)}
.link-btn.arquivo{cursor:pointer}

.bloco-opcional{margin-bottom:16px;border-top:1px solid var(--line);padding-top:12px}
.bloco-opcional > summary{
  cursor:pointer;font-size:13px;font-weight:600;color:var(--muted);
  list-style:none;padding:2px 0;
}
.bloco-opcional > summary::-webkit-details-marker{display:none}
.bloco-opcional > summary::marker{content:""}
.bloco-opcional > summary::before{content:"+ ";color:var(--green)}
.bloco-opcional[open] > summary::before{content:"− "}
.bloco-opcional > summary:hover{color:var(--ink)}
.bloco-opcional .campo{margin-top:13px;margin-bottom:0}

/* associação investidor <-> startups */
#assoc{margin-top:24px;border-top:1px solid var(--line);padding-top:18px}
#assoc h3{
  font-size:11.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;
  color:var(--muted);margin:0 0 12px;
}
.assoc-resumo{
  display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px;
}
.assoc-linha{
  font-size:12.5px;color:var(--muted);background:var(--cream);
  border:1px solid var(--line);border-radius:999px;padding:4px 11px;
}
.assoc-linha.total{font-weight:600;color:var(--ink)}
.assoc-linha.negativo{color:var(--clay);border-color:#E8CDBA;background:#FBF0EA}

.assoc-lista{list-style:none;margin:0;padding:0;max-height:340px;overflow-y:auto}
.assoc-item{border-bottom:1px solid var(--line)}
.assoc-item:last-child{border-bottom:none}
.assoc-item label{
  display:grid;grid-template-columns:18px minmax(0,1fr) auto auto;align-items:center;
  gap:9px;padding:8px 2px;cursor:pointer;font-size:13.5px;
}
.assoc-item label:hover{background:var(--cream)}
.assoc-item input{accent-color:var(--green);width:16px;height:16px;margin:0}
.assoc-item.marcada .assoc-nome{font-weight:600;color:var(--green)}
.assoc-nome{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.assoc-plano{font-size:11.5px;color:var(--muted)}
.assoc-custo{font-size:12.5px;font-variant-numeric:tabular-nums;color:var(--muted);white-space:nowrap}
.tabela .vazio{color:var(--muted);font-size:13px;font-style:italic}
.tabela .negativo{color:var(--clay);font-weight:600}
.nota-rodape{margin:14px 2px 0;font-size:12.5px;color:var(--muted);line-height:1.55}

/* ---------- planos ---------- */
.cabeca-card{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:14px}
.cabeca-card h2{font-family:'Fraunces',serif;font-weight:600;font-size:18px;margin:0;color:var(--ink)}

.tabela.planos td{padding:7px 8px;vertical-align:middle}
.tabela.planos th{padding:0 8px 9px}

.cel-num,.cel-texto{
  font:inherit;font-size:14px;color:var(--ink);
  background:var(--paper);border:1px solid var(--line);border-radius:8px;padding:7px 9px;
  transition:border-color .12s ease,box-shadow .12s ease;
}
.cel-num{width:100px;font-variant-numeric:tabular-nums;text-align:right}
.cel-texto{width:150px;font-weight:600}
.cel-num:focus,.cel-texto:focus{
  outline:none;border-color:var(--green);box-shadow:0 0 0 3px rgba(35,92,57,.13);
}
.cel-num:disabled{background:var(--cream);color:var(--muted)}

.cel-limite{white-space:nowrap}
.cel-limite .ilimitado{
  display:inline-flex;align-items:center;gap:5px;margin-left:9px;
  font-size:12.5px;color:var(--muted);cursor:pointer;
}
.cel-limite .ilimitado input{accent-color:var(--green);margin:0}

.cel-acoes{white-space:nowrap;text-align:right}
.icone-btn{
  font:inherit;font-size:14px;line-height:1;cursor:pointer;color:var(--muted);
  background:none;border:1px solid var(--line);border-radius:8px;padding:6px 9px;margin-left:5px;
}
.icone-btn:hover{background:var(--cream);color:var(--ink)}
.icone-btn.perigo:hover{background:#FBF0EA;border-color:#E8CDBA;color:#8C4520}
.icone-btn:focus-visible{outline:2px solid var(--green);outline-offset:2px}

/* o display do <dialog> fica com o padrão do navegador — trocá-lo quebra o showModal;
   o visual mora no .dlg lá dentro */
dialog{border:none;background:none;padding:0;max-width:min(460px,92vw)}
dialog::backdrop{background:rgba(21,39,28,.42)}
.dlg{background:var(--paper);border:1px solid var(--line);border-radius:16px;padding:24px}
.dlg h2{font-family:'Fraunces',serif;font-weight:600;font-size:20px;margin:0 0 8px;color:var(--ink)}
.dlg p{margin:0 0 18px;font-size:14px;color:var(--muted);line-height:1.55}
.dlg.largo{max-width:none;width:min(620px,92vw)}
dialog:has(.dlg.largo){max-width:min(620px,92vw)}
.dlg textarea{
  width:100%;font:inherit;font-size:14px;color:var(--ink);line-height:1.5;resize:vertical;
  background:var(--paper);border:1px solid var(--line);border-radius:10px;padding:10px 12px;
}
.dlg textarea:focus{outline:none;border-color:var(--green);box-shadow:0 0 0 3px rgba(35,92,57,.13)}

/* rótulo da versão: o prefixo é imposto, só o sufixo se digita */
.rotulo-linha{display:flex;align-items:stretch}
.rotulo-prefixo{
  display:flex;align-items:center;padding:0 10px;font-size:14px;font-weight:600;
  color:var(--muted);background:var(--cream);
  border:1px solid var(--line);border-right:none;border-radius:10px 0 0 10px;
}
.rotulo-linha input{
  flex:1;min-width:0;font:inherit;font-size:15px;color:var(--ink);
  background:var(--paper);border:1px solid var(--line);border-radius:0 10px 10px 0;padding:11px 13px;
}
.rotulo-linha input:focus{outline:none;border-color:var(--green);box-shadow:0 0 0 3px rgba(35,92,57,.13)}

.opcao-inline{
  display:flex;align-items:center;gap:8px;margin-bottom:16px;
  font-size:13px;color:var(--muted);cursor:pointer;
}
.opcao-inline input{accent-color:var(--clay);width:16px;height:16px;margin:0}

/* ficha da versão */
.ficha-versao{margin:0 0 16px;display:flex;gap:10px;flex-wrap:wrap;align-items:baseline}
.ficha-origem{font-size:12.5px;color:var(--muted)}
.ficha-motivo{
  font-size:13px;color:var(--ink);background:var(--paper);
  border:1px solid var(--line);border-radius:9px;padding:5px 11px;line-height:1.5;
}

/* proposta */
.proposta-corpo{max-height:52vh;overflow-y:auto;margin-bottom:18px}
.proposta-corpo h4{
  font-family:'Fraunces',serif;font-weight:600;font-size:15px;color:var(--ink);
  margin:16px 0 8px;
}
.proposta-corpo h4:first-child{margin-top:0}
.tabela-proposta{width:100%;border-collapse:collapse;font-size:13.5px}
.tabela-proposta th{
  text-align:left;font-size:11.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;
  color:var(--muted);padding:0 10px 8px;border-bottom:1px solid var(--line);
}
.tabela-proposta td{padding:9px 10px;border-bottom:1px solid var(--line)}
.tabela-proposta tr:last-child td{border-bottom:none}
.tabela-proposta td:not(:first-child){font-variant-numeric:tabular-nums}

/* ---------- consulta de execuções ---------- */
.filtros{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:0 14px}
.filtros .campo{margin-bottom:14px}

.tabela tr.clicavel{cursor:pointer}
.tabela tr.clicavel:hover{background:var(--cream)}
.tabela tr.clicavel:focus-visible{outline:2px solid var(--green);outline-offset:-2px}
.tabela tr.clicavel[aria-current="true"]{background:var(--moss)}

/* chamada dobrável: resumo na linha, requisição inteira ao abrir */
.seed-linhas.solto{max-height:none;overflow-y:visible}
.acoes-log{display:flex;justify-content:flex-end;margin-bottom:8px}

/* O display do summary fica como está por padrão. Trocá-lo para grid/flex quebra o
   abrir/fechar nativo no Safari — o grid mora no .seed-linha lá dentro. */
details.chamada > summary{
  cursor:pointer;position:relative;padding-right:18px;list-style:none;
}
details.chamada > summary::-webkit-details-marker{display:none}
details.chamada > summary::marker{content:""}
details.chamada > summary:hover{background:var(--cream)}
details.chamada > summary:focus-visible{outline:2px solid var(--green);outline-offset:-2px}
details.chamada > summary > .seed-linha{border-bottom:none}
details.chamada{border-bottom:1px solid var(--line)}

/* absoluta de propósito: como item do grid, a seta cairia numa linha nova sempre que
   a chamada tem mensagem de erro */
details.chamada > summary::after{
  content:"›";position:absolute;right:2px;top:9px;
  color:var(--muted);font-size:15px;line-height:1;
  transition:transform .15s ease;
}
details.chamada[open] > summary::after{transform:rotate(90deg)}

.chamada-corpo{padding:8px 2px 16px}
.chamada-corpo .bloco{margin-bottom:12px}
.chamada-corpo h4{
  margin:0 0 5px;font-size:11px;font-weight:700;letter-spacing:.08em;
  text-transform:uppercase;color:var(--muted);
}
.chamada-corpo pre{
  margin:0;background:var(--cream);border:1px solid var(--line);border-radius:9px;
  padding:9px 11px;overflow-x:auto;max-height:280px;overflow-y:auto;
  font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11.5px;
  line-height:1.5;white-space:pre-wrap;overflow-wrap:anywhere;color:var(--ink);
}

.incompleta{font-size:12px;color:var(--muted);margin-left:7px}
.aviso-incompleta{
  margin:0 0 14px;font-size:12.5px;color:var(--clay);line-height:1.5;
}

.hidden{display:none}

/* selo de credencial de serviço na carga de ambiente */
.selo-servico{
  display:inline-block;margin-left:8px;font-size:11px;font-weight:600;
  background:var(--moss);color:var(--green);border-radius:999px;padding:2px 9px;
}

/* ---------- ambiente global na faixa verde ---------- */
.amb-bloco{display:flex;align-items:center;gap:8px;margin-left:auto;margin-right:14px}
.amb-rotulo{font-size:12px;color:rgba(255,255,255,.8);font-weight:600}
.amb-select{
  font:inherit;font-size:13.5px;font-weight:600;color:#fff;cursor:pointer;
  background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.28);
  border-radius:999px;padding:5px 12px;
}
.amb-select option{color:var(--ink);background:var(--paper)}
.amb-select:hover{background:rgba(255,255,255,.24)}
.amb-select:focus-visible{outline:2px solid #fff;outline-offset:2px}
.amb-mais{
  font:inherit;font-size:15px;line-height:1;cursor:pointer;color:#fff;
  background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.28);
  border-radius:999px;padding:5px 10px;
}
.amb-mais:hover{background:rgba(255,255,255,.24)}
.amb-mais:focus-visible{outline:2px solid #fff;outline-offset:2px}
.amb-selo{
  font-size:10.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;
  background:var(--moss);color:var(--green);border-radius:999px;padding:3px 9px;
}

/* menu travado enquanto não há ambiente */
.menu.travado{opacity:.4;pointer-events:none;filter:grayscale(1)}
.amb-aviso{
  margin:10px 0 0;font-size:12.5px;color:var(--clay);line-height:1.5;
  background:#FBF0EA;border:1px solid #E8CDBA;border-radius:10px;padding:9px 12px;
}
@media (min-width:900px){.amb-aviso{max-width:212px}}

/* diagnóstico do ambiente */
.amb-corpo{margin-bottom:18px}
.amb-detalhe{font-size:12.5px;color:var(--muted);margin-top:6px}
.amb-erro{margin:0;font-size:13.5px;color:var(--clay)}
.amb-ops{list-style:none;margin:14px 0 0;padding:0;display:flex;flex-direction:column;gap:5px}
.amb-ops li{
  display:grid;grid-template-columns:16px minmax(0,1fr) auto;align-items:center;
  gap:9px;font-size:13px;
}
.amb-ops .marca-op{font-weight:700;text-align:center}
.amb-ops .pode .marca-op{color:var(--green)}
.amb-ops .nao-pode{color:var(--muted)}
.amb-ops .nao-pode .marca-op{color:var(--clay)}
.amb-ops .exige{font-size:11px;color:var(--muted);font-family:ui-monospace,SFMono-Regular,Menlo,monospace}


/* ------------------------------------------------------------ MFA */

.mfa-corpo{display:flex;flex-direction:column;align-items:center;gap:13px;margin:4px 0 2px}

/* Moldura branca em volta do QR. A zona quieta já vem dentro do SVG; a moldura existe
   para o QR não encostar na borda do cartão e para o contraste não depender do fundo.

   O tamanho é o que decide se a câmera lê: são 53 módulos com a zona quieta, então
   232px dão ~4,4px por módulo — abaixo de 4px a leitura começa a falhar em celular a
   uma distância normal. O `min` com vw evita estourar em tela estreita. */
.mfa-qr{background:#fff;padding:12px;border-radius:12px;border:1px solid var(--line)}
.mfa-qr svg{display:block;width:min(232px,62vw);height:auto;aspect-ratio:1}

.mfa-codigo{
  width:190px;text-align:center;font-size:26px;letter-spacing:.22em;
  padding:9px 6px;border:1px solid var(--line);border-radius:10px;
  background:var(--paper);color:var(--ink);
}
.mfa-codigo:focus{outline:none;border-color:var(--green);box-shadow:0 0 0 3px rgba(35,92,57,.13)}

.mfa-texto{font-size:13.5px;color:var(--muted);line-height:1.55;margin:0 0 4px}
.mfa-manual{font-size:12.5px;color:var(--muted);align-self:stretch}
.mfa-manual summary{cursor:pointer}
.mfa-ajuda{margin:7px 0 5px}
.mfa-segredo{
  display:block;word-break:break-all;font-size:12px;
  background:var(--cream);border:1px solid var(--line);border-radius:8px;padding:8px 9px;
}
.mfa-erro{margin:2px 0 0}

/* produção na barra: quente, e com o relógio da sessão */
.amb-selo-prod{background:#FBF0EA;border-color:#E8CDBA;color:#8C4520;font-variant-numeric:tabular-nums}


/* ------------------------------------------------------------ Atividades */

.filtros{display:flex;gap:14px;flex-wrap:wrap;align-items:flex-end}
.filtro{display:flex;flex-direction:column;gap:5px}
.filtro span{font-size:12px;font-weight:600;color:var(--muted)}
.filtro select{
  font:inherit;font-size:14px;color:var(--ink);min-width:170px;
  background:var(--paper);border:1px solid var(--line);border-radius:10px;padding:8px 11px;
}
.filtro select:focus{outline:none;border-color:var(--green);box-shadow:0 0 0 3px rgba(35,92,57,.13)}

/* a seta gira ao abrir: sinaliza que a linha inteira é o botão do detalhe */
.col-seta{width:28px;text-align:right}
.seta-detalhe{
  display:inline-block;color:var(--muted);font-size:17px;line-height:1;
  transition:transform .14s ease;
}
.seta-detalhe.aberta{transform:rotate(90deg);color:var(--green)}

/* a linha de detalhe não tem borda própria: ela pertence à linha de cima */
.linha-detalhe td{background:var(--cream);padding:0;border-bottom:1px solid var(--line)}
.detalhe-caixa{padding:16px 14px 18px}
.detalhe-carregando{margin:0;font-size:13px;color:var(--muted)}

.detalhe-campos{
  display:grid;grid-template-columns:auto 1fr;gap:5px 14px;margin:0 0 14px;
  font-size:13px;align-items:baseline;
}
.detalhe-campos dt{color:var(--muted);font-weight:600;white-space:nowrap}
.detalhe-campos dd{margin:0;color:var(--ink);word-break:break-word}

.detalhe-titulo{
  margin:12px 0 6px;font-size:11.5px;font-weight:700;letter-spacing:.08em;
  text-transform:uppercase;color:var(--muted);
}
/* o JSON rola dentro do próprio bloco: sem isto um payload largo empurra a página */
.detalhe-json{
  margin:0;padding:11px 12px;max-height:280px;overflow:auto;
  background:var(--paper);border:1px solid var(--line);border-radius:10px;
  font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;line-height:1.5;
  color:var(--ink);white-space:pre-wrap;word-break:break-word;
}
.detalhe-chave{
  margin:12px 0 0;font-size:11.5px;color:var(--muted);
  font-family:ui-monospace,SFMono-Regular,Menlo,monospace;word-break:break-all;
}

/* Cada ação com sua cor de fundo. São estados, não séries: nunca entram num gráfico
   e não precisam se distinguir entre si em daltonismo — o rótulo é o que identifica. */
.pill.acao-login{background:#EEF1F6;color:#3B4A63}
.pill.acao-ambiente{background:var(--moss);color:var(--green)}
.pill.acao-aceleradora,.pill.acao-startup{background:#E8F0E2;color:#3C5B32}
.pill.acao-payload{background:#F3EEE4;color:#6B5726}
.pill.acao-usuario{background:#FBF0EA;color:#8C4520}
.pill.acao-plano-criar,.pill.acao-plano-associar{background:#EFEAF5;color:#54407A}

.arq-conta{margin:0 0 4px;font-size:13.5px;color:var(--ink)}
