:root{--pino:#1f4d3a;--verde:#2f7a58;--fundo:#eef2ef;--tx:#1b2a22;--mut:#66766c;--linha:#aebcb3;--m:#3d7fc1;--f:#cc4d7c}
*{box-sizing:border-box}
body{margin:0;font:15px/1.45 system-ui,"Segoe UI",Roboto,sans-serif;background:var(--fundo);color:var(--tx)}
header{background:var(--pino);color:#fff;display:flex;align-items:center;gap:18px;padding:10px 20px;flex-wrap:wrap}
header h1{font-size:18px;margin:0;flex:1}header a,header span{color:#fff;font-size:14px;text-decoration:none}header a:hover{text-decoration:underline}
.btn{background:var(--verde);color:#fff;border:0;border-radius:6px;padding:8px 14px;cursor:pointer;font:inherit}
.btn:hover{filter:brightness(1.1)}.btn.sec{background:#dde5e0;color:var(--tx)}.btn.red{background:#b3372f}
:focus-visible{outline:3px solid #f0b429;outline-offset:2px}
input,select{font:inherit;padding:8px;border:1px solid #c3cfc7;border-radius:6px;background:#fff;width:100%}
label{display:block;font-size:13px;color:var(--mut);margin-bottom:10px}label input,label select{margin-top:4px;color:var(--tx)}
.chk{display:flex;gap:8px;align-items:center}.chk input{width:auto;margin:0}
.lin{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.lin>label{flex:1}
.aviso{padding:8px 12px;border-radius:6px;margin:8px 0}.err{background:#fbe4e1;color:#8a2a22}.ok{background:#dff1e6;color:#1d5a3a}
.barra{display:flex;gap:10px;padding:12px 20px;background:#fff;border-bottom:1px solid #d5dfd8}.barra select{max-width:340px}
.wrap{display:grid;grid-template-columns:1fr 310px;gap:16px;padding:16px 20px;align-items:start}
.arvore{background:#fff;border-radius:10px;padding:24px;overflow:auto;min-height:420px;border:1px solid #d5dfd8}
.vazia{color:var(--mut);text-align:center;margin-top:80px}
.ramo{display:flex;align-items:center}
.arvore{--g:28px}
.arvore:not(.v) .pais{display:flex;flex-direction:column;margin-left:var(--g);position:relative}
.arvore:not(.v) .pais::before{content:"";position:absolute;left:calc(var(--g)*-1);top:50%;width:var(--g);border-top:2px solid var(--linha)}
.arvore:not(.v) .pais>.ramo{position:relative;padding:6px 0 6px var(--g)}
.arvore:not(.v) .pais>.ramo::before{content:"";position:absolute;left:0;top:50%;width:var(--g);border-top:2px solid var(--linha)}
.arvore:not(.v) .pais>.ramo::after{content:"";position:absolute;left:0;top:0;bottom:0;border-left:2px solid var(--linha)}
.arvore:not(.v) .pais>.ramo:first-child::after{top:50%}
.arvore:not(.v) .pais>.ramo:last-child::after{bottom:50%}
.arvore:not(.v) .pais>.ramo:only-child::after{display:none}
.arvore.v .ramo{flex-direction:column;align-items:center}
.arvore.v .pais{display:flex;flex-direction:row;justify-content:center;margin-top:var(--g);position:relative}
.arvore.v .pais::before{content:"";position:absolute;left:50%;top:calc(var(--g)*-1);height:var(--g);border-left:2px solid var(--linha)}
.arvore.v .pais>.ramo{position:relative;padding:var(--g) 6px 0}
.arvore.v .pais>.ramo::before{content:"";position:absolute;left:50%;top:0;height:var(--g);border-left:2px solid var(--linha)}
.arvore.v .pais>.ramo::after{content:"";position:absolute;top:0;left:0;right:0;border-top:2px solid var(--linha)}
.arvore.v .pais>.ramo:first-child::after{left:50%}
.arvore.v .pais>.ramo:last-child::after{right:50%}
.arvore.v .pais>.ramo:only-child::after{display:none}
.arvore.v.inv .ramo{flex-direction:column-reverse}
.arvore.v.inv .pais{margin-top:0;margin-bottom:var(--g)}
.arvore.v.inv .pais::before{top:auto;bottom:calc(var(--g)*-1)}
.arvore.v.inv .pais>.ramo{padding:0 6px var(--g)}
.arvore.v.inv .pais>.ramo::before,.arvore.v.inv .pais>.ramo::after{top:auto;bottom:0}
.arvore.v .card{width:128px;flex-direction:column;text-align:center;border-left:1px solid #cfd9d3;border-top:5px solid var(--m);padding:8px 6px}
.arvore.v .card.F{border-top-color:var(--f)}
.arvore.v .vazio{width:128px}
.card{width:210px;flex:none;display:flex;gap:10px;align-items:center;padding:8px 10px;background:#fff;border:1px solid #cfd9d3;border-left:5px solid var(--m);border-radius:8px;cursor:pointer}
.card.F{border-left-color:var(--f)}.card:hover{background:#f5f9f6}.card.foco{box-shadow:0 0 0 3px #f0b42988}
.card.morto{background:#f1f2f1;color:#555}
.av{width:46px;height:46px;border-radius:50%;overflow:hidden;flex:none;background:#dfe7e2;display:grid;place-items:center}
.av img,.pfoto img{width:100%;height:100%;object-fit:cover;display:block}
.av svg,.pfoto svg{width:70%;fill:#9fb1a6}
.inf{min-width:0}.inf b{display:block;font-size:14px;line-height:1.2;overflow-wrap:anywhere}.inf small{color:var(--mut);display:block;line-height:1.2;margin-top:2px}
.vazio{width:210px;border:2px dashed #b9c8be;background:none;border-radius:8px;padding:14px;color:var(--mut);cursor:pointer;font:inherit}
.vazio:hover{background:#f3f8f5}
.painel{background:#fff;border-radius:10px;padding:18px;border:1px solid #d5dfd8}
.pfoto{width:130px;height:130px;border-radius:50%;overflow:hidden;background:#dfe7e2;display:grid;place-items:center;margin:0 auto 10px}
.pfoto[data-zoom]{cursor:zoom-in}
.painel h2{margin:6px 0 2px;text-align:center;font-size:19px}.painel p{text-align:center;margin:2px 0}.mut{color:var(--mut)}
.painel h4{margin:16px 0 6px;font-size:13px;color:var(--mut)}
.chip{display:inline-block;margin:0 6px 6px 0;padding:4px 10px;border-radius:14px;background:#eaf0ec;border:1px solid #cfd9d3;border-left:4px solid var(--m);cursor:pointer;font-size:14px}
.chip.F{border-left-color:var(--f)}
.acoes{display:flex;gap:8px;flex-wrap:wrap;margin-top:18px}
dialog{border:0;border-radius:10px;padding:20px;width:min(440px,94vw);box-shadow:0 10px 40px #0004}dialog::backdrop{background:#0006}
dialog h3{margin-top:0}
.entrada{display:grid;place-items:center;min-height:100vh}
.login{background:#fff;padding:28px;border-radius:12px;width:min(380px,94vw);box-shadow:0 6px 30px #1f4d3a22}.login h1{font-size:22px;margin:0 0 12px}
.login .btn{width:100%}.abas{display:flex;gap:6px;margin:10px 0}.abas button{flex:1;padding:8px;border:0;border-bottom:3px solid #d5dfd8;background:none;cursor:pointer;font:inherit}.abas .on{border-color:var(--verde);font-weight:600}
.admin{max-width:900px;margin:20px auto;padding:0 16px}.novo>*{flex:1;min-width:130px}
.tabela{overflow:auto}table{width:100%;border-collapse:collapse;background:#fff}th,td{padding:8px 10px;border-bottom:1px solid #e1e8e3;text-align:left;font-size:14px}
td select{width:auto}.tag{padding:2px 8px;border-radius:10px;font-size:12px;background:#dff1e6}.tag.pendente{background:#fcefc7}.tag.recusado{background:#fbe4e1}

.painel .cab{display:none}
.mini{width:38px;height:38px;border-radius:50%;overflow:hidden;background:#dfe7e2;display:grid;place-items:center;flex:none}
.mini img{width:100%;height:100%;object-fit:cover}.mini svg{width:70%;fill:#9fb1a6}
@media(max-width:820px){
 body{padding-bottom:76px}
 header{padding:10px 12px;gap:10px}
 .wrap{grid-template-columns:1fr;padding:10px}
 .arvore{padding:14px;min-height:300px;-webkit-overflow-scrolling:touch}
 .barra{flex-wrap:wrap;padding:10px}.barra select{flex:1 1 140px;max-width:none}.barra .btn{flex:1 1 100%}
 input,select{font-size:16px}.btn{min-height:42px}
 .card,.vazio{width:180px}
 .painel{position:fixed;left:0;right:0;bottom:0;z-index:20;max-height:70vh;overflow:auto;border-radius:16px 16px 0 0;padding:0 16px 18px;transform:translateY(calc(100% - 62px));transition:transform .25s;box-shadow:0 -4px 20px #0003}
 .painel.aberto{transform:none}
 .painel .cab{display:flex;align-items:center;gap:10px;height:62px;position:sticky;top:0;background:#fff;cursor:pointer;margin:0 -16px;padding:0 16px;z-index:1}
 .cab b{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
 .painel.aberto .seta{transform:rotate(180deg)}
 dialog{max-height:92vh;overflow:auto}
}
