:root{
  --bg:#020306; --bg2:#06080d; --card:#080b12; --card2:#0c1019; --linha:#151a26; --linha2:#212838;
  --txt:#eef1f8; --sub:#98a0b5; --fraco:#5b6378;
  --voce:#ffd166; --visit:#22d3ee; --robo:#a78bfa; --nginx:#f472b6; --ssh:#fb923c;
  --app:#60a5fa; --banco:#34d399; --wpp:#25d366; --cache:#f87171; --tarefa:#fbbf24; --est:#c084fc;
  --ok:#4ade80; --alerta:#fbbf24; --erro:#f87171; --roxo:#a855f7; --azul:#3b82f6;
  --raio:3px;
}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--txt);font:14px/1.5 Inter,system-ui,-apple-system,"Segoe UI",sans-serif;-webkit-font-smoothing:antialiased}
body{background:radial-gradient(1200px 500px at 50% -20%,#1a1f3a22,transparent),var(--bg);min-height:100vh}
a{color:#93c5fd}
button,input{font:inherit}
.mono{font-family:"JetBrains Mono",ui-monospace,Consolas,monospace}
.meta{color:var(--fraco);font-size:12px}
.sub{color:var(--sub)}
[hidden]{display:none!important}

/* ---------- topo e navegação */
header.topo{position:sticky;top:0;z-index:10;display:flex;align-items:center;gap:14px;padding:12px 22px;background:#020306e6;backdrop-filter:blur(12px);border-bottom:1px solid var(--linha)}
.marca{display:flex;align-items:center;gap:10px;font-weight:800;font-size:16px;white-space:nowrap}
.marca svg{width:26px;height:26px}
.marca .ip{color:var(--sub);font-weight:500;font-size:13px}
.selo{display:inline-flex;align-items:center;gap:8px;padding:6px 12px;border-radius:3px;font-weight:700;font-size:12.5px;border:1px solid;cursor:pointer;white-space:nowrap;background:none}
.selo i{width:9px;height:9px;border-radius:1px;background:currentColor;box-shadow:0 0 0 0 currentColor;animation:pulso 1.8s infinite}
.selo.ok{color:var(--ok);border-color:#4ade8055;background:#4ade8012}
.selo.atencao{color:var(--alerta);border-color:#fbbf2455;background:#fbbf2412}
.selo.critico{color:var(--erro);border-color:#f8717166;background:#f8717116}
.selo.off{color:var(--fraco);border-color:var(--linha)}
.selo.off i{animation:none}
@keyframes pulso{0%{box-shadow:0 0 0 0 color-mix(in srgb,currentColor 60%,transparent)}70%{box-shadow:0 0 0 9px transparent}100%{box-shadow:0 0 0 0 transparent}}
.topo .direita{margin-left:auto;display:flex;align-items:center;gap:10px}
.relogio{color:var(--fraco);font-size:12px}
.btn{display:inline-flex;align-items:center;gap:7px;background:#0d111b;border:1px solid var(--linha2);color:var(--txt);padding:8px 14px;border-radius:3px;font-weight:600;font-size:13px;cursor:pointer;transition:.15s;text-decoration:none}
.btn:hover{border-color:#3a4560;background:#141a28}
.btn.primario{background:linear-gradient(90deg,var(--azul),var(--roxo));border-color:transparent;color:#fff}
.btn.primario:hover{filter:brightness(1.1)}
.btn.perigo{border-color:#f8717166;color:#fecaca}
.btn:disabled{opacity:.5;cursor:default}
nav.abas{display:flex;gap:4px;padding:10px 22px 0;overflow-x:auto;scrollbar-width:none;border-bottom:1px solid var(--linha)}
nav.abas::-webkit-scrollbar{display:none}
nav.abas button{background:none;border:0;color:var(--sub);padding:10px 14px 12px;font-weight:600;font-size:13.5px;cursor:pointer;border-bottom:2px solid transparent;white-space:nowrap;display:flex;align-items:center;gap:7px}
nav.abas button:hover{color:var(--txt)}
nav.abas button.ativo{color:#fff;border-bottom-color:var(--roxo)}
nav.abas .cont{font-size:11px;font-weight:700;padding:1px 7px;border-radius:3px;background:#f8717130;color:var(--erro)}
nav.abas .cont.a{background:#fbbf2430;color:var(--alerta)}
main{padding:18px 22px 48px}
.aba{display:none}.aba.ativa{display:block;animation:surge .25s ease}
@keyframes surge{from{opacity:0;transform:translateY(4px)}}

/* ---------- blocos */
.card{background:linear-gradient(170deg,var(--card),#05070c);border:1px solid var(--linha);border-radius:3px;padding:16px 18px;min-width:0}
.card+.card{margin-top:16px}
.card h2{margin:0 0 2px;font-size:15px;font-weight:700;display:flex;align-items:center;gap:8px}
.card h2 .dir{margin-left:auto;font-weight:500}
.card .ajuda{color:var(--sub);font-size:12.5px;margin:0 0 12px}
.grade2{display:grid;grid-template-columns:minmax(0,1fr) 400px;gap:16px}
.grade2 > div{min-width:0}
.grade-meio{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.graficos{display:grid;grid-template-columns:repeat(auto-fit,minmax(440px,1fr));gap:16px}
.graficos .card{margin:0}
.graficos canvas{width:100%!important;height:230px!important}
@media (max-width:1180px){.grade2{grid-template-columns:minmax(0,1fr)}}
@media (max-width:900px){.grade-meio{grid-template-columns:minmax(0,1fr)}}
@media (max-width:560px){main{padding:14px 16px 32px}header.topo{padding:10px 16px}nav.abas{padding:6px 12px 0}.graficos{grid-template-columns:minmax(0,1fr)}.esconde-cel{display:none!important}.marca .ip{display:none}}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(165px,1fr));gap:12px;margin-bottom:16px}
.kpi{background:linear-gradient(160deg,var(--card2),var(--card));border:1px solid var(--linha);border-radius:3px;padding:12px 14px 8px;position:relative;overflow:hidden;min-width:0}
.kpi .rot{color:var(--sub);font-size:12px;font-weight:600;display:flex;align-items:center;gap:6px}
.kpi .rot i{width:8px;height:8px;border-radius:1px;display:inline-block}
.kpi .val{font-size:24px;font-weight:800;margin:2px 0 0;letter-spacing:-.3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.kpi .det{color:var(--fraco);font-size:11.5px;min-height:16px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.kpi canvas{width:100%;height:34px;display:block;margin-top:4px}
.resumo{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-bottom:16px}
.resumo div{background:linear-gradient(160deg,var(--card2),var(--card));border:1px solid var(--linha);border-radius:3px;padding:14px;min-width:0}
.resumo b{display:block;font-size:26px;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.resumo span{color:var(--sub);font-size:12.5px}
table{width:100%;border-collapse:collapse;font-size:12.5px}
th{color:var(--fraco);font-weight:600;text-align:left;padding:7px 8px;border-bottom:1px solid var(--linha);font-size:11px;text-transform:uppercase;letter-spacing:.6px;white-space:nowrap}
td{padding:8px;border-bottom:1px solid #ffffff08;vertical-align:middle}
tr.parado td{opacity:.45}
.rolo{overflow-x:auto}
.barra{height:6px;border-radius:2px;background:#ffffff10;overflow:hidden;min-width:50px}
.barra i{display:block;height:100%;border-radius:2px;transition:width .6s}
.dot{width:9px;height:9px;border-radius:1px;display:inline-block;margin-right:6px;vertical-align:middle;flex:none}
.tag{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:600;padding:2px 8px;border-radius:3px;background:#ffffff10;color:var(--sub);white-space:nowrap}
.tag.voce{background:#ffd16626;color:var(--voce)}.tag.robo{background:#a78bfa22;color:var(--robo)}.tag.visitante{background:#22d3ee1f;color:var(--visit)}
.tag.ok{background:#4ade801f;color:var(--ok)}.tag.atencao{background:#fbbf2422;color:var(--alerta)}.tag.critico{background:#f8717122;color:var(--erro)}
.st{font:600 11px "JetBrains Mono",monospace;padding:2px 7px;border-radius:2px}
.s2{background:#4ade8022;color:var(--ok)}.s3{background:#60a5fa22;color:var(--app)}.s4{background:#fbbf2422;color:var(--alerta)}.s5,.s0{background:#f8717122;color:var(--erro)}
.vazio{color:var(--fraco);padding:18px 4px;text-align:center}
.tip{position:fixed;pointer-events:none;background:#05070cf7;border:1px solid var(--linha2);border-radius:3px;padding:9px 11px;font-size:12px;z-index:50;max-width:340px;display:none;box-shadow:0 12px 32px #000a;line-height:1.45}
.faixas{display:flex;gap:6px;flex-wrap:wrap}
.faixas button{background:var(--card);border:1px solid var(--linha);color:var(--sub);padding:7px 13px;border-radius:3px;font-weight:600;font-size:12.5px;cursor:pointer}
.faixas button.ativo{color:#fff;border-color:var(--roxo);background:#a855f722}
.linha-topo{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:14px}
.linha-topo h1{font-size:20px;margin:0}

/* ---------- saúde */
.painel-status{display:grid;grid-template-columns:auto 1fr;gap:18px;align-items:center;padding:20px 22px;border-radius:3px;border:1px solid;margin-bottom:16px}
.painel-status.ok{background:linear-gradient(120deg,#0f2a22,#0c1a2e);border-color:#4ade8040}
.painel-status.atencao{background:linear-gradient(120deg,#2d2410,#0c1a2e);border-color:#fbbf2450}
.painel-status.critico{background:linear-gradient(120deg,#3a1418,#0c1a2e);border-color:#f8717160}
.painel-status .icone{width:58px;height:58px;border-radius:3px;display:grid;place-items:center;font-size:28px}
.painel-status.ok .icone{background:#4ade8022}.painel-status.atencao .icone{background:#fbbf2422}.painel-status.critico .icone{background:#f8717122}
.painel-status h1{margin:0;font-size:21px}
.painel-status p{margin:3px 0 0;color:var(--sub)}
.problema{display:grid;grid-template-columns:4px 1fr auto;gap:12px;padding:12px 14px;border-radius:3px;background:#ffffff06;margin-bottom:8px}
.problema .faixa{border-radius:2px}
.problema.critico .faixa{background:var(--erro)}.problema.atencao .faixa{background:var(--alerta)}
.problema b{display:block}
.problema .det{color:var(--sub);font-size:12.5px;margin-top:2px}
.problema .quando{color:var(--fraco);font-size:11.5px;text-align:right;white-space:nowrap}
.tempo{position:relative;padding-left:22px}
.tempo:before{content:"";position:absolute;left:7px;top:4px;bottom:4px;width:2px;background:var(--linha)}
.ev-t{position:relative;padding:0 0 14px}
.ev-t:before{content:"";position:absolute;left:-19px;top:5px;width:10px;height:10px;border-radius:1px;background:var(--c,#64748b);box-shadow:0 0 0 3px var(--bg)}
.ev-t b{font-size:13px}
.ev-t .det{color:var(--sub);font-size:12px}
.ev-t .h{color:var(--fraco);font-size:11px}
.sites-saude{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:8px}
.ss{display:grid;grid-template-columns:auto 1fr auto;gap:4px 10px;align-items:center;padding:9px 11px;border-radius:3px;background:#ffffff06;border:1px solid transparent;min-width:0}
.ss.ruim{border-color:#f8717155;background:#f8717110}
.ss.meh{border-color:#fbbf2444}
.ss .n{font-weight:600;font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ss .i{grid-column:2/-1;color:var(--fraco);font-size:11.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ss .ms{font:600 11px "JetBrains Mono",monospace;color:var(--sub)}

/* ---------- ao vivo */
.mapa-rolo{overflow-x:auto;margin:0 -6px;padding:0 6px}
svg.fluxo{width:100%;display:block}
.col-titulo{fill:var(--fraco);font:700 10.5px Inter,sans-serif;letter-spacing:1.2px;text-transform:uppercase}
.no text{font:600 12px Inter,sans-serif;fill:#fff;pointer-events:none}
.no text.sub{font:500 10.5px "JetBrains Mono",monospace;fill:#ffffffa8}
.lig{fill:none;stroke-linecap:round;opacity:.36}
.lig.inferida{stroke-dasharray:4 6;opacity:.28}
.lig.perigo{stroke:#f87171!important;stroke-dasharray:6 5;opacity:.7}
.lig.quente{opacity:.62}
.legenda{display:flex;flex-wrap:wrap;gap:8px 16px;margin-top:10px;color:var(--sub);font-size:12px}
.legenda span{display:flex;align-items:center;gap:6px}.legenda i{width:10px;height:10px;border-radius:2px;display:inline-block}
.feed{max-height:560px;overflow:auto;margin:0 -6px;padding:0 6px}
.ev{display:grid;grid-template-columns:54px 1fr auto;gap:8px;align-items:center;padding:7px 8px;border-radius:3px;font-size:12.5px;animation:entra .5s ease}
.ev:nth-child(odd){background:#ffffff05}
.ev.voce{background:#ffd16612;box-shadow:inset 3px 0 0 var(--voce)}
@keyframes entra{from{background:#60a5fa33;transform:translateX(-6px)}}
.ev .h{color:var(--fraco);font-size:11px}
.ev .cam{color:var(--sub);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;font-size:11.5px}
.transf{display:grid;grid-template-columns:1fr auto;gap:3px 10px;padding:9px 10px;border-radius:3px;background:#ffffff06;margin-bottom:6px}
.transf.voce{background:#ffd16612;box-shadow:inset 3px 0 0 var(--voce)}
.transf .taxa{font:600 12px "JetBrains Mono",monospace;text-align:right;white-space:nowrap}
.transf .l2{grid-column:1/-1}
.d{color:var(--visit)}.u{color:var(--nginx)}

/* ---------- inventário */
.dominio{margin-bottom:18px}
.dominio h3{font-size:13px;margin:0 0 8px;display:flex;align-items:center;gap:8px}
.sites{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:10px}
.site{background:#ffffff06;border:1px solid var(--linha);border-left:4px solid var(--c);border-radius:3px;padding:10px 12px;min-width:0}
.site a{color:var(--txt);font-weight:600;text-decoration:none;word-break:break-all}
.site a:hover{text-decoration:underline}
.site .para{color:var(--sub);font-size:12px;margin-top:4px;display:flex;flex-wrap:wrap;gap:5px;align-items:center}
.projetos{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:12px}
.proj{background:#ffffff06;border:1px solid var(--linha);border-top:3px solid var(--c);border-radius:3px;padding:12px}
.proj h4{margin:0 0 8px;font-size:14px}
.proj .ct{display:grid;grid-template-columns:1fr auto;gap:2px 8px;padding:6px 0;border-top:1px solid #ffffff08;font-size:12.5px}
.proj .ct small{color:var(--fraco);grid-column:1/-1}
.pasta{display:grid;grid-template-columns:minmax(0,1fr) 90px;gap:4px 12px;align-items:center;margin-bottom:8px;font-size:12.5px}
.pasta .barra{grid-column:1/-1;height:8px}
.pasta .n{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.calor{display:grid;grid-template-columns:34px repeat(24,1fr);gap:3px;font-size:10.5px;color:var(--fraco)}
.calor div{height:20px;border-radius:2px}
.calor .r{background:none;display:flex;align-items:center}

/* ---------- projetos */
.lista-proj{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px;margin-bottom:18px}
.cartao-proj{text-align:left;background:linear-gradient(160deg,var(--card2),var(--card));border:1px solid var(--linha);border-top:3px solid var(--c);border-radius:3px;padding:14px 16px;cursor:pointer;color:var(--txt);transition:.15s}
.cartao-proj:hover{border-color:#3d53a0;transform:translateY(-1px)}
.cartao-proj.ativo{box-shadow:0 0 0 2px var(--c)}
.cartao-proj h3{margin:0 0 2px;font-size:15px;display:flex;align-items:center;gap:8px}
.cartao-proj .nums{display:flex;gap:16px;margin-top:10px}
.cartao-proj .nums b{display:block;font-size:18px}
.cartao-proj .nums span{color:var(--fraco);font-size:11.5px}
.mapa-br{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:16px}
@media (max-width:980px){.mapa-br{grid-template-columns:minmax(0,1fr)}}
svg.brasil{width:100%;height:auto;display:block;max-height:640px}
.uf{stroke:#0b1122;stroke-width:1;transition:opacity .15s}
.uf:hover{opacity:.8}
.bolha{fill:#ffd166;fill-opacity:.55;stroke:#ffd166;stroke-width:1;pointer-events:all}
.escala{display:flex;align-items:center;gap:8px;color:var(--fraco);font-size:11px;margin-top:6px}
.escala .g{height:8px;flex:1;border-radius:2px;background:linear-gradient(90deg,#1b2548,#3b82f6,#a855f7,#f472b6,#ffd166)}
.ranking .item{display:grid;grid-template-columns:28px minmax(0,1fr) auto;gap:8px;align-items:center;padding:6px 0;border-bottom:1px solid #ffffff08;font-size:12.5px}
.ranking .item .b{grid-column:2/-1}
.ranking .pos{color:var(--fraco);font-weight:700;text-align:center}

/* ---------- segurança */
.veredito{display:grid;grid-template-columns:auto 1fr auto;gap:18px;align-items:center;padding:22px;border-radius:3px;border:1px solid;margin-bottom:16px}
.veredito.tranquilo{background:linear-gradient(120deg,#0f2a22,#0c1a2e);border-color:#4ade8040}
.veredito.suspeito{background:linear-gradient(120deg,#2d2410,#0c1a2e);border-color:#fbbf2450}
.veredito.ataque{background:linear-gradient(120deg,#451419,#140c2e);border-color:#f87171;animation:alarme 2s infinite}
.veredito.carregando{background:var(--card);border-color:var(--linha)}
@keyframes alarme{50%{box-shadow:0 0 0 4px #f8717130}}
.veredito .icone{font-size:34px;width:64px;height:64px;display:grid;place-items:center;border-radius:3px;background:#ffffff10}
.veredito h1{margin:0;font-size:22px}
.veredito p{margin:4px 0 0;color:var(--sub)}
@media (max-width:700px){.veredito{grid-template-columns:auto 1fr}.veredito .acao{grid-column:1/-1}}
.sinal{padding:12px 14px;border-radius:3px;background:#ffffff06;margin-bottom:8px;border-left:4px solid var(--c)}
.sinal b{display:block}
.sinal p{margin:3px 0 0;color:var(--sub);font-size:12.5px}
.ruido li{color:var(--sub);font-size:12.5px;margin-bottom:4px}
.ajuda-claude{background:#0a1022;border:1px dashed var(--linha2);border-radius:3px;padding:12px;font:12px/1.5 "JetBrains Mono",monospace;white-space:pre-wrap;max-height:260px;overflow:auto;color:#c7d2fe}
.passos{counter-reset:p;list-style:none;padding:0;margin:0}
.passos li{counter-increment:p;position:relative;padding:0 0 12px 36px;color:var(--sub);font-size:13px}
.passos li:before{content:counter(p);position:absolute;left:0;top:-1px;width:24px;height:24px;border-radius:3px;background:#a855f733;color:#e9d5ff;display:grid;place-items:center;font-weight:700;font-size:12px}
.passos b{color:var(--txt)}
code{font-family:"JetBrains Mono",monospace;background:#ffffff10;padding:1px 6px;border-radius:2px;font-size:12px}

/* ---------- conta e login */
.caixa-login{min-height:100vh;display:grid;place-items:center;padding:24px 16px}
.cartao-login{width:100%;max-width:420px;background:linear-gradient(170deg,#0b0e16,#05070b);border:1px solid var(--linha2);border-radius:3px;padding:28px 26px;box-shadow:0 30px 80px #0009}
.cartao-login .marca{margin-bottom:6px;font-size:18px}
.cartao-login h1{font-size:19px;margin:18px 0 4px}
.cartao-login p{color:var(--sub);margin:0 0 16px;font-size:13.5px}
.campo{display:block;margin-bottom:14px}
.campo span{display:block;font-size:12.5px;font-weight:600;color:var(--sub);margin-bottom:6px}
.campo input{width:100%;background:#030407;border:1px solid var(--linha2);border-radius:3px;color:var(--txt);padding:12px 13px;font-size:15px;outline:none;transition:.15s}
.campo input:focus{border-color:var(--roxo);box-shadow:0 0 0 3px #a855f733}
.campo input.codigo{font:600 24px "JetBrains Mono",monospace;letter-spacing:8px;text-align:center}
.erro-msg{background:#f8717118;border:1px solid #f8717155;color:#fecaca;border-radius:3px;padding:9px 12px;font-size:13px;margin-bottom:14px}
.ok-msg{background:#4ade8014;border:1px solid #4ade8044;color:#bbf7d0;border-radius:3px;padding:9px 12px;font-size:13px;margin-bottom:14px}
.cartao-login .btn{width:100%;justify-content:center;padding:12px}
.medidor{height:6px;border-radius:2px;background:#ffffff10;overflow:hidden;margin:-6px 0 6px}
.medidor i{display:block;height:100%;width:0;transition:.25s}
.dica{color:var(--fraco);font-size:12px;margin:-2px 0 14px}
.qr{background:#fff;border-radius:3px;padding:12px;width:max-content;margin:0 auto 12px}
.qr svg,.qr img{display:block;width:200px;height:200px}
.segredo{font:600 13px "JetBrains Mono",monospace;text-align:center;background:#070d1d;border:1px solid var(--linha2);border-radius:3px;padding:10px;word-break:break-all;margin-bottom:14px;user-select:all}
.codigos{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:14px}
.codigos div{font:600 14px "JetBrains Mono",monospace;background:#070d1d;border:1px solid var(--linha2);border-radius:3px;padding:8px;text-align:center}
.etapas{display:flex;gap:6px;margin:14px 0 0}
.etapas i{flex:1;height:4px;border-radius:2px;background:var(--linha2)}
.etapas i.feito{background:linear-gradient(90deg,var(--azul),var(--roxo))}
.rodape-login{color:var(--fraco);font-size:11.5px;text-align:center;margin-top:16px}
.modal{position:fixed;inset:0;background:#000a;display:grid;place-items:center;z-index:40;padding:16px}
.modal .cartao-login{max-width:460px}

/* ---------- cena ao vivo */
.grade3{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr) minmax(0,1fr);gap:16px;margin-top:16px}
.grade3 .card{margin:0}
@media (max-width:1300px){.grade3{grid-template-columns:minmax(0,1fr)}}
.cena-card{padding:16px 18px 10px}
.cena-rolo{overflow-x:auto;margin:0 -8px;padding:0 8px}
.cena{position:relative;min-width:1200px;border-radius:3px;background:radial-gradient(900px 420px at 60% 50%,#16183a44,transparent),#010204;border:1px solid #0f1320}
.cena-svg,.cena-canvas{position:absolute;left:0;top:0;display:block}
.cena-canvas{pointer-events:none}
.cz-rotulo{fill:#3b4a78;font:700 10.5px Inter,sans-serif;letter-spacing:2.5px}
.cz-titulo{fill:#dbeafe;font:700 14px Inter,sans-serif}
.cz-sub{fill:#8491bb;font:500 10.5px "JetBrains Mono",monospace}
.cz-vivo{fill:#fde68a;font:600 10.5px "JetBrains Mono",monospace}
.cz-dom-nome{fill:#fff;font:700 13px Inter,sans-serif}
.cz-vis-nome{fill:#fff;font:600 12px Inter,sans-serif}
.cz-rack-titulo{fill:#fff;font:800 17px Inter,sans-serif;letter-spacing:.3px}
.cz-rack-sub{fill:#e0e7ffcc;font:500 11px "JetBrains Mono",monospace}
.cz-gauge{fill:#fff;font:700 10px "JetBrains Mono",monospace}
.cz-gauge-rot{fill:#e0e7ffaa;font:700 8.5px Inter,sans-serif;letter-spacing:1px}
.cz-unid{fill:#e2e8f0;font:800 11px Inter,sans-serif;letter-spacing:1.6px}
.cz-gav-nome{fill:#fff;font:700 12.5px Inter,sans-serif}
.cz-num{fill:#cbd5e1;font:600 11px "JetBrains Mono",monospace}
.cz-porta{fill:#cbd5e1;font:700 10px "JetBrains Mono",monospace}
.cz-glifo{font:700 13px "JetBrains Mono",monospace;pointer-events:none}
.cz-ext-nome{fill:#fff;font:700 12px Inter,sans-serif}
.cz-trilho{fill:none;stroke-width:1.2;stroke-opacity:.14;stroke-dasharray:3 5}
.cz-fluxo{fill:none;stroke-opacity:.22;stroke-linecap:round}
.cz-chip,.cz-vis,.cz-dom,.cz-ext{cursor:help}
.cz-chip:hover rect{stroke-width:2.4}

/* ---------- porta de cofre (login) */
body.cofre{background:#000;overflow-x:hidden;min-height:100svh}
#vazio{position:fixed;inset:0;z-index:0}
.varredura{position:fixed;left:0;right:0;height:140px;top:-140px;z-index:1;pointer-events:none;background:linear-gradient(180deg,transparent,#a78bfa08 60%,#c4b5fd14 98%,transparent);animation:varre 9s linear infinite}
@keyframes varre{to{transform:translateY(calc(100svh + 280px))}}
.porta{position:relative;z-index:2;min-height:100svh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px 16px 60px;transition:opacity .45s ease,filter .45s ease}
body.abrindo .porta{opacity:0;filter:blur(8px)}
.porta #etapa{width:100%;max-width:340px}
.selo-cofre{width:124px;height:124px;margin-bottom:34px;filter:drop-shadow(0 0 18px #7c3aed55)}
.selo-cofre svg{width:100%;height:100%;overflow:visible}
.anel{fill:none;stroke:#c4b5fd;transform-origin:60px 60px}
.a1{stroke-width:.6;stroke-dasharray:2 5;opacity:.5;animation:gira 40s linear infinite}
.a2{stroke-width:1;stroke-dasharray:60 12 8 12;opacity:.35;animation:gira 26s linear infinite reverse}
.a3{stroke-width:.8;opacity:.18}
.cadeado{fill:none;stroke:#e9e5ff;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;opacity:.9}
.nucleo{fill:#a78bfa;animation:nucleo 2.8s ease-in-out infinite}
@keyframes gira{to{transform:rotate(360deg)}}
@keyframes nucleo{50%{fill:#f5f3ff}}
.campo-cofre{display:block;margin-bottom:12px}
.campo-cofre input{width:100%;background:transparent;border:0;border-bottom:1px solid #26243a;color:#f5f3ff;padding:12px 2px;font:500 15px "JetBrains Mono",monospace;letter-spacing:.06em;outline:none;transition:border-color .25s;border-radius:0}
.campo-cofre input.codigo{font-size:24px;letter-spacing:.5em;text-align:center}
.campo-cofre input::placeholder{color:#4a4760;letter-spacing:.3em;text-transform:uppercase;font-size:11px}
.campo-cofre input:focus{border-bottom-color:#a78bfa}
.btn-cofre{width:100%;margin-top:18px;display:flex;align-items:center;justify-content:space-between;background:transparent;border:1px solid #2a2740;color:#d8d3f5;padding:13px 16px;border-radius:2px;font:500 11px "JetBrains Mono",monospace;letter-spacing:.35em;text-transform:uppercase;cursor:pointer;transition:.25s}
.btn-cofre i{font-style:normal;letter-spacing:0;font-size:15px;transition:transform .25s}
.btn-cofre:hover{border-color:#a78bfa;color:#fff;box-shadow:0 0 24px #7c3aed33 inset}
.btn-cofre:hover i{transform:translateX(4px)}
.btn-cofre:disabled{opacity:.4;cursor:default}
.cofre .erro-msg{background:transparent;border:0;border-left:2px solid #f87171;border-radius:0;color:#fca5a5;font:500 12px "JetBrains Mono",monospace;padding:4px 10px}
.cofre .ok-msg{background:transparent;border:0;border-left:2px solid #4ade80;border-radius:0}
.t-cofre{font:500 12px "JetBrains Mono",monospace;letter-spacing:.4em;text-transform:uppercase;color:#c4b5fd;text-align:center;margin:0 0 8px}
.t-sub{font:500 11px "JetBrains Mono",monospace;letter-spacing:.3em;text-transform:uppercase;color:#6b6788;text-align:center;margin:0 0 14px}
.cofre #etapa p{color:#8a86a6;text-align:center;font-size:13px}
.cofre .passos li{color:#8a86a6}
.cofre .codigos div,.cofre .segredo{background:#05040a;border-color:#221f33}
.cofre .etapas{max-width:340px;width:100%;margin-top:26px}
.cofre .etapas i{height:1px;background:#1c1a2b}
.cofre .etapas i.feito{background:#a78bfa}
.cofre .dica,.cofre .dica a{color:#57536f;font-size:11.5px}
.rodape-cofre{position:fixed;left:0;right:0;bottom:18px;z-index:2;display:flex;justify-content:center;gap:10px;color:#35324a;font-size:10px;letter-spacing:.25em;text-transform:uppercase}
@media (max-width:560px){.rodape-cofre{gap:6px;font-size:9px;letter-spacing:.15em}}

/* etiquetas e marcadores sóbrios */
.tag{border-radius:2px;letter-spacing:.04em;text-transform:uppercase;font-size:10.5px}
.cc{display:inline-block;font:600 10px "JetBrains Mono",monospace;padding:1px 4px;border:1px solid var(--linha2);color:var(--sub);border-radius:2px;margin-right:5px;vertical-align:1px}
.icone.txt{font:800 12px "JetBrains Mono",monospace;letter-spacing:.08em}
nav.abas button{text-transform:uppercase;letter-spacing:.09em;font-size:11.5px}
.card h2{text-transform:uppercase;letter-spacing:.09em;font-size:12px;color:#cfd5e6}
.cz-glifo{font:700 8.5px "JetBrains Mono",monospace!important;letter-spacing:.04em}

/* ---------- mapas ao vivo (estilo grafo) */
.mapas2{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:14px;max-width:1700px;margin:0 auto}
@media (max-width:1100px){.mapas2{grid-template-columns:minmax(0,1fr)}}
.mapa-caixa{background:#020306;border:1px solid #10141f;border-radius:3px;padding:10px;position:relative}
.mapa-tit{position:absolute;left:12px;top:9px;font:600 10px "JetBrains Mono",monospace;letter-spacing:.25em;color:#3a4257}
svg.mapa-vivo{width:100%;height:auto;max-height:460px;display:block;margin:0 auto}
.mv-uf-rot{fill:#5b6480;font:600 10px Inter,sans-serif;letter-spacing:.06em;pointer-events:none}
.mv-lig{fill:none;stroke:#e2e8f0;stroke-width:.8}
.mv-no{cursor:pointer}
.mv-halo{fill:none;stroke-width:.8;opacity:.25}
.mv-no.recente .mv-halo{opacity:.45}
.mv-rot-p{fill:#8b93a9;font:500 10px Inter,sans-serif;pointer-events:none;paint-order:stroke;stroke:#020306;stroke-width:3px}
.mv-serv{fill:#a78bfa}
.mv-serv-halo{fill:#a78bfa;opacity:.08}
.mv-rot-serv{fill:#ddd6fe;font:700 11px Inter,sans-serif;letter-spacing:.12em}
svg.focado .mv-no:not(.ativo){opacity:.12!important}
svg.focado .mv-lig:not(.ativo){stroke-opacity:.03!important}
svg.focado .mv-lig.ativo{stroke:#fff;stroke-opacity:.9!important;stroke-width:1.2}
svg.focado .mv-no.ativo text{fill:#fff}
tr.clicavel{cursor:pointer}
tr.clicavel:hover td{background:#ffffff06}
tr.selecionado td{background:#a78bfa12}
.vivo-n{font:700 11px "JetBrains Mono",monospace;color:#4ade80}
.tag.deploy{background:#fb923c22;color:#fb923c}

.mv-palco{position:relative;width:100%;max-height:460px;margin:0 auto}
.mv-palco canvas,.mv-palco svg{position:absolute;inset:0;width:100%;height:100%}
.mv-palco svg.mapa-vivo{max-height:none}
.mv-brilho{opacity:.16}
.mv-serv-brilho{fill:#a78bfa;opacity:.22}
.mapa-caixa .mv-palco{max-width:calc(460px * 1000 / 470)}
.mapa-caixa .mv-palco:has(svg.brasil){max-width:calc(460px * 1000 / 620)}
.cena{box-shadow:0 0 0 1px #0f1320, 0 30px 80px -40px #4c1d9555 inset}
