/* HENNUE DIGITAL — folha de estilo
   Paleta e tipografia do design system HENNUE.
   Editorial minimalista, arestas retas, acento clay. */
html,body{height:auto;min-height:100%}

:root{
  --bg:#f4f3f0; --surface:#ffffff; --surface-2:#edebe6; --surface-3:#e4e1da;
  --ink:#232323; --ink-2:#56534c; --muted:#8f8c86; --line:#d8d5ce; --line-2:#c6c2b9;
  --clay:#a8794f; --clay-soft:#b58c6f;
  --ok:#4c7150; --alert:#8c4b3a;
  --rail:#161412; --rail-2:#1f1d1a; --rail-ink:#f4f3f0; --rail-muted:#89847a; --rail-line:#2d2a26;
  /* Acento da HENNUE DIGITAL: ciano. Sobre preto vai o neon; sobre o
     off-white vai a versão escurecida, mesma matiz, contraste legível. */
  --neon:#35d6ff; --neon-texto:#0a7392;
  --f-ui:"Archivo","Helvetica Neue",Arial,sans-serif;
  --f-txt:"IBM Plex Sans","Helvetica Neue",Arial,sans-serif;
  --f-mono:"IBM Plex Mono","Courier New",monospace;
}
:root:not([data-theme="light"]){}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --bg:#131211; --surface:#1b1917; --surface-2:#232120; --surface-3:#2b2926;
    --ink:#f1efe9; --ink-2:#c0bbb1; --muted:#8a857c; --line:#2f2c29; --line-2:#3c3935;
    --clay:#c79a79; --clay-soft:#b58c6f; --ok:#79a37d; --alert:#c98570;
    --neon-texto:#35d6ff;
  }
}
:root[data-theme="dark"]{
  --bg:#131211; --surface:#1b1917; --surface-2:#232120; --surface-3:#2b2926;
  --ink:#f1efe9; --ink-2:#c0bbb1; --muted:#8a857c; --line:#2f2c29; --line-2:#3c3935;
  --clay:#c79a79; --clay-soft:#b58c6f; --ok:#79a37d; --alert:#c98570;
}
*{box-sizing:border-box}
html,body{height:100%}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--f-txt);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}
#root{height:100%}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer;border:0;background:none}
a{color:inherit}
:focus-visible{outline:2px solid var(--clay);outline-offset:2px}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}

.lbl{font-family:var(--f-ui);font-size:10px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}
.mono{font-family:var(--f-mono);font-variant-numeric:tabular-nums}
.logo{display:block;width:100%;height:auto;color:currentColor}

