:root{
  --bg:#f3f4f6;--card:#fff;--fg:#111827;--muted:#6b7280;--line:#e5e7eb;--acc:#0284c7;--head:#1f2a37;
  --info:#0284c7;--warn:#d97706;--error:#dc2626;--critical:#7f1d1d;--code:#f3f4f6;
}
@media (prefers-color-scheme:dark){
  :root{--bg:#0f1720;--card:#1a2431;--fg:#e5e7eb;--muted:#9ca3af;--line:#2a3646;--acc:#38bdf8;--head:#111a24;--code:#0f1720;
        --info:#38bdf8;--warn:#fbbf24;--error:#f87171;--critical:#fca5a5}
}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--fg);font:15px/1.4 -apple-system,system-ui,"Segoe UI",Roboto,sans-serif}
[hidden]{display:none!important}
button,input,select{font:inherit}
code,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}
code{background:var(--code);padding:1px 5px;border-radius:4px;font-size:13px;word-break:break-all}

#login{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:16px}
#loginForm{width:100%;max-width:340px;background:var(--card);padding:24px;border-radius:14px;display:flex;flex-direction:column;gap:12px}
#loginForm h1{margin:0 0 4px;font-size:22px}
input[type=password],input[type=search],select{width:100%;padding:11px 12px;border:1px solid var(--line);border-radius:10px;background:var(--card);color:var(--fg)}
button{border:0;background:var(--acc);color:#fff;padding:11px 14px;border-radius:10px;cursor:pointer}
button.sec{background:transparent;color:var(--acc);border:1px solid var(--acc)}
.err{color:var(--error);margin:0}
.muted{color:var(--muted);font-size:13px}

header{position:sticky;top:0;z-index:5;background:var(--head);color:#fff;padding:calc(env(safe-area-inset-top) + 10px) 16px 0}
.top{display:flex;align-items:center;justify-content:space-between}
header h1{margin:0;font-size:19px;display:flex;align-items:center;gap:8px}
.badge{background:var(--error);color:#fff;border-radius:999px;font-size:12px;padding:1px 8px}
.conn{width:10px;height:10px;border-radius:50%;background:#6b7280}
.conn.ok{background:#22c55e}.conn.bad{background:#ef4444}
nav{display:flex;gap:2px;margin-top:8px}
nav button{background:transparent;color:#cbd5e1;border-radius:8px 8px 0 0;padding:9px 4px;flex:1;font-size:13.5px;white-space:nowrap}
.nb{font-style:normal;background:var(--error);color:#fff;border-radius:999px;font-size:11px;padding:0 6px;margin-left:2px;vertical-align:1px}
#pushBanner{background:#d97706;color:#fff;padding:9px 12px;margin:8px -16px 0;text-align:center;cursor:pointer;font-size:14px}
.ev .push{font-size:11px}.ev .push.bad{color:var(--error)}
.card button{align-self:stretch}
.card input[type=url],.srv input{width:100%;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--card);color:var(--fg)}
.srv{font-size:13px;color:var(--muted)}.srv summary{cursor:pointer;margin-bottom:8px}.srv input{margin-bottom:8px}
nav button.on{background:var(--bg);color:var(--fg)}

main{padding:12px 12px 90px;max-width:900px;margin:0 auto}
.filters{display:flex;flex-direction:column;gap:8px;margin-bottom:10px}
.chips{display:flex;gap:6px;flex-wrap:wrap}
.chips button{background:var(--card);color:var(--fg);border:1px solid var(--line);padding:7px 12px;border-radius:999px;font-size:14px}
.chips button.on{background:var(--acc);color:#fff;border-color:var(--acc)}
.row{display:flex;gap:10px;align-items:center}
.row select{flex:1}
.chk{display:flex;gap:6px;align-items:center;white-space:nowrap;font-size:14px}

#list,#srcList{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.ev{background:var(--card);border-radius:12px;border-left:5px solid var(--info);padding:10px 12px;cursor:pointer}
.ev.warn{border-left-color:var(--warn)}
.ev.error{border-left-color:var(--error)}
.ev.critical{border-left-color:var(--critical)}
.ev.acked{opacity:.6}
.ev .meta{display:flex;gap:8px;align-items:center;font-size:12px;color:var(--muted);flex-wrap:wrap}
.ev .meta .src{background:var(--code);padding:1px 7px;border-radius:6px;color:var(--fg)}
.ev .meta .lvl{font-weight:600;text-transform:uppercase;font-size:11px}
.ev.warn .lvl{color:var(--warn)}.ev.error .lvl{color:var(--error)}.ev.critical .lvl{color:var(--critical)}.ev.info .lvl{color:var(--info)}
.ev .meta .kind{background:transparent;border:1px solid var(--line)}
.ev .extra{margin-top:6px;display:none}.ev.open .extra{display:block}
.ev .dot{width:8px;height:8px;border-radius:50%;background:var(--acc)}
.ev.acked .dot{display:none}
.ev .title{font-weight:600;margin-top:4px;word-break:break-word}
.ev .txt{margin:4px 0 0;white-space:pre-wrap;word-break:break-word;font-size:13px;color:var(--fg);
         display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.ev.open .txt{display:block;-webkit-line-clamp:unset;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:12.5px;
              background:var(--code);padding:8px;border-radius:8px;max-height:60vh;overflow:auto}
.ev .acts{display:none;gap:8px;margin-top:8px}
.ev.open .acts{display:flex}
.ev .acts button{padding:7px 12px;font-size:13px}
#more{width:100%;margin-top:10px}
#newBanner{background:var(--acc);color:#fff;padding:9px 12px;border-radius:10px;text-align:center;margin-bottom:8px;cursor:pointer}
#empty{text-align:center;margin-top:30px}

.card{background:var(--card);border-radius:12px;padding:14px;margin-bottom:12px;display:flex;flex-direction:column;gap:8px;align-items:flex-start}
.card h2{margin:0;font-size:16px}
.card p{margin:0}
.log{background:var(--code);padding:10px;border-radius:8px;width:100%;overflow:auto;font-size:12.5px;white-space:pre-wrap;margin:0}
.src-item{background:var(--card);border-radius:12px;padding:12px;display:flex;justify-content:space-between;gap:10px;align-items:center;cursor:pointer}
.src-item .name{font-weight:600;word-break:break-word}
.src-item .sub{font-size:13px;color:var(--muted)}
.src-item .stale{color:var(--warn)}
.pill{background:var(--error);color:#fff;border-radius:999px;padding:1px 8px;font-size:12px;margin-left:4px}
.pill.n{background:var(--acc)}

footer{position:fixed;left:0;right:0;bottom:0;padding:10px 12px calc(env(safe-area-inset-bottom) + 10px);background:linear-gradient(transparent,var(--bg) 35%)}
footer button{width:100%;max-width:900px;display:block;margin:0 auto;box-shadow:0 2px 10px rgba(0,0,0,.25)}
