:root{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;color:#24312d;background:#f5f8f6}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button{cursor:pointer;border:1px solid #dce5e1;background:#fff;border-radius:8px;padding:9px 14px}.primary{background:#2f6f5e;color:#fff;border-color:#2f6f5e}.danger{color:#a33}.hidden{display:none!important}.login-wrap{min-height:100vh;display:grid;place-items:center;padding:24px}.login-card{width:min(420px,100%);background:#fff;border-radius:20px;padding:34px;box-shadow:0 18px 70px rgba(24,60,48,.12)}.brand{color:#2f6f5e;font-weight:800}.login-card h1{margin:8px 0 26px}.login-card label{display:block;margin:14px 0;color:#66756f}.login-card input{width:100%;margin-top:7px;padding:12px;border:1px solid #dbe4e0;border-radius:9px}.login-card .primary{width:100%;margin-top:10px}.tip,.muted{color:#8a9691;font-size:13px}.app{display:grid;grid-template-columns:230px 1fr;min-height:100vh}.sidebar{background:#173f34;color:#fff;padding:24px 16px;display:flex;flex-direction:column;gap:8px}.logo{font-size:22px;font-weight:800;padding:6px 10px 24px}.logo small{font-size:11px;font-weight:500;opacity:.65}.nav{color:#dcebe6;background:transparent;border-color:transparent;text-align:left}.nav.active,.nav:hover{background:#2f6f5e;border-color:#2f6f5e}.side-bottom{margin-top:auto;display:flex;justify-content:space-between;align-items:center;color:#b9d0c8;font-size:13px}.side-bottom button{background:transparent;color:#fff;border:none;padding:5px}.main{padding:28px;min-width:0}.topbar{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:20px;gap:16px}.topbar h2{margin:0 0 6px}.topbar p{margin:0;color:#7b8883;max-width:850px}.panel{background:#fff;border-radius:14px;padding:18px;margin-bottom:18px;box-shadow:0 5px 24px rgba(33,70,57,.05)}.stats{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;margin-bottom:18px}.stat{background:#fff;border-radius:13px;padding:17px}.stat b{display:block;font-size:25px;margin-top:5px}.stat span{color:#82908a;font-size:13px}.filters{display:grid;grid-template-columns:2fr repeat(4,1fr) auto;gap:10px}.filters input,.filters select,.form-grid input,.form-grid select,.form-grid textarea,.collector-grid input,.collector-grid select{width:100%;border:1px solid #dce5e1;border-radius:8px;padding:9px;background:#fff}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;font-size:14px}th,td{text-align:left;padding:11px 9px;border-bottom:1px solid #edf1ef;vertical-align:top}th{color:#71817b;font-weight:600;white-space:nowrap}.status{display:inline-block;padding:3px 9px;border-radius:99px;font-size:12px}.s0{background:#fff4da;color:#8d6710}.s1{background:#e8f5ef;color:#236550}.s2{background:#f1f1f1;color:#747474}.actions{display:flex;gap:6px;flex-wrap:wrap}.actions button{padding:5px 8px;font-size:12px}.pager{display:flex;justify-content:center;align-items:center;gap:14px;padding-top:16px}.import-box input[type=file]{display:block;margin:18px 0}.check{display:flex!important;align-items:center;gap:8px;margin:8px 0}.check input{width:auto!important;margin:0!important}.result{white-space:pre-wrap;background:#f6f8f7;border-radius:9px;padding:12px;min-height:70px;color:#43534d;overflow:auto}.result.mini{min-height:42px;max-height:240px;margin-top:12px}.result.log{max-height:65vh}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.form-grid label,.collector-grid label{font-size:13px;color:#63726c}.form-grid label span{color:#99a39f}.form-grid input,.form-grid select,.form-grid textarea{margin-top:6px;color:#26332f}.full{grid-column:1/-1}.compact{grid-template-columns:repeat(4,minmax(0,1fr))}.form-actions{display:flex;gap:10px}.collector-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.collector-grid h3,.panel h3{margin-top:0}.collector-grid label{display:block;margin:12px 0}.inline-form{display:grid;grid-template-columns:140px 180px 1fr;gap:10px;align-items:end}.section-title{display:flex;align-items:center;justify-content:space-between;gap:12px}.url-cell{max-width:360px;word-break:break-all}.url-cell a{color:#2f6f5e}.error-cell{max-width:260px;color:#9b4e45;font-size:12px}.job{display:inline-block;padding:3px 8px;border-radius:99px;font-size:12px}.job.success{background:#e8f5ef;color:#236550}.job.partial{background:#fff4da;color:#8d6710}.job.failed{background:#fdebea;color:#9b3732}.job.running{background:#e9f0ff;color:#345ca8}.list-row{padding:10px 0;border-bottom:1px solid #edf1ef}dialog{width:min(920px,94vw);max-height:92vh;border:none;border-radius:16px;padding:0;box-shadow:0 25px 90px rgba(0,0,0,.24)}dialog::backdrop{background:rgba(13,27,23,.5)}.case-form{padding:22px}.dialog-head{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #edf1ef;margin-bottom:18px}.dialog-head h2{margin:0 0 14px}.icon-btn{font-size:26px;border:none}.dialog-actions{display:flex;justify-content:flex-end;gap:10px;border-top:1px solid #edf1ef;padding-top:16px;margin-top:20px}.toast{position:fixed;right:24px;bottom:24px;background:#173f34;color:#fff;padding:12px 18px;border-radius:9px;box-shadow:0 8px 30px rgba(0,0,0,.15);z-index:99}code{background:#f0f4f2;padding:2px 5px;border-radius:4px}@media(max-width:1050px){.app{grid-template-columns:1fr}.sidebar{display:none}.stats{grid-template-columns:repeat(2,1fr)}.filters{grid-template-columns:1fr 1fr}.compact{grid-template-columns:1fr 1fr}.collector-grid{grid-template-columns:1fr}.main{padding:16px}}@media(max-width:650px){.stats,.filters,.form-grid,.compact,.inline-form{grid-template-columns:1fr}.full{grid-column:auto}}
/* V1.5 */
.stats-7{grid-template-columns:repeat(7,minmax(0,1fr))}.filters-v14{grid-template-columns:2fr repeat(5,minmax(110px,1fr)) auto auto}.compact-check{align-self:center;white-space:nowrap}.quality{display:inline-block;min-width:34px;text-align:center;padding:4px 8px;border-radius:999px;font-weight:800;font-size:12px}.q-high{background:#dff5e9;color:#156344}.q-mid{background:#e7f0ff;color:#315a9e}.q-low{background:#fff1cf;color:#8a6110}.q-bad{background:#fde7e4;color:#a23a32}.dup{display:inline-block;background:#fff0e9;color:#a84e25;padding:3px 7px;border-radius:999px;font-size:12px}.review-summary{font-size:15px}.review-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.review-card{background:#fff;border-radius:14px;padding:18px;box-shadow:0 5px 24px rgba(33,70,57,.05);border:1px solid #edf1ef}.review-card h3{margin:10px 0}.review-card-head{display:flex;justify-content:space-between;align-items:center}.flags{display:flex;gap:6px;flex-wrap:wrap;margin:10px 0}.flags span{background:#f4f6f5;border:1px solid #e5ebe8;padding:3px 7px;border-radius:6px;font-size:12px;color:#65736e}.dup-line{background:#fff8f4;border:1px solid #f5d8c8;padding:9px;border-radius:8px;color:#8c492b;font-size:13px;margin:10px 0}.wide-dialog{width:min(1280px,96vw)}.review-dialog{padding:22px}.review-meta{padding:10px 0}.review-columns{display:grid;grid-template-columns:1fr 1fr;gap:18px;min-height:58vh}.review-columns>div{min-width:0}.raw-text{white-space:pre-wrap;line-height:1.7;background:#f7f8f7;border:1px solid #e5ebe8;border-radius:10px;padding:14px;max-height:62vh;overflow:auto}.parsed-card{border:1px solid #e5ebe8;border-radius:10px;padding:14px;max-height:50vh;overflow:auto;line-height:1.65}.parsed-card h4{margin-top:0}.duplicate-box{margin-top:12px;background:#fff8f4;border:1px solid #f5d8c8;border-radius:10px;padding:12px}.analytics-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.bar-row{display:grid;grid-template-columns:140px 1fr 60px;gap:10px;align-items:center;padding:7px 0}.bar-row>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bar{height:8px;background:#edf2ef;border-radius:999px;overflow:hidden}.bar i{display:block;height:100%;background:#4a806f;border-radius:999px}.bar-row b{text-align:right}@media(max-width:1300px){.stats-7{grid-template-columns:repeat(4,1fr)}.filters-v14{grid-template-columns:repeat(3,1fr)}}@media(max-width:900px){.review-list,.review-columns,.analytics-grid{grid-template-columns:1fr}.stats-7{grid-template-columns:repeat(2,1fr)}}

/* V1.6 来源溯源 / 参考文献 */
.ref-list{display:grid;gap:10px;margin-top:8px}.ref-item{padding:10px 12px;border:1px solid #e5ebe8;border-radius:10px;background:#f8fbfa;line-height:1.6}.ref-item a{display:block;max-width:100%;overflow-wrap:anywhere;color:#276a58;margin:4px 0}.ref-item .status{margin-left:6px;font-size:11px;padding:2px 6px}