/* ---------- ACESSO ---------- */
.gate{min-height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center;background:var(--rail);color:var(--rail-ink);padding:40px 16px;gap:0}
.gate-in{width:100%;max-width:380px;display:flex;flex-direction:column;gap:34px}
.gate-mark{width:230px;max-width:70%;color:var(--rail-ink)}
.gate-rule{height:1px;background:var(--rail-line)}
.gate-rule::after{content:"";display:block;width:44px;height:1px;background:var(--clay-soft);transform:translateY(0)}
.gate h1{font-family:var(--f-ui);font-size:19px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;margin:0}
.gate p{margin:8px 0 0;color:var(--rail-muted);font-size:13px;max-width:34em}
.field{display:flex;flex-direction:column;gap:9px}
.field .lbl{color:var(--rail-muted)}
.code-in{width:100%;background:transparent;border:1px solid var(--rail-line);padding:14px 16px;color:var(--rail-ink);font-family:var(--f-mono);font-size:19px;letter-spacing:.42em;border-radius:0}
.code-in::placeholder{color:#4a463f;letter-spacing:.42em}
.code-in:focus{border-color:var(--clay-soft);outline:none}
.btn-key{width:100%;background:var(--rail-ink);color:var(--rail);font-family:var(--f-ui);font-size:12px;font-weight:700;letter-spacing:.2em;text-transform:uppercase;padding:14px;border:1px solid var(--rail-ink)}
.btn-key:hover{background:var(--clay-soft);border-color:var(--clay-soft);color:#161412}
.btn-key[disabled]{opacity:.4;cursor:default}
.gate-msg{font-family:var(--f-ui);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--clay-soft);min-height:16px}
.gate-foot{margin-top:6px;display:flex;justify-content:space-between;gap:12px;border-top:1px solid var(--rail-line);padding-top:12px}
.gate-foot span{font-family:var(--f-ui);font-size:9.5px;letter-spacing:.16em;text-transform:uppercase;color:#5d584f}

/* ---------- SHELL ---------- */
.shell{height:100%;display:grid;grid-template-columns:272px 1fr}
.rail{background:var(--rail);color:var(--rail-ink);display:flex;flex-direction:column;border-right:1px solid var(--rail-line);overflow-y:auto}
.rail-top{padding:26px 22px 20px;border-bottom:1px solid var(--rail-line)}
.rail-mark{width:170px;color:var(--rail-ink)}
.rail-nav{flex:1;padding:14px 0 20px}
.nav-group{padding:14px 22px 6px}
.nav-item{width:100%;display:flex;align-items:center;gap:11px;padding:9px 22px;text-align:left;color:#cfcabf;font-family:var(--f-ui);font-size:12px;font-weight:500;letter-spacing:.07em;text-transform:uppercase;border-left:2px solid transparent}
.nav-item:hover{background:var(--rail-2);color:var(--rail-ink)}
.nav-item.on{background:var(--rail-2);color:var(--rail-ink);border-left-color:var(--clay-soft)}
.nav-item svg{flex:none;opacity:.8}
.nav-item .dot{margin-left:auto;width:5px;height:5px;background:var(--clay-soft)}
.rail-foot{border-top:1px solid var(--rail-line);padding:16px 22px 20px;display:flex;flex-direction:column;gap:12px}
.who{display:flex;align-items:center;gap:11px}
.who-sq{width:34px;height:34px;flex:none;border:1px solid var(--rail-line);display:grid;place-items:center;font-family:var(--f-ui);font-size:12px;font-weight:700;letter-spacing:.04em;color:var(--clay-soft)}
.who-n{font-family:var(--f-ui);font-size:12px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;line-height:1.3}
.who-c{font-size:11px;color:var(--rail-muted)}
.rail-acts{display:flex;gap:8px}
.mini{flex:1;border:1px solid var(--rail-line);color:var(--rail-muted);font-family:var(--f-ui);font-size:9.5px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;padding:8px 6px;text-align:center}
.mini:hover{color:var(--rail-ink);border-color:#4a463f}

.main{overflow-y:auto;display:flex;flex-direction:column;min-width:0}
.bar{position:sticky;top:env(safe-area-inset-top,0px);z-index:5;background:var(--bg);border-bottom:1px solid var(--line);padding:20px 34px 16px;display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap}
.bar h2{font-family:var(--f-ui);font-size:21px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;margin:5px 0 0;text-wrap:balance}
.burger{display:none;border:1px solid var(--line);padding:8px 10px}
.wrap{padding:26px 34px 60px;flex:1}
.sec{margin-bottom:34px}
.sec-h{display:flex;align-items:center;gap:12px;margin-bottom:16px}
.sec-h .lbl{white-space:nowrap}
.sec-h .ln{flex:1;height:1px;background:var(--line)}

.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1px;background:var(--line);border:1px solid var(--line);margin-bottom:34px}
.stat{background:var(--bg);padding:16px 18px}
.stat .n{font-family:var(--f-ui);font-size:26px;font-weight:600;letter-spacing:.01em;font-variant-numeric:tabular-nums;line-height:1.1}
.stat .lbl{display:block;margin-top:5px}

.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(262px,1fr));gap:14px}
.card{background:var(--surface);border:1px solid var(--line);padding:18px;display:flex;flex-direction:column;gap:12px;text-align:left;min-height:158px}
.card:hover{border-color:var(--clay);background:var(--surface-2)}
.card-t{display:flex;align-items:flex-start;gap:11px}
.card-t svg{flex:none;color:var(--clay);margin-top:1px}
.card h3{font-family:var(--f-ui);font-size:13px;font-weight:600;letter-spacing:.07em;text-transform:uppercase;margin:0;line-height:1.35}
.card p{margin:0;font-size:12.5px;color:var(--ink-2);line-height:1.55}
.card-f{margin-top:auto;display:flex;align-items:center;justify-content:space-between;gap:10px;border-top:1px solid var(--line);padding-top:11px}
.tag{font-family:var(--f-ui);font-size:9.5px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;padding:3px 7px;border:1px solid var(--line-2);color:var(--muted)}
.tag.on{color:var(--ok);border-color:currentColor}
.tag.soon{color:var(--clay);border-color:currentColor}
.go{font-family:var(--f-ui);font-size:10px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--clay)}

.empty{border:1px dashed var(--line-2);padding:38px 24px;text-align:center;color:var(--muted)}
.empty strong{display:block;font-family:var(--f-ui);font-size:13px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--ink);margin-bottom:7px}

