/* ============================================================
   Paco Observability — component styles (v1.9.0)
   Tokens live in tokens.css
   ============================================================ */

*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{
  background:var(--bg);
  color:var(--text);
  font-family:var(--font-body);
  font-size:13.5px;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
::-webkit-scrollbar{width:9px;height:9px}
::-webkit-scrollbar-thumb{background:var(--border);border-radius:20px}
a{color:inherit;text-decoration:none}

.ph{line-height:1;flex:none;display:inline-flex;align-items:center;justify-content:center}

/* Controles clicáveis: sem caret/seleção de texto no Chrome */
.nav a,
.chip,
.pill,
.icon-btn,
.mini-btn,
.btn,
.demo-btn,
.kpi-click,
.alert,
.host-row,
.user-row,
.dash-card,
.cert-row,
.modal-x,
.pass-toggle,
.lg-link,
.dh-arc-card,
#btn-refresh,
#nav-settings{
  user-select:none;
  -webkit-user-select:none;
}

.app{display:grid;grid-template-columns:236px 1fr;min-height:100vh}

/* SIDEBAR */
.side{
  border-right:1px solid var(--border);
  background:var(--surface);
  padding:14px 10px;
  position:sticky;top:0;height:100vh;
  display:flex;flex-direction:column;gap:2px;
}
.brand{display:flex;align-items:center;gap:10px;padding:4px 8px 16px}
.logo-mark{width:40px;height:40px;flex:none;display:grid;place-items:center;background:#050505;border-radius:4px;padding:2px;overflow:hidden}
.logo-mark img{width:100%;height:100%;object-fit:contain;display:block}
.brand-txt b{font-family:var(--font-disp);font-weight:600;font-size:14.5px;display:block;line-height:1.15;letter-spacing:0}
.brand-txt span{font-size:11px;color:var(--text-3);letter-spacing:.02em}
.nav-label{font-size:11px;color:var(--text-3);padding:12px 10px 4px;font-weight:500}
.nav{position:relative}
.nav a{
  display:flex;align-items:center;gap:10px;
  padding:7px 10px;border-radius:4px;
  color:var(--text-2);font-weight:500;font-size:13px;
  transition:background var(--dur-fast), color var(--dur-fast);
  position:relative;cursor:pointer;border-left:2px solid transparent;
}
.nav a .ph{font-size:16px;opacity:.85}
.nav a:hover{background:var(--surface-2);color:var(--text)}
.nav a.active{background:transparent;color:var(--text);border-left-color:var(--accent-solid)}
.nav a.active .ph{color:var(--accent)}
.nav-ind{
  position:absolute;left:-14px;width:3px;border-radius:0 4px 4px 0;
  background:var(--accent-solid);pointer-events:none;
}
.side-foot{margin-top:auto;border-top:1px solid var(--border-soft);padding-top:14px}
.settings-status{display:flex;flex-direction:column;gap:14px}
.settings-conn{
  display:flex;align-items:center;gap:10px;padding:12px 14px;
  border-radius:11px;background:var(--surface-2);border:1px solid var(--border-soft);
  max-width:320px;
}
.settings-conn .dot{width:8px;height:8px;border-radius:50%;background:var(--ok);animation:pulse 2.4s infinite;flex:none}
.settings-conn .dot.off{background:var(--text-3);animation:none}
.settings-conn small{display:block;color:var(--text-3);font-size:10.5px}
.settings-conn b{font-size:12px;font-weight:600}
.settings-badges{display:flex;gap:12px;flex-wrap:wrap}
.settings-lead{color:var(--text-3);font-size:12.5px;margin:0 0 16px}
.settings-form label{display:block;font-size:11px;color:var(--text-2);margin:10px 0 6px;font-weight:500}
.settings-form input,.settings-form select{
  width:100%;background:var(--surface-2);border:1px solid var(--border);
  border-radius:9px;padding:9px 12px;color:var(--text);font-size:13px;
}
.settings-form input:focus,.settings-form select:focus{border-color:var(--accent-solid);outline:none}
.settings-form .pass-field input{padding-right:42px}
.settings-actions{display:flex;align-items:center;gap:10px;margin-top:18px;padding-top:16px;border-top:1px solid var(--border-soft)}
@keyframes pulse{0%,100%{box-shadow:0 0 0 3px rgba(16,185,129,.22)}50%{box-shadow:0 0 0 7px rgba(16,185,129,0)}}
.ver{font-family:var(--font-mono);font-size:10px;color:var(--text-3);text-align:center;margin-top:10px}

/* MAIN */
.main{min-width:0;padding:0 22px 32px}
.demobar{
  display:none;align-items:center;gap:10px;
  background:var(--accent-soft);border:1px solid var(--accent-line);
  color:var(--accent);border-radius:11px;padding:10px 14px;margin-top:16px;font-size:12.5px;
}
.demobar.show{display:flex}
.demobar .ph{font-size:16px}
.demobar b{color:var(--accent-hover)}
.demo-btn{
  margin-left:auto;background:var(--accent-solid);color:var(--accent-ink);
  border:none;border-radius:8px;padding:6px 12px;
  font-family:var(--font-body);font-weight:600;font-size:12px;cursor:pointer;
}
.demo-btn:hover{background:var(--accent-hover)}

.topbar{
  display:flex;align-items:center;gap:16px;
  padding:18px 0 16px;margin-bottom:6px;
}
.page-h h1{font-family:var(--font-disp);font-size:20px;font-weight:600;letter-spacing:0}
.page-h p{color:var(--text-3);font-size:12.5px;margin-top:2px}
.top-actions{margin-left:auto;display:flex;align-items:center;gap:10px}

.search{
  display:flex;align-items:center;gap:8px;
  background:var(--surface);border:1px solid var(--border);
  border-radius:4px;padding:6px 10px;width:260px;color:var(--text-3);
}
.search input{background:none;border:none;outline:none;color:var(--text);font-family:var(--font-body);font-size:13px;width:100%}
.search .ph{font-size:15px}
.search.full{width:100%}

.pill{
  display:flex;align-items:center;gap:8px;
  background:var(--surface);border:1px solid var(--border);
  border-radius:4px;padding:6px 10px;font-size:12.5px;font-weight:500;
  cursor:pointer;transition:background var(--dur-fast), border-color var(--dur-fast);
  white-space:nowrap;
}
.pill:hover{border-color:var(--accent-line);background:var(--surface-2)}
.pill .ph{font-size:15px;opacity:.85}
.pill.live{color:var(--ok);cursor:default}
.pill.live .dot{width:7px;height:7px;border-radius:50%;background:var(--ok);animation:pulse 2s infinite}

.icon-btn{
  display:inline-grid;place-items:center;
  width:32px;height:32px;border-radius:4px;
  background:var(--surface);border:1px solid var(--border);
  color:var(--text-2);cursor:pointer;
  transition:background var(--dur-fast), border-color var(--dur-fast), color var(--dur-fast);
}
.icon-btn:hover{background:var(--surface-2);color:var(--accent);border-color:var(--accent-line)}
.icon-btn .ph{font-size:18px}
.icon-btn:focus-visible,.pill:focus-visible,.btn:focus-visible,.chip:focus-visible,.mini-btn:focus-visible,.nav a:focus-visible{
  outline:none;box-shadow:var(--ring);
}

/* KPI / CARDS */
.kpis{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin-bottom:12px}
.kpis-4{grid-template-columns:repeat(4,1fr)}
#kpis{grid-template-columns:repeat(6,1fr)}
.kpi{
  background:var(--surface);
  border:1px solid var(--border-soft);
  border-radius:var(--r-lg);
  box-shadow:var(--shadow-sm);
  padding:14px 14px 12px;
  position:relative;overflow:hidden;
}
.kpi-click{
  cursor:pointer;
  transition:border-color var(--dur-fast), box-shadow var(--dur-fast), transform var(--dur-fast);
}
.kpi-click:hover{border-color:var(--accent-line);box-shadow:var(--shadow-sm)}
.kpi-click:active{transform:scale(.985)}
.kpi-click.on{
  border-color:var(--accent-solid);
  box-shadow:0 0 0 1px var(--accent-solid), var(--shadow-sm);
}
.kpi-click:focus-visible{outline:2px solid var(--accent-solid);outline-offset:2px}
.kpi .k-top{display:flex;align-items:center;justify-content:space-between}
.kpi .k-lbl{font-size:11.5px;color:var(--text-2);font-weight:500}
.kpi .k-ic{
  width:26px;height:26px;border-radius:4px;
  display:grid;place-items:center;
  background:var(--accent-soft);color:var(--accent);
}
.kpi .k-ic .ph{font-size:16px}
.kpi.accent-ok .k-ic{background:rgba(16,185,129,.12);color:var(--ok)}
.kpi.accent-crit .k-ic{background:rgba(239,68,68,.12);color:var(--crit)}
.kpi.accent-warn .k-ic{background:rgba(217,119,6,.12);color:var(--warn)}
.kpi.accent-paco .k-ic{background:var(--accent-soft);color:var(--accent)}
.kpi .k-val{
  font-family:var(--font-mono);font-size:22px;font-weight:500;
  margin-top:10px;letter-spacing:0;line-height:1;
  font-variant-numeric:tabular-nums;
}
.kpi .k-val small{font-size:15px;color:var(--text-3);font-weight:500}
.kpi .k-sub{margin-top:8px;font-size:11.5px;color:var(--text-3);display:flex;align-items:center;gap:5px;flex-wrap:wrap}

.charts{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:16px}
.charts-4{grid-template-columns:1fr 1fr}
.panel{
  background:var(--surface);
  border:1px solid var(--border-soft);
  border-radius:var(--r-lg);
  box-shadow:var(--shadow-sm);
  overflow:hidden;margin-top:0;
}
.panel+.panel,.charts+.panel,.view .panel{margin-bottom:16px}
.p-head{
  display:flex;align-items:center;gap:10px;
  padding:15px 18px;min-height:52px;
  border-bottom:1px solid var(--border-soft);
}
.p-head h3{font-family:var(--font-disp);font-size:14.5px;font-weight:600}
.p-head .src{font-family:var(--font-mono);font-size:10px;padding:2px 7px;border-radius:var(--r-pill)}
.src.zbx{color:var(--crit);background:rgba(239,68,68,.12);border:1px solid rgba(239,68,68,.25)}
.src.grf{color:var(--info);background:rgba(124,140,248,.12);border:1px solid rgba(124,140,248,.25)}
.src.eveo{color:var(--accent-solid);background:rgba(39,120,175,.12);border:1px solid rgba(39,120,175,.28)}
.p-head .r{margin-left:auto;display:flex;gap:6px}
.chip{
  font-size:11px;color:var(--text-2);border:1px solid var(--border);
  border-radius:var(--r-pill);padding:5px 10px;cursor:pointer;
  transition:background var(--dur-fast), color var(--dur-fast), border-color var(--dur-fast);
}
.chip:hover{background:var(--surface-2);color:var(--text)}
.chip.on{color:var(--accent-ink);background:var(--accent-solid);border-color:var(--accent-solid);font-weight:600}
.chip .ph{font-size:12px;margin-right:4px}
.p-body{padding:16px 18px}
.chart-wrap{position:relative;height:190px}
.chart-wrap.tall{height:230px}

/* ALERTS */
.alerts{max-height:none;overflow:visible}
.alerts.tall{max-height:none}
.full-panel{grid-column:1 / -1}
.full-panel .alerts{max-height:none}

/* PAGER */
.pager{
  display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;
  padding:12px 18px;border-top:1px solid var(--border-soft);
  background:var(--surface);
}
.pager[hidden]{display:none !important}
.pager-info{font-size:12px;color:var(--text-3);font-variant-numeric:tabular-nums}
.pager-btns{display:flex;align-items:center;gap:8px}
.pager-page{font-size:12px;color:var(--text-2);font-variant-numeric:tabular-nums;min-width:4.5em;text-align:center}
.pager .btn[disabled]{opacity:.4;cursor:not-allowed}
.modal-pager{border-radius:0 0 var(--r-lg) var(--r-lg);flex:none}
.alert{
  display:flex;gap:12px;padding:13px 18px;
  border-bottom:1px solid var(--border-soft);
  cursor:pointer;transition:background var(--dur-fast);
}
.alert:hover{background:var(--surface-2)}
.alert .sev{width:3px;border-radius:3px;flex:none}
.sev.disaster{background:var(--disaster)}.sev.high{background:var(--crit)}.sev.warn{background:var(--warn)}.sev.info{background:var(--info)}
.alert .a-main{min-width:0;flex:1}
.alert .a-title{font-size:13px;font-weight:600;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.a-title .tag{font-family:var(--font-mono);font-size:9.5px;text-transform:uppercase;padding:1px 6px;border-radius:5px}
.tag.disaster{color:var(--disaster);background:rgba(190,18,60,.14)}
.tag.high{color:var(--crit);background:rgba(239,68,68,.13)}
.tag.warn{color:var(--warn);background:rgba(245,158,11,.13)}
.tag.info{color:var(--info);background:rgba(124,140,248,.13)}
.alert .a-meta{font-size:11.5px;color:var(--text-3);margin-top:4px;display:flex;gap:12px;flex-wrap:wrap;font-family:var(--font-mono)}
.alert .a-meta b{color:var(--text-2);font-weight:500}
.alert .a-age{font-family:var(--font-mono);font-size:11px;color:var(--text-3);white-space:nowrap;align-self:center}
.ack{font-size:10px;color:var(--ok);border:1px solid rgba(16,185,129,.3);border-radius:6px;padding:1px 6px}
.inc-detail{display:flex;flex-direction:column}
.inc-field{
  display:flex;flex-direction:column;gap:5px;
  padding:13px 0;border-bottom:1px solid var(--border-soft);
}
.inc-field:first-child{padding-top:0}
.inc-field:last-child{border-bottom:none;padding-bottom:0}
.inc-lbl{font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--text-3);font-weight:600}
.inc-val{font-size:13.5px;color:var(--text);line-height:1.45;word-break:break-word}
.inc-val.mono{font-family:var(--font-mono);font-size:12.5px}
.inc-val-copy{
  background:none;border:none;padding:0;cursor:pointer;text-align:left;
  color:var(--info);font-family:var(--font-mono);font-size:12.5px;line-height:1.45;
  word-break:break-word;text-decoration:underline;text-decoration-color:rgba(124,140,248,.35);
  text-underline-offset:3px;transition:color .15s,text-decoration-color .15s;
}
.inc-val-copy:hover{color:var(--text);text-decoration-color:var(--info)}
.a-tags{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}
.ztag{font-family:var(--font-mono);font-size:9.5px;color:var(--text-3);background:var(--surface-2);border:1px solid var(--border-soft);padding:2px 7px;border-radius:6px}
.counter{font-family:var(--font-mono);font-size:11px;color:var(--text-3);background:var(--surface-2);border:1px solid var(--border);padding:2px 8px;border-radius:20px}

/* TABLE */
.t-scroll{overflow-x:auto}
table{width:100%;border-collapse:collapse}
thead th{
  text-align:left;font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--text-3);font-weight:600;padding:11px 18px;
  border-bottom:1px solid var(--border-soft);background:var(--surface);
}
tbody td{padding:12px 18px;border-bottom:1px solid var(--border-soft);font-size:13px}
tbody tr{transition:background var(--dur-fast)}
tbody tr:hover{background:var(--surface-2)}
.host{display:flex;align-items:center;gap:10px}
.host .h-ic{
  width:30px;height:30px;border-radius:8px;display:grid;place-items:center;
  background:var(--surface-2);border:1px solid var(--border-soft);color:var(--text-2);
}
.host .h-ic .ph{font-size:15px}
.host b{font-weight:600;font-size:13px}
.host small{display:block;color:var(--text-3);font-size:11px;font-family:var(--font-mono)}
.stat{display:inline-flex;align-items:center;gap:7px;font-size:12px;font-weight:600}
.stat .d{width:8px;height:8px;border-radius:50%}
.stat.up .d{background:var(--ok);box-shadow:0 0 8px rgba(16,185,129,.5)}
.stat.warn .d{background:var(--warn)}
.stat.down .d{background:var(--crit)}
.stat.up{color:var(--ok)}.stat.warn{color:var(--warn)}.stat.down{color:var(--crit)}
.metric-cell{font-family:var(--font-mono);font-size:12.5px}
.bar{height:5px;border-radius:4px;background:var(--border);margin-top:5px;overflow:hidden;width:90px}
.bar i{display:block;height:100%;border-radius:4px}
.host-row{cursor:pointer}
.sem-dado{color:var(--text-3);font-size:11px;font-style:italic;opacity:.7}
td.acoes{width:80px;white-space:nowrap;text-align:right}
.mini-btn{
  background:none;border:1px solid var(--border);color:var(--text-2);
  width:28px;height:28px;border-radius:8px;cursor:pointer;
  display:inline-grid;place-items:center;transition:background var(--dur-fast), color var(--dur-fast), border-color var(--dur-fast);
  padding:0;
}
.mini-btn:hover{background:var(--surface-2);color:var(--accent);border-color:var(--accent)}
.mini-btn .ph{font-size:14px}
.p-head .mini-btn{margin-right:2px}

