*{box-sizing:border-box}
body{font-family:"Microsoft YaHei",system-ui,sans-serif;margin:0;background:#f5f7fb;color:#222}
.topbar{background:#123a5c;color:#fff;padding:12px 24px;display:flex;justify-content:space-between}
.topbar .sub{font-size:12px;opacity:.75;margin-left:8px}
.nav a{color:#fff;margin:0 10px;text-decoration:none;font-size:14px}
.container{max-width:1300px;margin:20px auto;padding:0 16px}
.hero{background:#fff;border-radius:12px;padding:22px;margin-bottom:16px;box-shadow:0 1px 4px rgba(0,0,0,.06)}
.hero h1{margin:0 0 8px;font-size:22px}
.upload{background:#fff;border-radius:12px;padding:20px;box-shadow:0 1px 4px rgba(0,0,0,.06)}
.upload-box{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:12px}
label{font-weight:600;display:block}
input[type=file]{width:100%;padding:10px;border:1px dashed #9db3d0;border-radius:8px;margin-top:6px;background:#fbfdff}
.check input{width:auto}
.btn{display:inline-block;padding:9px 18px;border:1px solid #c9cfdb;border-radius:8px;background:#fff;color:#222;text-decoration:none;cursor:pointer;font-size:14px}
.btn.primary{background:#2f6fd6;border-color:#2f6fd6;color:#fff}
.btn.big{font-size:16px;padding:12px 26px;margin-top:8px}
.steps{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:16px}
.step{background:#fff;padding:14px;border-radius:10px;text-align:center}
.step span{display:block;color:#777;font-size:13px;margin-top:4px}
.summary{display:flex;gap:12px;margin:14px 0}
.summary .s{flex:1;background:#fff;border-radius:10px;padding:12px;text-align:center}
.summary b{font-size:24px;display:block}
.summary .fatal b{color:#c0392b}.summary .high b{color:#d97706}.summary .medium b{color:#2f6fd6}.summary .pass b{color:#0a7d32}.summary .warn b{color:#7f8c8d}
.tbl{width:100%;border-collapse:collapse;background:#fff;border-radius:10px;overflow:hidden;box-shadow:0 1px 4px rgba(0,0,0,.06)}
.tbl th,.tbl td{padding:9px;border-bottom:1px solid #eee;font-size:13px;vertical-align:top;text-align:left}
.tbl th{background:#eef3fa}
.risk{padding:2px 8px;border-radius:10px;font-size:12px;color:#fff;display:inline-block}
.risk.fatal{background:#c0392b}.risk.high{background:#d97706}.risk.medium{background:#2f6fd6}.risk.low{background:#7f8c8d}
.red{color:#c0392b}.green{color:#0a7d32}.muted{color:#888}.quote{background:#f7f9fc;padding:6px;border-radius:6px;display:block}
.md{background:#f7f9fc;padding:16px;border-radius:8px;white-space:pre-wrap;font-size:12px}
.flash{padding:10px 14px;border-radius:8px;margin-bottom:12px}
.flash.ok{background:#e8f7ee;color:#0a7d32}.flash.err{background:#fdecec;color:#c0392b}
footer{text-align:center;color:#999;font-size:12px;padding:24px 0}
.plans{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:0 0 16px}
.plan{background:#fff;border-radius:10px;padding:12px 16px;box-shadow:0 1px 4px rgba(0,0,0,.06)}
.plan b{display:block;margin-bottom:4px}
.plan span{color:#777;font-size:13px}
.plan.free{border-left:4px solid #7f8c8d}
.plan.pro{border-left:4px solid #2f6fd6}
.mode{display:flex;gap:24px;margin:8px 0}
.paywall{background:#fff8e6;border:1px solid #f0d08a;border-radius:12px;padding:18px;margin-top:20px}
.paywall h3{margin-top:0}*{box-sizing:border-box}
body{font-family:"Microsoft YaHei",system-ui,sans-serif;margin:0;background:#f5f7fb;color:#222}
.topbar{background:#1f2a44;color:#fff;padding:12px 24px;display:flex;justify-content:space-between;align-items:center}
.topbar .sub{font-size:12px;opacity:.7;margin-left:8px}
.nav a{color:#fff;margin:0 10px;text-decoration:none;font-size:14px}
.nav a:hover{text-decoration:underline}
.container{max-width:1200px;margin:20px auto;padding:0 16px}
.statrow{display:flex;gap:12px;margin-bottom:16px}
.stat{flex:1;background:#fff;border-radius:10px;padding:14px;text-align:center;box-shadow:0 1px 4px rgba(0,0,0,.06)}
.stat b{font-size:26px;display:block}
.stat span{color:#777;font-size:13px}
.stat.ok b{color:#0a7d32}.stat.warn b{color:#c0392b}
.filter{display:flex;gap:8px;margin-bottom:14px}
.filter select,.filter input{padding:8px;border:1px solid #ccc;border-radius:6px}
.tbl{width:100%;border-collapse:collapse;background:#fff;border-radius:10px;overflow:hidden;box-shadow:0 1px 4px rgba(0,0,0,.06)}
.tbl th,.tbl td{padding:10px;border-bottom:1px solid #eee;font-size:14px;vertical-align:top}
.tbl th{background:#f0f3f9;text-align:left}
.tbl tr.off{opacity:.45}
.btn{display:inline-block;padding:8px 14px;border:1px solid #c9cfdb;border-radius:8px;background:#fff;color:#222;text-decoration:none;cursor:pointer;font-size:14px}
.btn.primary{background:#2f6fd6;border-color:#2f6fd6;color:#fff}
.btn.danger{color:#c0392b;border-color:#e6b4b4}
.btn.small{padding:5px 10px}
.btn.tiny{padding:3px 8px;font-size:12px}
.risk{padding:2px 8px;border-radius:10px;font-size:12px;color:#fff}
.risk.fatal{background:#c0392b}.risk.high{background:#d97706}.risk.medium{background:#2f6fd6}.risk.low{background:#7f8c8d}
.tag{background:#eef2fb;padding:2px 8px;border-radius:8px;font-size:12px;color:#2f6fd6}
.muted{color:#888}.red{color:#c0392b}
.form{background:#fff;padding:18px;border-radius:10px;box-shadow:0 1px 4px rgba(0,0,0,.06)}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
label{display:block;margin-bottom:10px;font-size:14px;font-weight:600}
input,select,textarea{width:100%;padding:8px;border:1px solid #ccc;border-radius:6px;margin-top:4px;font-family:inherit}
textarea{resize:vertical}
.check input{width:auto}
.actions{margin-top:12px;display:flex;gap:10px}
.flash{padding:10px 14px;border-radius:8px;margin-bottom:12px}
.flash.ok{background:#e8f7ee;color:#0a7d32}.flash.err{background:#fdecec;color:#c0392b}
.case{background:#fff;border-radius:10px;padding:12px 16px;margin-bottom:10px;box-shadow:0 1px 4px rgba(0,0,0,.06)}
footer{text-align:center;color:#999;font-size:12px;padding:24px 0}