/* detalhe */
.det{border:1px solid var(--line);background:var(--surface);max-width:760px}
.det-h{padding:24px;border-bottom:1px solid var(--line);display:flex;gap:14px;align-items:flex-start}
.det-h svg{flex:none;color:var(--clay)}
.det-h h3{margin:3px 0 0;font-family:var(--f-ui);font-size:17px;font-weight:600;letter-spacing:.06em;text-transform:uppercase}
.det-b{padding:24px;display:flex;flex-direction:column;gap:20px}
.kv{display:grid;grid-template-columns:150px 1fr;gap:10px 18px;align-items:baseline}
.kv .v{font-size:13px;word-break:break-word}
.btn{display:inline-flex;align-items:center;gap:9px;background:var(--ink);color:var(--bg);font-family:var(--f-ui);font-size:11px;font-weight:700;letter-spacing:.18em;text-transform:uppercase;padding:12px 20px;border:1px solid var(--ink)}
.btn:hover{background:var(--clay);border-color:var(--clay);color:#fff}
.btn.ghost{background:transparent;color:var(--ink);border-color:var(--line-2)}
.btn.ghost:hover{border-color:var(--clay);color:var(--clay);background:transparent}
.btn.sm{padding:8px 13px;font-size:10px;letter-spacing:.14em}
.btn[disabled]{opacity:.42;cursor:default}

/* gestão */
.tabs{display:flex;gap:0;border-bottom:1px solid var(--line);margin-bottom:24px}
.tab{padding:11px 18px;font-family:var(--f-ui);font-size:11px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);border-bottom:2px solid transparent;margin-bottom:-1px}
.tab.on{color:var(--ink);border-bottom-color:var(--clay)}
.row{background:var(--surface);border:1px solid var(--line);padding:16px 18px;display:flex;gap:16px;align-items:flex-start;flex-wrap:wrap;margin-bottom:-1px}
.row-m{flex:1;min-width:210px}
.row-m h4{margin:0 0 4px;font-family:var(--f-ui);font-size:12.5px;font-weight:600;letter-spacing:.07em;text-transform:uppercase}
.row-m p{margin:0;font-size:12px;color:var(--muted)}
.row-a{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.perm{display:flex;flex-wrap:wrap;gap:7px;width:100%;border-top:1px solid var(--line);padding-top:12px}
.chip{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line-2);padding:5px 9px;font-family:var(--f-ui);font-size:9.5px;font-weight:600;letter-spacing:.11em;text-transform:uppercase;color:var(--muted);cursor:pointer}
.chip.on,
.chip:has(input:checked){border-color:var(--clay);color:var(--clay);background:color-mix(in srgb,var(--clay) 8%,transparent)}
.chip input{position:absolute;opacity:0;width:0;height:0}
.chip .bx{width:9px;height:9px;border:1px solid currentColor;flex:none}
.chip.on .bx,
.chip input:checked ~ .bx{background:var(--clay);border-color:var(--clay)}
/* desmarcado é desmarcado, mesmo que a tela tenha vindo com a marca do servidor */
.chip:has(input[type=checkbox]):not(:has(input:checked)){border-color:var(--line-2);color:var(--muted);background:none}
.chip:has(input[type=checkbox]):not(:has(input:checked)) .bx{background:none;border-color:currentColor}
.chip:hover{border-color:var(--clay)}
.chip:focus-within{outline:2px solid var(--clay);outline-offset:2px}