.src-badge{
  display:flex;align-items:center;gap:9px;
  background:var(--surface-2);border:1px solid var(--border);
  border-radius:10px;padding:9px 13px;
}
.src-badge .ic{width:26px;height:26px;border-radius:7px;display:grid;place-items:center;font-weight:700;font-size:12px;font-family:var(--font-disp)}
.src-badge small{color:var(--text-3);font-size:10.5px;display:block}
.src-badge b{font-size:12.5px}
.src-badge .tag2{margin-left:6px;font-size:10px;padding:2px 7px;border-radius:20px;display:flex;align-items:center;gap:5px}
.tag2.on{color:var(--ok);background:rgba(16,185,129,.1)}
.tag2.off{color:var(--text-3);background:var(--surface-2)}
.tag2 .d{width:6px;height:6px;border-radius:50%;background:currentColor}

.foot{margin-top:26px;text-align:center;color:var(--text-3);font-size:11.5px;font-family:var(--font-mono)}
.foot span{color:var(--accent)}

/* MODAL */
.modal{
  position:fixed;inset:0;background:rgba(6,8,12,.72);backdrop-filter:blur(3px);
  display:none;align-items:center;justify-content:center;z-index:100;padding:20px;
}
.modal.show{display:flex}
.modal-card{
  width:100%;max-width:520px;
  background:var(--surface-3);border:1px solid var(--border);
  border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--shadow-lg);
}
.modal-card.wide{max-width:900px}
.modal-head{display:flex;align-items:flex-start;gap:12px;padding:20px 22px;border-bottom:1px solid var(--border-soft)}
.modal-head h2{font-family:var(--font-disp);font-size:18px;font-weight:600}
.modal-head p{color:var(--text-3);font-size:12px;margin-top:4px}
.modal-head .btn.small{padding:6px 11px;font-size:12px}
.modal-head > .btn.small{margin-left:auto}
.modal-x{
  margin-left:auto;background:none;border:1px solid var(--border);color:var(--text-2);
  width:30px;height:30px;border-radius:8px;cursor:pointer;display:grid;place-items:center;
}
.modal-x .ph{font-size:14px}
.modal-x:hover{background:var(--surface-2);color:var(--text)}
.modal-body{padding:20px 22px;max-height:60vh;overflow:auto}
.modal-body.scroll{max-height:56vh;overflow:auto;padding:0}
.modal-sub{padding:0 22px 14px;border-bottom:1px solid var(--border-soft)}
.cfg-group{margin-bottom:20px}
.cfg-group-title{display:flex;align-items:center;gap:8px;font-family:var(--font-disp);font-weight:600;font-size:13px;margin-bottom:10px}
.cfg-group-title .opt{font-family:var(--font-body);font-weight:500;font-size:10px;color:var(--text-3);border:1px solid var(--border);padding:1px 7px;border-radius:20px}
.dot-src{width:9px;height:9px;border-radius:50%;flex:none}
.dot-src.zbx{background:var(--crit)}.dot-src.grf{background:var(--info)}.dot-src.eveo{background:var(--accent-solid)}
.modal-body label{display:block;font-size:11px;color:var(--text-2);margin:10px 0 6px;font-weight:500}
.modal-body input,.modal-body select{
  width:100%;background:var(--surface-2);border:1px solid var(--border);
  border-radius:9px;padding:10px 12px;color:var(--text);
  font-family:var(--font-mono);font-size:12.5px;outline:none;
  transition:border-color var(--dur-fast);
}
.modal-body .pass-field input{padding-right:42px;font-family:var(--font-body);font-size:13px}
.modal-body select{font-family:var(--font-body);font-size:13px}
.modal-body input:focus,.modal-body select:focus{border-color:var(--accent-solid)}
.cfg-note{
  display:flex;gap:9px;align-items:flex-start;
  background:var(--accent-soft);border:1px solid var(--accent-line);
  color:var(--text-2);border-radius:10px;padding:11px 13px;
  font-size:11.5px;line-height:1.5;margin-top:6px;
}
.cfg-note .ph{font-size:15px;color:var(--accent);flex:none;margin-top:1px}
.cfg-note b{color:var(--accent)}
.cfg-note span{flex:1;min-width:0}
#cfg-result{margin-top:14px;display:flex;flex-direction:column;gap:6px}
.cfg-line{font-family:var(--font-mono);font-size:12px;padding:7px 10px;border-radius:8px;background:var(--surface);display:flex;align-items:center;gap:8px}
.cfg-line .ph{font-size:14px}
.cfg-line.ok{color:var(--ok);background:rgba(16,185,129,.08)}
.cfg-line.err{color:var(--crit);background:rgba(239,68,68,.08)}
.cfg-line.muted{color:var(--text-3)}
.modal-foot{display:flex;align-items:center;gap:10px;padding:16px 22px;border-top:1px solid var(--border-soft)}
.btn{
  background:var(--surface-2);border:1px solid var(--border);color:var(--text);
  border-radius:4px;padding:8px 14px;font-family:var(--font-body);font-weight:600;font-size:13px;
  cursor:pointer;transition:background var(--dur-fast), border-color var(--dur-fast), transform var(--dur-fast);
}
.btn:hover{border-color:var(--accent-line)}
.btn:active{transform:scale(.97)}
.btn.ghost{background:none;color:var(--text-2)}
.btn.primary{background:var(--accent-solid);color:var(--accent-ink);border-color:var(--accent-solid)}
.btn.primary:hover{background:var(--accent-hover)}
.btn.full{width:100%;margin-top:20px;padding:11px}
.btn.small{padding:7px 11px;font-size:12px}

