:root{font-family:Microsoft YaHei UI,PingFang SC,system-ui,sans-serif;color:#dce5ef;background:#0b111b;font-synthesis:none;--bg: #0b111b;--surface: #101927;--surface-2: #131e2d;--line: #283648;--muted: #8997a9;--blue: #559bf7;--green: #52d483;--orange: #f2a249;--red: #f06a61}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;background:var(--bg)}button,input{font:inherit}button{color:inherit}.app-shell{min-height:100vh;display:grid;grid-template-columns:196px 1fr}.sidebar{position:sticky;top:0;height:100vh;display:flex;flex-direction:column;border-right:1px solid var(--line);background:#0c1420;padding:24px 12px 18px}.brand{display:flex;gap:10px;align-items:center;padding:0 10px 26px;font-size:18px;color:#f1f5f9}.brand svg{color:#d9aa59}.sidebar nav{display:grid;gap:7px}.sidebar button{border:0;background:transparent;cursor:pointer}.sidebar nav button,.logout{height:48px;padding:0 15px;display:flex;gap:12px;align-items:center;color:#9ba9ba;border-left:2px solid transparent;text-align:left}.sidebar nav button svg,.logout svg{width:19px}.sidebar nav button.active{color:#67aafa;border-color:var(--blue);background:#10243c}.sidebar nav button:hover,.logout:hover{color:#e8eef5;background:#121e2c}.logout{margin-top:auto;width:100%}.dashboard{min-width:0;padding:22px;max-width:1700px;width:100%;margin:0 auto}.topbar{height:58px;display:flex;align-items:flex-start;justify-content:space-between;gap:20px}.topbar h1{margin:0;color:#f4f7fb;font-size:24px;letter-spacing:.02em}.topbar p{color:var(--muted);margin:5px 0 0;font-size:13px}.top-actions{display:flex;align-items:center;gap:18px;color:var(--muted);font-size:13px}.connection{color:var(--green);display:flex;align-items:center;gap:8px}.connection i,.status i,.severity i{width:8px;height:8px;border-radius:50%;background:currentColor;display:inline-block}.icon-button{border:1px solid var(--line);width:36px;height:36px;display:grid;place-items:center;background:#101a28;cursor:pointer}.icon-button svg{width:17px}.icon-button:hover{border-color:#50647d;color:#fff}.data-error{padding:12px 14px;display:flex;align-items:center;gap:10px;margin:8px 0 14px;color:#ffd1cd;border:1px solid #6d302f;background:#251719}.data-error svg{width:18px}.metrics-band{height:106px;border:1px solid var(--line);background:#0e1723;display:grid;grid-template-columns:repeat(4,1fr);margin:10px 0 14px}.metric{min-width:0;display:flex;align-items:center;gap:18px;padding:22px 30px;border-right:1px solid var(--line)}.metric:last-child{border-right:0}.metric-icon{display:grid;place-items:center;width:50px;height:50px;border-radius:50%;color:var(--blue);background:#11243b;border:1px solid #24446a}.metric-icon svg{width:23px}.metric small{display:block;font-size:14px;color:#c3cdd9;margin-bottom:5px}.metric strong{font-size:30px;line-height:1;color:var(--blue);font-weight:600}.metric.green .metric-icon{color:var(--green);background:#122b24;border-color:#25523e}.metric.green strong{color:var(--green)}.metric.orange .metric-icon{color:var(--orange);background:#2b211a;border-color:#5a3b29}.metric.orange strong{color:var(--orange)}.middle-grid{display:grid;grid-template-columns:minmax(600px,1.65fr) minmax(330px,.85fr);gap:14px;min-height:330px}.panel{border:1px solid var(--line);background:#0e1723;min-width:0}.panel-title{height:54px;padding:0 18px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.panel h2,.logs-toolbar h2{margin:0;color:#eef3f8;font-size:16px}.panel-title span,.logs-toolbar>span{color:var(--muted);font-size:12px}.table-scroll{overflow:auto}table{border-collapse:collapse;width:100%;font-size:13px}th{text-align:left;color:#8f9daf;font-weight:500;background:#121d2b;white-space:nowrap}th,td{height:46px;padding:0 16px;border-bottom:1px solid #223043}td{color:#cbd5e1}.tester-table tr{cursor:pointer}.tester-table tbody tr:hover,.tester-table tr.selected{background:#132238}.account-cell{color:#f1f5f9;font-weight:600}.status,.severity{display:inline-flex;align-items:center;gap:7px;white-space:nowrap}.status.online{color:var(--green)}.status.offline{color:#718095}.tester-table td:last-child{max-width:180px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.tester-table td:last-child svg{vertical-align:-3px;margin-right:7px}.mono{font-family:Cascadia Code,Consolas,monospace;font-size:12px}.empty{color:var(--muted);text-align:center;height:180px}.detail-panel{padding:0 18px 17px}.selected-name{height:55px;display:flex;align-items:center;gap:9px;font-size:17px;font-weight:650;border-bottom:1px solid var(--line)}.online-dot{width:10px;height:10px;border-radius:50%;background:var(--green);box-shadow:0 0 0 4px #173328}.online-dot.off{background:#677689;box-shadow:none}.detail-panel dl{margin:0}.detail-panel dl>div{min-height:43px;display:grid;grid-template-columns:145px 1fr;align-items:center;border-bottom:1px solid #233246}dt{color:#91a0b3;font-size:13px}dd{margin:0;color:#dce5ee;font-size:13px}dd.warn{color:var(--orange)}.screenshot-block>span{display:block;color:#91a0b3;font-size:13px;margin:13px 0 9px}.screenshot-button{padding:0;width:100%;height:120px;overflow:hidden;border:1px solid #34475f;background:#091019;position:relative;cursor:zoom-in}.screenshot-button img{width:100%;height:100%;object-fit:cover}.screenshot-button b{position:absolute;opacity:0;inset:auto 0 0;padding:8px;color:#fff;background:#040a12cc;transition:opacity .18s;font-size:12px}.screenshot-button:hover b{opacity:1}.no-screenshot{height:100px;border:1px dashed #324258;display:flex;flex-direction:column;gap:8px;justify-content:center;align-items:center;color:#68788c;font-size:12px}.no-screenshot svg{width:22px}.logs-panel{margin-top:14px}.logs-toolbar{height:55px;display:flex;align-items:center;padding:0 18px;border-bottom:1px solid var(--line)}.filters{display:flex;gap:7px;margin-left:28px}.filters button{height:30px;min-width:60px;border:1px solid #304159;background:transparent;color:#8fa0b4;cursor:pointer}.filters button.active{color:#62a7f7;border-color:#3975b9;background:#11243c}.filters button.active.error{color:#ff8278;border-color:#8b3e3c;background:#29191b}.logs-toolbar>span{margin-left:auto}.logs-table th:first-child,.logs-table td:first-child{width:180px;white-space:nowrap}.logs-table th:last-child,.logs-table td:last-child{width:150px;text-align:center}.logs-table tbody tr:hover{background:#111e2d}.error-row td{color:#ef7770}.severity.debug,.severity.info{color:#66c889}.severity.warning{color:var(--orange)}.severity.error{color:var(--red)}.text-button{border:0;background:transparent;color:#ff766e;cursor:pointer;padding:7px}.text-button:hover{text-decoration:underline}.text-button.detail{color:#6fb1ff}.log-actions{display:flex;justify-content:center;gap:2px;white-space:nowrap}.modal{position:fixed;z-index:20;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;background:#03070ce0;padding:40px}.modal img{max-width:min(1400px,95vw);max-height:88vh;border:1px solid #53647b;box-shadow:0 20px 70px #000}.modal button{position:fixed;top:20px;right:24px;width:42px;height:42px;border:1px solid #53647b;background:#101927;cursor:pointer}.event-modal article{width:min(900px,94vw);max-height:86vh;overflow:auto;border:1px solid #40536b;background:#0d1724;box-shadow:0 20px 70px #000;padding:22px}.event-modal article header{display:flex;justify-content:space-between;align-items:center;gap:20px;padding-bottom:14px;border-bottom:1px solid #28384c;color:var(--muted);font-size:12px}.event-modal article header>div{display:flex;align-items:center;gap:14px}.event-modal article header span:first-child{color:#78b8ff;font:600 13px Cascadia Code,Consolas,monospace}.event-modal article h2{margin:18px 0 14px;color:#edf3f9;font-size:16px}.event-modal pre{margin:0;padding:16px;overflow:auto;border:1px solid #26374c;background:#08111c;color:#b9d6ef;font:12px/1.65 Cascadia Code,Consolas,monospace;white-space:pre-wrap;word-break:break-word}.page-panel{margin-top:10px;min-height:560px}.page-toolbar{min-height:66px;padding:12px 18px;display:flex;align-items:center;gap:18px;border-bottom:1px solid var(--line)}.page-toolbar .filters{margin-left:0}.page-toolbar>span{margin-left:auto;color:var(--muted);font-size:12px;white-space:nowrap}.search-box{width:min(340px,32vw);height:36px;display:flex;align-items:center;gap:9px;padding:0 11px;border:1px solid #314258;background:#0a131f;color:#718197}.search-box:focus-within{border-color:#508fcf;color:#77b4f6}.search-box svg{width:17px;flex:0 0 auto}.search-box input{min-width:0;width:100%;height:100%;border:0;outline:0;background:transparent;color:#e5ecf4}.session-table{min-width:1050px}.session-table th:first-child,.session-table td:first-child{width:180px;white-space:nowrap}.session-table th:last-child,.session-table td:last-child{width:100px;text-align:center}.session-table tbody tr:hover,.issue-table tbody tr:hover{background:#111e2d}.window-cell{max-width:250px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.window-cell svg{width:16px;vertical-align:-3px;margin-right:7px}.issue-count{color:var(--red);font-weight:700}.issue-table{min-width:1050px}.issue-table td:nth-child(5){max-width:420px}.muted{color:#718095}.evidence-badge{height:27px;padding:0 9px;display:inline-flex;align-items:center;gap:5px;border:1px solid #7b4d31;background:#271d18;color:#f2a249;cursor:pointer}.evidence-badge:hover{border-color:#d4864d;color:#ffc17c}.evidence-badge svg{width:14px}.session-modal article{width:min(1050px,94vw)}.session-summary{display:grid;grid-template-columns:repeat(2,1fr);border:1px solid #29394c}.session-summary>div{min-height:43px;display:grid;grid-template-columns:120px 1fr;align-items:center;padding:0 13px;border-bottom:1px solid #223043}.session-summary>div:nth-child(odd){border-right:1px solid #223043}.session-event-list{border:1px solid #29394c;max-height:390px;overflow:auto}.session-event-list>button{width:100%;min-height:43px;padding:7px 12px;display:grid;grid-template-columns:82px 68px minmax(145px,.45fr) 1fr;align-items:center;gap:12px;border:0;border-bottom:1px solid #223043;background:#0a131f;text-align:left;cursor:pointer}.session-event-list>button:hover{background:#132238}.session-event-list time{color:var(--muted);font-size:12px}.session-event-list b{min-width:0;color:#dce5ee;font-weight:400;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.empty.compact{height:90px;display:grid;place-items:center}.login-shell,.loading-screen{min-height:100vh;display:grid;place-items:center;background:radial-gradient(circle at 50% 38%,#13243a 0,#0b111b 44%)}.login-panel{width:min(410px,calc(100vw - 32px));padding:34px 36px 38px;border:1px solid #304157;background:#0e1723;box-shadow:0 28px 80px #00000059}.brand-mark{display:flex;align-items:center;gap:9px;color:#d8ad62;font-weight:650;margin-bottom:37px}.login-panel h1{margin:0 0 9px;font-size:24px;color:#fff}.login-panel>p{color:var(--muted);margin:0 0 27px;font-size:13px}.login-panel form{display:grid;gap:16px}.login-panel label{display:grid;gap:7px;color:#b8c3d0;font-size:13px}.login-panel input{height:43px;border:1px solid #34465d;background:#0a121d;color:#fff;outline:0;padding:0 12px}.login-panel input:focus{border-color:#508fcf}.primary-button{height:44px;border:0;color:#07120c;font-weight:650;background:var(--green);cursor:pointer}.primary-button:disabled{opacity:.5;cursor:default}.login-error{display:flex;align-items:center;gap:7px;color:#f48a82;font-size:12px}.loading-screen{color:#a9b6c5;display:flex;gap:12px}.loading-screen svg{color:var(--green)}.spin{animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media(max-width:1100px){.app-shell{grid-template-columns:72px 1fr}.brand strong,.sidebar nav button{font-size:0}.brand{justify-content:center;padding-inline:0}.sidebar nav button,.logout{justify-content:center;padding:0}.middle-grid{grid-template-columns:1fr}.detail-panel{min-height:320px}.metrics-band{grid-template-columns:repeat(2,1fr);height:auto}.metric{border-bottom:1px solid var(--line)}.page-toolbar{flex-wrap:wrap}.search-box{width:300px}.page-toolbar>span{margin-left:0}}@media(max-width:720px){.app-shell{display:block}.sidebar{position:sticky;z-index:10;height:58px;padding:0 8px;flex-direction:row;align-items:center}.brand{display:none}.sidebar nav{display:flex;min-width:0;flex:1;height:100%}.sidebar nav button{flex:1;height:100%;padding:0 5px;justify-content:center;border-left:0;border-bottom:2px solid transparent;font-size:0}.sidebar nav button.active{border-bottom-color:var(--blue)}.sidebar nav button svg{width:20px}.logout{margin:0;width:40px;font-size:0}.dashboard{padding:14px}.topbar{height:auto;align-items:flex-start;margin-bottom:16px}.top-actions>span:not(.connection){display:none}.metrics-band{grid-template-columns:1fr 1fr}.metric{padding:15px;gap:10px}.metric-icon{width:38px;height:38px}.metric strong{font-size:24px}.middle-grid{display:block}.detail-panel{margin-top:14px}.tester-table{min-width:820px}.logs-table{min-width:900px}.page-toolbar{align-items:stretch;gap:10px}.page-toolbar .filters{width:100%;overflow-x:auto}.page-toolbar .filters button{flex:0 0 auto}.search-box{width:100%}.session-summary{grid-template-columns:1fr}.session-summary>div:nth-child(odd){border-right:0}.session-event-list>button{grid-template-columns:72px 64px 1fr}.session-event-list b{grid-column:1 / -1}.modal{padding:12px}}
