:root{--bg:#141414;--card:#1d1d1d;--line:#2c2c2c;--txt:#e8e8e8;--mute:#8a8a8a;--acc:#e05a4e;--good:#4caf7d;--warn:#d98e3a;--blue:#5b8def}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);color:var(--txt);font-family:-apple-system,PingFang SC,Microsoft YaHei,sans-serif;font-size:14px;line-height:1.65}.wrap{max-width:1080px;margin:0 auto;padding:36px 20px 80px}h1{font-size:22px;font-weight:600;letter-spacing:.5px}h1 i{font-style:normal;color:var(--acc)}.sub{color:var(--mute);margin-top:6px;font-size:13px}.head-row{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.card{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:20px;margin-bottom:16px}.card h3{font-size:15px;font-weight:600;margin-bottom:14px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}.tag{font-size:11px;color:var(--mute);border:1px solid var(--line);padding:1px 7px;border-radius:4px;font-weight:400}input,select,textarea{background:#151515;border:1px solid var(--line);color:var(--txt);padding:9px 11px;border-radius:6px;font-size:14px;outline:none}input:focus,select:focus,textarea:focus{border-color:var(--acc)}button{background:var(--acc);color:#fff;border:none;padding:9px 18px;border-radius:6px;cursor:pointer;font-size:13px}button.ghost{background:transparent;border:1px solid var(--line);color:var(--txt)}button:disabled{opacity:.5;cursor:not-allowed}button:hover:not(:disabled){opacity:.88}button.small{padding:4px 10px;font-size:12px}.muted{color:var(--mute)}.dim{color:#5a5a5a}.bold{font-weight:600}table{width:100%;border-collapse:collapse;margin-top:10px}td,th{text-align:left;padding:8px 10px;border-bottom:1px solid #232323;font-size:13px;vertical-align:top}th{color:var(--mute);font-weight:500;font-size:12px}.row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.mt{margin-top:12px}.mb{margin-bottom:12px}.badge{display:inline-block;font-size:11px;padding:1px 9px;border-radius:10px;border:1px solid var(--line)}.badge.ok{color:var(--good);border-color:var(--good)}.badge.warn{color:var(--warn);border-color:var(--warn)}.badge.bad{color:var(--acc);border-color:var(--acc)}.badge.na{color:var(--mute)}.alert{border-radius:6px;padding:9px 14px;font-size:13px;background:#3a1f1e;color:var(--acc)}.alert.ok{background:#1d3a2a;color:var(--good)}.clickable{cursor:pointer}tr.clickable:hover{background:#242424}details.evi{margin-top:4px}details.evi summary{cursor:pointer;color:#5a5a5a;font-size:11px}details.evi pre{white-space:pre-wrap;word-break:break-all;background:#151515;border:1px solid #232323;border-radius:6px;padding:10px;font-size:11px;color:#9a9a9a;margin-top:6px;max-height:240px;overflow:auto}.login-wrap{position:fixed;inset:0;z-index:999;background:var(--bg);display:flex;align-items:center;justify-content:center}.login-wrap:before{content:"";position:absolute;inset:0;background:radial-gradient(1100px 550px at 50% -10%,#241414 0,#141414 55%);pointer-events:none}.login-card{position:relative;width:360px;padding:38px 34px 26px;background:var(--card);border:1px solid var(--line);border-radius:12px}.login-brand{text-align:center;margin-bottom:26px}.login-logo{font-size:22px;font-weight:700;letter-spacing:1px}.login-logo i{font-style:normal;color:var(--acc)}.login-sub{margin-top:8px}.login-label,.login-sub{font-size:12px;color:var(--mute)}.login-label{display:block;margin-bottom:6px}.login-input{width:100%;margin-bottom:12px}.login-btn{width:100%;padding:11px;font-size:14px;font-weight:600}.login-link{background:none;border:none;color:var(--mute);font-size:13px;cursor:pointer;margin:0 auto;display:block;padding:0}.login-link:hover{color:var(--acc)}.login-change{border-top:1px dashed var(--line);padding-top:16px;margin-top:4px}.login-foot{text-align:center;color:#555;font-size:11px;margin-top:18px}.score-ring{width:150px;height:150px;border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;margin:0 auto;border:8px solid}.score-ring .n{font-size:42px;font-weight:700;line-height:1.1}.score-ring .g{font-size:13px;color:var(--mute)}.grade-A{border-color:var(--good);color:var(--good)}.grade-B{border-color:var(--blue);color:var(--blue)}.grade-C{border-color:var(--warn);color:var(--warn)}.grade-D{border-color:var(--acc);color:var(--acc)}.dim-bar{display:flex;align-items:center;gap:10px;margin-bottom:10px}.dim-bar .name{width:120px;font-size:12px;color:var(--mute);flex-shrink:0}.dim-bar .track{flex:1 1;background:#151515;border-radius:4px;height:10px;overflow:hidden}.dim-bar .fill{height:100%;border-radius:4px;transition:width .3s}.dim-bar .val{width:34px;text-align:right;font-size:12px;flex-shrink:0}.report{background:#fff;color:#1a1a1a;max-width:900px;margin:0 auto;padding:40px 36px 60px}.report h2{font-size:20px;margin:26px 0 12px;padding-bottom:8px;border-bottom:2px solid #e05a4e}.report h4{font-size:14px;margin:14px 0 6px}.report table{margin-top:6px}.report td,.report th{border-bottom:1px solid #e5e5e5;color:#333}.report .light-badge{display:inline-block;font-size:11px;padding:1px 9px;border-radius:10px;border:1px solid}.report .lb-ok{color:#2e7d54;border-color:#2e7d54}.report .lb-warn{color:#b06a20;border-color:#b06a20}.report .lb-bad{color:#c0392b;border-color:#c0392b}.report .lb-na{color:#888;border-color:#ccc}.report .dim-track{background:#eee;border-radius:4px;height:10px;overflow:hidden;flex:1 1}.report .dim-fill{height:100%}.report-actions{display:flex;gap:10px;justify-content:flex-end;margin:14px 0}@media print{.no-print{display:none!important}body{background:#fff}.report{padding:0;max-width:none}}