.dh-head-actions{display:flex;align-items:center;gap:8px;margin-left:auto;flex-wrap:wrap;justify-content:flex-end}
#modal-host .modal-x{margin-left:0}
.dh-ranges{display:flex;gap:6px;flex-wrap:wrap}
.dh-section-label{
  font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--text-3);
  font-weight:600;padding:0 18px 10px;
}
.dh-arc-section{padding:6px 0 4px}
.dh-arc-grid{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;
  padding:0 18px 14px;
}
.dh-arc-card{
  background:var(--surface-2);border:1px solid var(--border-soft);
  border-radius:var(--r-md);padding:14px 14px 10px;min-width:0;
}
.dh-arc-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin-bottom:2px}
.dh-arc-title{font-family:var(--font-disp);font-size:13px;font-weight:600;color:var(--text)}
.dh-arc-unit{font-size:10.5px;color:var(--text-3);white-space:nowrap}
.dh-arc-body{position:relative;padding:0 4px 6px}
.dh-arc-svg{display:block;width:100%;height:auto;overflow:visible}
.dh-arc-tick{font-size:9px;fill:var(--text-3);font-family:var(--font-mono)}
.dh-arc-val{
  position:absolute;left:50%;bottom:2px;transform:translateX(-50%);
  font-family:var(--font-disp);font-size:24px;font-weight:700;
  letter-spacing:-.02em;font-variant-numeric:tabular-nums;line-height:1;
}
.dh-arc-val.ok{color:var(--ok)}
.dh-arc-val.warn{color:var(--warn)}
.dh-arc-val.crit{color:var(--crit)}
.dh-line-section{padding-top:4px}
.dh-charts{
  display:grid;grid-template-columns:1fr 1fr;gap:12px;
  padding:0 18px 18px;
}
.dh-chart-card{
  background:var(--surface-2);border:1px solid var(--border-soft);
  border-radius:var(--r-md);padding:12px 14px 10px;min-width:0;
}
.dh-chart-card.wide{grid-column:1 / -1}
.dh-chart-card h4{
  font-family:var(--font-disp);font-size:12.5px;font-weight:600;
  margin-bottom:8px;display:flex;align-items:center;justify-content:space-between;gap:8px;
}
.dh-chart-card h4 span{font-family:var(--font-body);font-size:10.5px;color:var(--text-3);font-weight:500}
.dh-chart-wrap{position:relative;height:170px}
.dh-chart-card.wide .dh-chart-wrap{height:200px}
.dh-table{width:100%}
.dh-table thead th{position:sticky;top:0;z-index:2;background:var(--surface)}
.dh-table td{padding:10px 22px}
.dh-table td b{font-size:12.5px;font-weight:600;display:block}
.dh-table td small{font-family:var(--font-mono);font-size:10.5px;color:var(--text-3);display:block;margin-top:2px}
.dh-table .valor{color:var(--accent);font-weight:600;text-align:right;white-space:nowrap}
.dh-table th:last-child{text-align:right}
@media(max-width:820px){
  .dh-arc-grid{grid-template-columns:repeat(2,1fr)}
  .dh-charts{grid-template-columns:1fr}
  .dh-chart-card.wide{grid-column:auto}
  .dh-head-actions{margin-left:0;width:100%}
}

