:root{--bg:#f6f7f9;--panel:#fff;--ink:#1d2939;--muted:#667085;--rule:#e4e7ec;--navy:#1f3a5f;--red:#b42318;--redbg:#fef3f2;--amber:#b54708;--amberbg:#fffaeb;--green:#067647;--chip:#eef2f6;--code:#f2f4f7}
@media (prefers-color-scheme:dark){:root{--bg:#0f1419;--panel:#171d24;--ink:#e6e9ee;--muted:#98a2b3;--rule:#2a333d;--navy:#9ec5fe;--red:#f97066;--redbg:#2a1414;--amber:#fdb022;--amberbg:#2a2110;--green:#47cd89;--chip:#222b35;--code:#1e252d}}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:14px/1.45 system-ui,-apple-system,"Segoe UI",sans-serif}
header{display:flex;flex-wrap:wrap;gap:12px;align-items:center;padding:14px 20px;background:var(--panel);border-bottom:1px solid var(--rule);position:sticky;top:0;z-index:2}
h1{font-size:18px;margin:0 12px 0 0;color:var(--navy)}
select,input,button{font:inherit;color:inherit;background:var(--panel);border:1px solid var(--rule);border-radius:6px;padding:6px 10px}
button{cursor:pointer}button.on{background:var(--navy);color:var(--panel);border-color:var(--navy)}
input[type=search]{min-width:220px;flex:1;max-width:360px}
main{padding:16px 20px;max-width:1500px;margin:0 auto}
.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px;margin-bottom:16px}
.tile{background:var(--panel);border:1px solid var(--rule);border-radius:10px;padding:12px 14px}.tile b{display:block;font-size:22px}.tile span{color:var(--muted);font-size:12px}
table{width:100%;border-collapse:collapse;background:var(--panel);border:1px solid var(--rule);border-radius:10px;overflow:hidden}
th,td{padding:8px 10px;text-align:left;border-bottom:1px solid var(--rule);vertical-align:top}th{font-size:12px;color:var(--muted);font-weight:600;cursor:pointer;user-select:none;white-space:nowrap}
tbody tr{cursor:pointer}tbody tr:hover{background:var(--chip)}td.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.app{font-weight:600}.sub{color:var(--muted);font-size:12px}
.err{color:var(--red);font-weight:700}.warn{color:var(--amber)}.ok{color:var(--green)}
.badge{display:inline-block;font-size:11px;padding:1px 6px;border-radius:9px;background:var(--chip);color:var(--muted);margin-left:4px}
.badge.amber{background:var(--amberbg);color:var(--amber)}
svg.spark{display:block}
#detail{position:fixed;top:0;right:0;width:min(900px,100%);height:100%;background:var(--panel);border-left:1px solid var(--rule);box-shadow:-8px 0 24px rgba(0,0,0,.15);transform:translateX(100%);transition:transform .2s;z-index:3;display:flex;flex-direction:column}
#detail.open{transform:none}#detail header{position:static}
#detail .body{overflow:auto;padding:14px 20px;flex:1}
.pattern{border:1px solid var(--rule);border-radius:8px;padding:10px 12px;margin:0 0 10px}
.pattern .p{font-family:ui-monospace,Consolas,monospace;font-size:12.5px;white-space:pre-wrap;word-break:break-word}
.pattern .ph{background:var(--amberbg);color:var(--amber);border-radius:3px;padding:0 2px}
.pattern details{margin-top:6px}.pattern pre{background:var(--code);padding:8px;border-radius:6px;white-space:pre-wrap;word-break:break-word;font-size:12px;margin:6px 0 0}
.line{display:grid;grid-template-columns:92px 54px 1fr;gap:8px;padding:4px 0;border-bottom:1px solid var(--rule);font-family:ui-monospace,Consolas,monospace;font-size:12.5px}
.line{cursor:pointer}.line:hover{background:var(--chip)}
.line .msg{min-width:0}.line .one{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.line .full{display:none;white-space:pre-wrap;word-break:break-word;margin:4px 0 2px;background:var(--code);padding:8px;border-radius:6px;font:inherit}
.line.open .one{display:none}.line.open .full{display:block}.line.open{background:var(--chip)}
.lvl{font-weight:700;font-size:11px}
.lvl.ERROR,.lvl.FATAL{color:var(--red)}.lvl.WARN{color:var(--amber)}.lvl.INFO{color:var(--green)}.lvl.DEBUG,.lvl.LOG{color:var(--muted)}
.note{color:var(--muted);font-size:12px;margin:8px 0}.problem{background:var(--amberbg);color:var(--amber);border-radius:8px;padding:8px 12px;margin-bottom:12px}
.empty{padding:40px;text-align:center;color:var(--muted)}
#signin{max-width:360px;margin:60px auto;background:var(--panel);border:1px solid var(--rule);border-radius:10px;padding:20px 22px}
#signin h2{font-size:16px;margin:0 0 12px}#signin label{display:block;font-size:12px;color:var(--muted);margin:10px 0 4px}
#signin input{width:100%}#signin button{margin-top:14px;width:100%;background:var(--navy);color:var(--panel);border-color:var(--navy)}
#signin .problem{margin:12px 0 0}#who{margin-left:auto}
