*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}:root{--bg: #0f172a;--bg2: #1e293b;--bg3: #334155;--text: #f1f5f9;--text2: #94a3b8;--text3: #64748b;--border: rgba(148,163,184,.15);--border2: rgba(148,163,184,.25);--ok: #22c55e;--warn: #f59e0b;--err: #ef4444;--info: #3b82f6;--radius: 12px;--radius-sm: 8px;--nav-h: 72px;--safe-bottom: env(safe-area-inset-bottom, 0px)}html,body,#root{height:100%;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,sans-serif;-webkit-font-smoothing:antialiased}.app{display:flex;flex-direction:column;height:100%;max-width:430px;margin:0 auto;position:relative}.topbar{display:flex;align-items:center;justify-content:space-between;padding:56px 20px 12px;background:var(--bg);position:sticky;top:0;z-index:10;border-bottom:.5px solid var(--border)}.topbar-left h1{font-size:22px;font-weight:700;letter-spacing:-.5px}.topbar-left p{font-size:12px;color:var(--text3);margin-top:2px}.topbar-right{display:flex;gap:10px;align-items:center}.content{flex:1;overflow-y:auto;padding:16px 16px calc(var(--nav-h) + var(--safe-bottom) + 8px);-webkit-overflow-scrolling:touch}.nav{position:fixed;bottom:0;left:50%;transform:translate(-50%);width:100%;max-width:430px;background:#0f172aeb;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-top:.5px solid var(--border);display:grid;grid-template-columns:repeat(4,1fr);padding-bottom:var(--safe-bottom);height:var(--nav-h)}.nav-item{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;cursor:pointer;color:var(--text3);transition:color .15s}.nav-item.active{color:var(--info)}.nav-item svg{width:22px;height:22px;stroke-width:1.8}.nav-item span{font-size:10px;font-weight:500}.card{background:var(--bg2);border:.5px solid var(--border);border-radius:var(--radius);padding:14px 16px;margin-bottom:10px}.card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.card-logo{display:flex;align-items:center;gap:10px}.logo-badge{width:34px;height:34px;border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:14px}.logo-badge.z{background:#3b82f626;color:#60a5fa}.logo-badge.w{background:#22c55e26;color:#4ade80}.logo-badge.k{background:#a855f726;color:#c084fc}.card-title{font-size:15px;font-weight:600}.card-sub{font-size:11px;color:var(--text3);margin-top:1px}.stats-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.stat{background:var(--bg3);border-radius:var(--radius-sm);padding:10px 8px;text-align:center}.stat-val{font-size:22px;font-weight:700}.stat-val.ok{color:var(--ok)}.stat-val.warn{color:var(--warn)}.stat-val.err{color:var(--err)}.stat-val.info{color:var(--info)}.stat-label{font-size:10px;color:var(--text3);margin-top:3px;text-transform:uppercase;letter-spacing:.05em}.badge{font-size:10px;font-weight:600;padding:3px 9px;border-radius:20px;letter-spacing:.03em}.badge.ok{background:#22c55e26;color:#4ade80}.badge.warn{background:#f59e0b26;color:#fbbf24}.badge.err{background:#ef444426;color:#f87171}.badge.info{background:#3b82f626;color:#60a5fa}.section-label{font-size:11px;font-weight:600;color:var(--text3);text-transform:uppercase;letter-spacing:.08em;margin:16px 0 8px 4px}.alert-item{display:flex;align-items:flex-start;gap:12px;padding:10px 0;border-bottom:.5px solid var(--border)}.alert-item:last-child{border-bottom:none;padding-bottom:0}.alert-icon{width:32px;height:32px;border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;flex-shrink:0}.alert-icon.critical{background:#ef444426;color:#f87171}.alert-icon.medium{background:#f59e0b26;color:#fbbf24}.alert-icon.low{background:#3b82f61f;color:#60a5fa}.alert-icon svg{width:16px;height:16px;stroke-width:2}.alert-title{font-size:13px;font-weight:500;line-height:1.4}.alert-meta{font-size:11px;color:var(--text3);margin-top:3px;display:flex;gap:8px;align-items:center}.source-dot{width:6px;height:6px;border-radius:50%;display:inline-block}.source-dot.zabbix{background:#60a5fa}.source-dot.wazuh{background:#4ade80}.host-item{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:.5px solid var(--border)}.host-item:last-child{border-bottom:none}.status-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.status-dot.ok{background:var(--ok);box-shadow:0 0 6px #22c55e66}.status-dot.warning{background:var(--warn)}.status-dot.error{background:var(--err);box-shadow:0 0 6px #ef444466}.host-name{font-size:13px;font-weight:500}.host-detail{font-size:11px;color:var(--text3)}.monitor-item{display:flex;align-items:center;justify-content:space-between;padding:9px 0;border-bottom:.5px solid var(--border)}.monitor-item:last-child{border-bottom:none}.monitor-name{font-size:13px;font-weight:500}.monitor-url{font-size:10px;color:var(--text3)}.monitor-ping{font-size:12px;color:var(--text2)}.setting-row{display:flex;align-items:center;justify-content:space-between;padding:13px 0;border-bottom:.5px solid var(--border);cursor:pointer}.setting-row:last-child{border-bottom:none}.setting-label{font-size:14px}.setting-value{font-size:13px;color:var(--text3)}input.setting-input{background:var(--bg3);border:.5px solid var(--border2);border-radius:var(--radius-sm);color:var(--text);font-size:13px;padding:8px 10px;width:100%;margin-top:6px;outline:none}input.setting-input:focus{border-color:var(--info)}.btn{display:flex;align-items:center;justify-content:center;gap:6px;padding:10px 18px;border-radius:var(--radius-sm);border:.5px solid var(--border2);background:var(--bg3);color:var(--text);font-size:13px;font-weight:500;cursor:pointer;transition:opacity .15s}.btn:active{opacity:.7}.btn.primary{background:var(--info);border-color:transparent;color:#fff}.btn svg{width:16px;height:16px;stroke-width:2}@keyframes spin{to{transform:rotate(360deg)}}.spinning{animation:spin 1s linear infinite}.error-state{text-align:center;padding:24px 16px;color:var(--text3)}.error-state svg{width:32px;height:32px;stroke-width:1.5;margin-bottom:8px;color:var(--err)}.toggle{width:44px;height:26px;background:var(--bg3);border-radius:13px;position:relative;cursor:pointer;border:.5px solid var(--border2);transition:background .2s;flex-shrink:0}.toggle.on{background:var(--info);border-color:transparent}.toggle-knob{width:20px;height:20px;background:#fff;border-radius:50%;position:absolute;top:2px;left:2px;transition:transform .2s}.toggle.on .toggle-knob{transform:translate(18px)}.uptime-bar{height:4px;background:var(--bg3);border-radius:2px;overflow:hidden;margin-top:10px}.uptime-fill{height:100%;border-radius:2px;transition:width .5s}