/* DASHBOARDS */
.dash-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:12px}
.dash-card{
  display:flex;gap:12px;align-items:flex-start;
  background:var(--surface);border:1px solid var(--border);
  border-radius:var(--r-md);padding:14px;cursor:pointer;
  transition:transform var(--dur-fast), box-shadow var(--dur-fast), border-color var(--dur-fast), background var(--dur-fast);
}
.dash-card:hover{
  border-color:var(--accent-line);background:var(--surface-2);
  transform:translateY(-2px);box-shadow:var(--shadow-md);
}
.dash-card b{font-size:13px;font-weight:600;display:block;line-height:1.35;overflow-wrap:anywhere}
.dash-ic{
  width:32px;height:32px;border-radius:9px;display:grid;place-items:center;
  background:rgba(124,140,248,.12);color:var(--info);flex:none;
}
.dash-ic .ph{font-size:16px}
.pasta{margin-bottom:22px}
.pasta:last-child{margin-bottom:0}
.pasta-h{display:flex;align-items:center;gap:9px;margin-bottom:11px;color:var(--text-2)}
.pasta-h .ph{font-size:16px;color:var(--accent)}
.pasta-h b{font-family:var(--font-disp);font-size:13px;color:var(--text);font-weight:600}
.dash-txt{min-width:0}

