body,html{max-width:100vw;overflow-x:hidden}*{box-sizing:border-box}body{margin:0;color:#d7dae0;background:#0e0f13;font:14px/1.5 SF Mono,ui-monospace,Menlo,Consolas,monospace}.shell{display:flex;min-height:100vh}.side{width:210px;flex:0 0 210px;background:#12141a;border-right:1px solid #1e2129;padding:18px 14px;display:flex;flex-direction:column;gap:6px}.brand{font-size:15px;margin:0 0 18px;letter-spacing:.02em;color:#e8eaf0}.nav-btn{display:block;width:100%;text-align:left;padding:9px 12px;border-radius:8px;cursor:pointer;background:transparent;color:#a9b0bd;border:0;font:inherit}.nav-btn:hover{background:#1a1d25;color:#d7dae0}.nav-btn.on{background:#2d5cd6;color:#fff}.side .who{margin-top:auto;font-size:11px;color:#6a6f7a}.side .who a{color:#8a90a0;text-decoration:none}.side .who a:hover{color:#cfd3da}.content{flex:1 1;padding:22px 26px;min-width:0}.page-head{display:flex;align-items:baseline;gap:14px;margin-bottom:18px}.page-head h2{font-size:16px;margin:0}.page-head .sub{margin-left:auto}.tbl{border-collapse:collapse;width:100%;font-size:13px}.tbl th{text-align:left;padding:7px 10px;color:#7c828e;font-weight:600;border-bottom:1px solid #262a34;font-size:12px}.tbl td{padding:8px 10px;border-bottom:1px solid #1b1e26;vertical-align:top}.row{cursor:pointer}.row:hover td{background:#151821}.row.sel td{background:#1a2033}.mono{font-family:ui-monospace,Menlo,monospace}.small{font-size:12px}.funnel{display:inline-flex;gap:5px;align-items:center}.dot{width:10px;height:10px;border-radius:50%;background:#262a34;border:1px solid #333845;display:inline-block}.dot.on{background:#2d5cd6;border-color:#2d5cd6}.dot+.dot:before{content:""}.detail{margin-top:20px;background:#12141a;border:1px solid #23262e;border-radius:10px;padding:16px 18px}.detail-head{display:flex;justify-content:space-between;align-items:center}.detail-head h3{font-size:14px;margin:0}.tabs{display:flex;gap:8px;margin:14px 0 10px}.tab{padding:6px 12px;border-radius:7px;cursor:pointer;font:inherit;font-size:13px;background:#161920;color:#a9b0bd;border:1px solid #2b2f39}.tab.on{background:#2d5cd6;color:#fff;border-color:#2d5cd6}.logbox{max-height:420px;overflow:auto;border:1px solid #23262e;border-radius:8px;background:#101218}.logline{display:grid;grid-template-columns:92px 130px 120px 1fr;grid-gap:10px;gap:10px;padding:6px 10px;border-bottom:1px solid #181b22;font-size:12px}.logline:last-child{border-bottom:0}.logline:hover{background:#151821}.log-ts{color:#6a6f7a}.log-geo{color:#9fb4d8}.log-ip{color:#6a6f7a}.log-text{word-break:break-word;color:#cfd3da}.pill{padding:2px 9px;border-radius:20px;font-size:11px}.pill.ok{background:#16301f;color:#8fd694}.pill.bad{background:#341a17;color:#ff8f7a}.pill.wait{background:#342b17;color:#ffd479}.btn{padding:7px 14px;cursor:pointer;border:0;border-radius:7px;background:#2d5cd6;color:#fff;font:inherit}.btn:hover{background:#3768e0}.btn.ghost{background:#161920;color:#a9b0bd;border:1px solid #2b2f39}.btn.ghost:hover{color:#d7dae0}.btn.small{padding:3px 10px;font-size:12px;text-decoration:none;display:inline-block}.btn.wide{width:100%}.btn:disabled{opacity:.6;cursor:default}.fld{width:100%;padding:8px 10px;margin-bottom:10px;background:#161920;color:#d7dae0;border:1px solid #2b2f39;border-radius:7px;font:inherit}.fld:focus{outline:none;border-color:#2d5cd6}.err{color:#ff8f7a}.err,.sub{font-size:12px}.sub{color:#7c828e}.empty{color:#6a6f7a;padding:30px 0;text-align:center}.page-loading{padding:24px;color:#8a90a0}.login-wrap{min-height:100vh;display:grid;place-items:center}.login-card{border:1px solid #23262e;border-radius:12px;padding:26px;width:320px;background:#12141a}.login-card h1{font-size:16px;margin:0 0 16px;color:#e8eaf0}.key-row{margin:10px 0}.dec-box{margin-top:8px;background:#101218;border:1px solid #23262e;border-radius:7px;padding:8px}.dec-pre{margin:0;max-height:260px;overflow:auto;font-size:11px;white-space:pre-wrap;word-break:break-all}