form.panel{background:var(--surface);border:1px solid var(--line);padding:22px;display:grid;grid-template-columns:repeat(auto-fit,minmax(215px,1fr));gap:16px;margin-bottom:22px}
form.panel .full{grid-column:1/-1}
.inp{display:flex;flex-direction:column;gap:7px}
.inp input,.inp select,.inp textarea{background:var(--bg);border:1px solid var(--line-2);padding:10px 12px;font-size:13px;border-radius:0;width:100%}
.inp input:focus,.inp select:focus,.inp textarea:focus{border-color:var(--clay);outline:none}
.inp textarea{resize:vertical;min-height:62px}
.acts{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.note{font-size:12px;color:var(--muted);border-left:2px solid var(--clay);padding-left:12px;max-width:62ch}
.toast{position:fixed;left:50%;bottom:22px;transform:translateX(-50%);background:var(--ink);color:var(--bg);font-family:var(--f-ui);font-size:10.5px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;padding:11px 18px;z-index:40}

@media (max-width:860px){
  .shell{grid-template-columns:1fr}
  .rail{position:fixed;inset:0 auto 0 0;width:min(84vw,286px);z-index:30;transform:translateX(-100%);transition:transform .18s ease}
  .rail.open{transform:none}
  .scrim{position:fixed;inset:0;background:rgba(0,0,0,.46);z-index:20}
  .burger{display:inline-flex}
  .bar,.wrap{padding-left:16px;padding-right:16px}
  .kv{grid-template-columns:1fr;gap:3px 0}
  .kv .lbl{margin-top:9px}
}

/* ---- menu lateral que abre e fecha ---- */
.rail-top{position:relative;display:flex;align-items:center;gap:10px}
.recolher{flex:none;margin-left:auto;width:26px;height:26px;line-height:1;
  border:1px solid var(--rail-line);background:none;color:var(--rail-muted);
  font-size:17px;cursor:pointer;display:grid;place-items:center;transition:transform .18s ease}
.recolher:hover{color:var(--rail-ink);border-color:#4a463f}

@media (min-width:861px){
  .shell{transition:grid-template-columns .18s ease}
  html.menu-fechado .shell{grid-template-columns:72px 1fr}
  html.menu-fechado .rail-mark,
  html.menu-fechado .nav-group,
  html.menu-fechado .rt,
  html.menu-fechado .nav-item .dot,
  html.menu-fechado .who-n,
  html.menu-fechado .who-c,
  html.menu-fechado .rail-acts,
  html.menu-fechado .ver{display:none}
  html.menu-fechado .rail-top{padding:18px 0;justify-content:center;min-height:63px}
  html.menu-fechado .recolher{margin:0;transform:rotate(180deg)}
  html.menu-fechado .nav-item{justify-content:center;padding:11px 0;gap:0}
  html.menu-fechado .rail-foot{padding:16px 0;align-items:center}
  html.menu-fechado .who{justify-content:center}
}
@media (max-width:860px){
  .recolher{display:none}
}

/* ---- ajustes da versão PHP ---- */
a{text-decoration:none}
.nav-item{text-decoration:none}
.card{text-decoration:none;color:inherit}
.code-in.txt{letter-spacing:.06em;font-size:15px;font-family:var(--f-txt)}
.code-in.pw{letter-spacing:.2em;font-size:15px}
.lead{margin:0;max-width:60ch;color:var(--ink-2)}
.ver{font-family:var(--f-ui);font-size:9px;letter-spacing:.16em;text-transform:uppercase;color:#4f4a43}
.aviso{border:1px solid var(--clay);border-left-width:2px;background:var(--surface);padding:12px 16px;margin-bottom:24px;font-family:var(--f-ui);font-size:11px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--clay)}
.scrim[hidden]{display:none}
.perm-bloco{display:flex;flex-direction:column;gap:12px;align-items:stretch}
.perm-linha{display:flex;gap:14px;align-items:flex-start;flex-wrap:wrap}
.perm-tit{flex:none;width:122px;font-family:var(--f-ui);font-size:9.5px;font-weight:600;
  letter-spacing:.16em;text-transform:uppercase;color:var(--muted);padding-top:9px}
.perm-itens{flex:1;min-width:220px;display:flex;flex-wrap:wrap;gap:8px}
.perm-linha .chip small{opacity:.6;font-size:9.5px;letter-spacing:.08em}
.perm-linha .chip small{margin-left:5px}
.perm-linha .chip.vazia{opacity:.55}
.perm-resumo{font-size:12.5px;color:var(--ink-2);padding-top:8px;display:block}
.perm-resumo.vazio{color:var(--muted);font-style:italic}
@media (max-width:640px){.perm-tit{width:100%;padding-top:0}}
.perm .btn{align-self:center}
form.panel .acts{align-items:center}
.row form{margin:0}

/* =========================================================
   MAPA DAS ÁREAS — tela inicial
   Desenho de linha: preto e branco, círculos frontais, traço de um pixel.
   Cada área é um anel vazado; o preenchimento corta a órbita por trás, que
   é o que deixa o traço limpo. Sem cor, sem brilho, sem fundo.
   Um preto só, --mapa-bg, usado no painel e em tudo que precisa ocultar
   linha: no tema escuro ele é o mesmo da página, e o painel some na página.
   ========================================================= */
.orbital{display:grid;grid-template-columns:minmax(0,1fr) 250px;gap:34px;align-items:center}

.mapa{
  --linha:#ffffff;
  --mapa-bg:#131211;
  position:relative;width:100%;max-width:660px;aspect-ratio:1 / 1;margin:0 auto;
  background:var(--mapa-bg);border:0;overflow:hidden;
}
.mapa-vazio{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;
  justify-content:center;gap:6px;color:#5c574f;text-align:center;padding:0 24px}
.mapa-vazio .lbl{color:#6d675d}
.mapa-vazio p{margin:0;font-size:12px}

.mapa-svg{position:absolute;inset:0;width:100%;height:100%;display:block}

.orbita{fill:none;stroke:var(--linha);stroke-width:1.1;opacity:.42}
.centro{fill:var(--mapa-bg);stroke:var(--linha);stroke-width:1.1;opacity:.42}

/* relações: invisíveis em repouso */
.liga{stroke:var(--linha);stroke-width:1;opacity:0;transition:opacity .22s ease}
.liga.apoio{stroke-dasharray:4 9}
.liga.aceso{stroke:var(--neon);opacity:.9}

.no{cursor:pointer;transition:opacity .22s ease}
.no .alvo{fill:transparent}
.no .anel{fill:var(--mapa-bg);stroke:var(--linha);stroke-width:1.4;transition:fill .18s ease, r .18s ease}
.no .rotulo-svg{fill:var(--linha);opacity:.6;transition:opacity .22s ease}
.no.morto .anel{stroke-dasharray:3 4;opacity:.55}
.no.morto{cursor:default;opacity:.6}
.no:hover .anel,.no:focus-visible .anel,.no.destacado .anel{
  fill:var(--neon);stroke:var(--neon);r:22;
  filter:drop-shadow(0 0 7px color-mix(in srgb, var(--neon) 62%, transparent))}
.no:hover .rotulo-svg,.no:focus-visible .rotulo-svg,.no.destacado .rotulo-svg{fill:var(--neon);opacity:1}
.no.apagado{opacity:.26}

.rotulo-svg{font-family:var(--f-ui);font-size:19px;font-weight:500;letter-spacing:3px;
  paint-order:stroke;stroke:var(--mapa-bg);stroke-width:5px;stroke-linejoin:round}

/* o wordmark, dentro do círculo do centro */
.sol{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);
  width:17%;display:flex;align-items:center;justify-content:center;
  color:#fff;pointer-events:none}
.sol .sol-mark{width:100%}

/* legenda */
.legenda{display:flex;flex-direction:column;gap:0;min-width:0}
.lg{display:flex;align-items:center;gap:11px;padding:10px 2px;border-bottom:1px solid var(--line);
  text-decoration:none;color:inherit}
.lg:hover{color:var(--neon-texto)}
.lg .pt{width:9px;height:9px;border-radius:50%;flex:none;border:1px solid var(--ink-2);background:transparent}
.lg:hover .pt{background:var(--neon-texto);border-color:var(--neon-texto)}
.lg.off .pt{border-style:dashed;border-color:var(--line-2)}
.lg .nm{font-family:var(--f-ui);font-size:11px;font-weight:600;letter-spacing:.11em;text-transform:uppercase}
.lg.off .nm{color:var(--muted)}
.lg .qt{margin-left:auto;font-size:11px;color:var(--muted)}
.lg:hover .qt{color:var(--neon-texto)}
.legenda .resumo{margin-top:16px;font-size:12.5px;color:var(--ink-2);line-height:1.6}
.legenda .resumo strong{font-family:var(--f-ui);color:var(--ink)}
.chave{margin-top:14px;display:flex;flex-direction:column;gap:7px}
.chave span{display:flex;align-items:center;gap:9px;font-family:var(--f-ui);font-size:9.5px;
  font-weight:600;letter-spacing:.13em;text-transform:uppercase;color:var(--muted)}
.chave i{width:20px;height:0;border-top:1px solid var(--ink-2);flex:none}
.chave i.apoio{border-top-style:dashed}

/* cabeçalho da área */
.cabeca-area{display:flex;align-items:center;gap:16px;border:1px solid var(--line);
  border-left:2px solid var(--clay);background:var(--surface);
  padding:16px 18px;margin-bottom:22px;flex-wrap:wrap}
.cabeca-area h3{margin:0;font-family:var(--f-ui);font-size:14px;font-weight:600;
  letter-spacing:.09em;text-transform:uppercase}
.cabeca-area p{margin:3px 0 0;font-size:12px;color:var(--muted)}
.cabeca-area .btn{margin-left:auto}

@media (max-width:1100px){
  .orbital{grid-template-columns:1fr;gap:26px}
  .mapa{max-width:540px}
}
@media (max-width:640px){
  .mapa{max-width:100%}
  .rotulo-svg{display:none}
}