/* LOGIN */
.login{
  position:fixed;inset:0;z-index:200;display:none;align-items:center;justify-content:center;padding:20px;
  background:var(--bg);
}
.login.show{display:flex}
.login-card{
  width:100%;max-width:360px;
  background:var(--surface);border:1px solid var(--border);
  border-top:3px solid var(--accent-solid);
  border-radius:var(--r-lg);padding:24px 22px;box-shadow:none;
}
.login-brand{display:flex;flex-direction:column;align-items:flex-start;gap:6px;margin-bottom:22px}
.login-logo{width:168px;height:auto;display:block;background:#050505;border-radius:4px;padding:12px 14px}
.login-sub{font-size:11px;letter-spacing:.04em;color:var(--text-3);font-weight:500}
.login-card h2{font-family:var(--font-disp);font-size:16px;font-weight:600;margin-bottom:14px;text-align:left}
.login-card label{display:block;font-size:11px;color:var(--text-2);margin:12px 0 6px;font-weight:500}
.login-card input{
  width:100%;background:var(--surface-2);border:1px solid var(--border);
  border-radius:4px;padding:9px 11px;color:var(--text);
  font-family:var(--font-body);font-size:13.5px;outline:none;
}
.login-card input:focus{border-color:var(--accent-solid)}
.pass-field{position:relative;width:100%}
.pass-field input{padding-right:42px;width:100%}
.pass-toggle{
  position:absolute;right:6px;top:50%;transform:translateY(-50%);
  width:32px;height:32px;border:0;background:transparent;color:var(--text-3);
  border-radius:8px;cursor:pointer;display:grid;place-items:center;padding:0;
}
.pass-toggle:hover{color:var(--text);background:var(--surface)}
.pass-toggle .ph{font-size:16px}
.modal-body .pass-field{margin:0}
.lg-links{display:flex;justify-content:flex-end;margin-top:8px}
.lg-link{
  border:0;background:none;padding:0;cursor:pointer;
  color:var(--accent-solid);font-size:12px;font-family:var(--font-body);font-weight:500;
}
.lg-link:hover{text-decoration:underline}
.lg-erro{color:var(--crit);font-size:12px;min-height:16px;margin-top:10px}
.lg-dica{color:var(--text-3);font-size:11px;text-align:center;margin-top:16px;line-height:1.5}
.lg-dica b{color:var(--text-2);font-family:var(--font-mono)}
.ms-ok{color:var(--ok);font-size:12px;margin-top:10px;font-weight:500}
.mu-hint{color:var(--text-3);font-size:12px;line-height:1.45;margin:10px 0 0}
.mu-temp{
  margin-top:14px;padding:12px 14px;border-radius:10px;
  background:var(--accent-soft);border:1px solid var(--border);
}
.mu-temp label{margin-top:0}
.mu-temp-row{display:flex;align-items:center;gap:10px}
.mu-temp-row code{
  flex:1;font-family:var(--font-mono);font-size:15px;letter-spacing:.04em;
  padding:10px 12px;border-radius:8px;background:var(--surface);border:1px solid var(--border);
  color:var(--text);user-select:all;
}
.pill.warn-soft{
  display:inline-block;font-size:10.5px;padding:2px 7px;border-radius:999px;
  background:rgba(217,119,6,.12);color:#d97706;font-weight:600;
}

/* USER */
.user-box{
  display:flex;align-items:center;gap:10px;padding:9px 10px;
  border-radius:11px;background:var(--surface-2);border:1px solid var(--border-soft);margin-bottom:10px;
}
.avatar{
  width:30px;height:30px;border-radius:9px;flex:none;display:grid;place-items:center;
  font-family:var(--font-disp);font-weight:700;font-size:11.5px;
  color:var(--accent-ink);background:linear-gradient(135deg, var(--brand-400), var(--brand-600));
}
.avatar.sm{width:26px;height:26px;font-size:10.5px}
.user-info{min-width:0;flex:1}
.user-info b{font-size:12.5px;font-weight:600;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.user-info small{color:var(--text-3);font-size:10.5px}
.nivel-tag{font-size:11px;font-weight:600;padding:3px 9px;border-radius:20px}
.nivel-tag.viewer{color:var(--info);background:rgba(124,140,248,.12)}
.nivel-tag.admin{color:var(--accent);background:var(--accent-soft)}
.nivel-tag.superadmin{color:var(--disaster);background:rgba(190,18,60,.13)}
.user-row{cursor:pointer}
.user-presence{
  display:inline-flex;align-items:center;gap:6px;
  font-size:12px;font-weight:500;white-space:nowrap;
}
.user-presence .d{
  width:7px;height:7px;border-radius:50%;flex:none;
  background:var(--text-3);
}
.user-presence.on{color:var(--ok)}
.user-presence.on .d{background:var(--ok);box-shadow:0 0 0 3px rgba(16,185,129,.18)}
.user-presence.off{color:var(--text-3);font-weight:400}

/* DOMÍNIOS & SSL */
.cert-list{display:flex;flex-direction:column;gap:0;max-height:62vh;overflow:auto}
.cert-row{
  display:flex;align-items:center;gap:14px;
  padding:14px 18px;border-bottom:1px solid var(--border-soft);
}
.cert-row:last-child{border-bottom:0}
.cert-row:hover{background:var(--surface-2)}
.cert-main{flex:1;min-width:0}
.cert-title{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.cert-title b,.cert-domain{
  font-size:13.5px;font-weight:600;font-family:var(--font-mono);color:var(--text);
  text-decoration:none;
}
.cert-domain:hover{color:var(--accent-solid);text-decoration:underline}
.cert-acoes{display:flex;align-items:center;gap:4px;flex:none}
.cert-badge{
  font-size:10.5px;font-weight:600;padding:2px 7px;border-radius:999px;
}
.cert-badge.domain{color:var(--info);background:rgba(124,140,248,.12)}
.cert-badge.ssl{color:var(--accent);background:var(--accent-soft)}
.cert-st{
  font-size:10.5px;font-weight:600;padding:2px 7px;border-radius:999px;
}
.cert-st.ok{color:var(--ok);background:rgba(16,185,129,.12)}
.cert-st.warn{color:var(--warn);background:rgba(245,158,11,.14)}
.cert-st.crit{color:var(--crit);background:rgba(239,68,68,.12)}
.cert-st.expired,.cert-st.error{color:var(--disaster);background:rgba(190,18,60,.12)}
.cert-meta{
  display:flex;gap:12px;flex-wrap:wrap;margin-top:5px;
  font-size:11.5px;color:var(--text-3);
}
.cert-issuer{
  color:var(--text-2);font-weight:500;
}
.cert-issuer::before{
  content:"";display:inline-block;width:4px;height:4px;border-radius:50%;
  background:var(--text-3);margin-right:8px;vertical-align:middle;
}
.cert-bar{
  margin-top:8px;height:4px;border-radius:99px;background:var(--surface-2);overflow:hidden;max-width:280px;
}
.cert-bar i{display:block;height:100%;border-radius:99px;background:var(--ok)}
.cert-row[data-status="warn"] .cert-bar i{background:var(--warn)}
.cert-row[data-status="crit"] .cert-bar i{background:var(--crit)}
.cert-row[data-status="expired"] .cert-bar i,
.cert-row[data-status="error"] .cert-bar i{background:var(--disaster)}
.cert-days{
  font-family:var(--font-disp);font-size:16px;font-weight:600;min-width:96px;text-align:right;
  font-variant-numeric:tabular-nums;white-space:nowrap;
}
.cert-days.ok{color:var(--ok)}
.cert-days.warn{color:var(--warn)}
.cert-days.crit{color:var(--crit)}
.cert-days.expired,.cert-days.error{color:var(--disaster)}

.view{display:none}
.view.active{display:block}
.vazio{padding:34px 24px;color:var(--text-3);text-align:center;font-size:13px;line-height:1.6}
#btn-refresh{cursor:pointer}
#btn-refresh.spinning .ph{animation:spin .5s linear}
@keyframes spin{to{transform:rotate(360deg)}}

.btn-fechar-inc{color:var(--ok)}
.btn-fechar-inc:hover{background:rgba(16,185,129,.12);color:var(--ok);border-color:var(--ok)}
.btn-danger{color:var(--crit)}
.btn-danger:hover{background:rgba(239,68,68,.12);color:var(--crit);border-color:var(--crit)}
.btn-danger:disabled,.btn-fechar-inc:disabled{opacity:.35;cursor:not-allowed}

@media(max-width:1100px){
  .kpis,.kpis-4,#kpis{grid-template-columns:repeat(2,1fr)}
  .charts{grid-template-columns:1fr}
}
@media(max-width:820px){
  .app{grid-template-columns:1fr}
  .side{display:none}
  .main{padding:0 16px 30px}
  .search{width:160px}
}

@media(prefers-reduced-motion:reduce){
  .settings-conn .dot,.pill.live .dot{animation:none}
  #btn-refresh.spinning .ph{animation:none}
}
