*{box-sizing:border-box}
html,body{max-width:100%;overflow-x:hidden}
body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",Arial,sans-serif;background:#f4f7fb;color:#172033}
a{color:#1d72e8;text-decoration:none}
input,select,textarea,button{font:inherit}
button,.btn{border:0;border-radius:8px;padding:9px 13px;background:#edf2f8;color:#243248;display:inline-flex;align-items:center;justify-content:center;gap:6px;cursor:pointer;min-height:36px}
button:disabled{opacity:.55;cursor:not-allowed}
[hidden]{display:none!important}
.primary,.btn.primary{background:#1d72e8;color:#fff}
.green{background:#22a64b;color:#fff}
.danger{background:#ff4d4f;color:#fff;border:0;border-radius:8px;padding:9px 13px;cursor:pointer}
.mobile{max-width:920px;margin:0 auto;padding:16px 12px 28px}
.hero{min-height:160px;border-radius:0 0 22px 22px;background:linear-gradient(135deg,#2378e8,#1654c8);color:#fff;margin:-16px -12px 0;padding:54px 24px 38px}
.hero h1{font-size:30px;margin:0 0 8px}.hero p{opacity:.86;margin:0;font-size:15px}
.panel{background:#fff;border:1px solid #e5ebf4;border-radius:14px;box-shadow:0 8px 30px rgba(28,43,68,.06);padding:18px;margin-top:16px}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.form-grid label{display:flex;flex-direction:column;gap:7px;font-weight:700;color:#243248}
.form-grid input,.form-grid select,.form-grid textarea{width:100%;border:1.5px solid #dfe7f1;border-radius:10px;padding:11px 12px;background:#fff;color:#172033;outline:none}
.form-grid input:focus,.form-grid select:focus,.form-grid textarea:focus{border-color:#1d72e8;box-shadow:0 0 0 4px rgba(29,114,232,.1)}
.field-tip{display:block;color:#728198;font-size:12px;font-weight:500;line-height:1.5}
.form-block{display:flex;flex-direction:column;gap:7px;font-weight:700;color:#243248}
.block-title{font-weight:800;color:#243248}
.period-field select{min-height:46px}
.site-field{display:none!important}
.split{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.auth-line{grid-column:1/-1;display:flex;align-items:center;gap:4px;color:#5f6f86;font-size:13px;font-weight:600;margin:-2px 0 -4px}
.auth-check{display:inline-flex!important;flex-direction:row!important;align-items:center;gap:7px!important;font-weight:600!important;color:#5f6f86!important}
.auth-check input{width:18px!important;height:18px;padding:0!important;margin:0;accent-color:#1d72e8}
.auth-link{min-height:auto;padding:0;border:0;background:transparent;color:#1d72e8;font-weight:700}
.auth-line.agreed{color:#43556c}
.auth-modal{position:fixed;inset:0;z-index:100;background:#f4f7fb;display:flex;align-items:stretch;justify-content:center}
.auth-dialog{width:min(920px,100%);height:100%;display:flex;flex-direction:column;background:#f4f7fb}
.auth-title{height:64px;display:flex;align-items:center;justify-content:center;position:relative;background:#f4f7fb;flex:0 0 auto}.auth-title h2{font-size:26px;margin:0;font-weight:900}.auth-title button{position:absolute;right:12px;top:12px;width:40px;height:40px;padding:0;border-radius:999px;background:transparent;font-size:30px;line-height:1;color:#172033}
.auth-content{flex:1;overflow:auto;padding:24px 30px 130px;color:#343d4c;font-size:20px;line-height:1.9;font-weight:650}
.auth-content h3{font-size:22px;margin:22px 0 10px;color:#172033;font-weight:900}.auth-content p{margin:0 0 14px;text-indent:2em}
.auth-actions{position:fixed;left:50%;bottom:18px;transform:translateX(-50%);width:min(920px,100%);display:grid;grid-template-columns:1fr 2fr;gap:14px;padding:0 28px}
.auth-actions button{border-radius:999px;min-height:58px;font-size:20px;font-weight:900;box-shadow:0 8px 22px rgba(29,114,232,.22)}.auth-reject{background:#95a3ad;color:#fff}.auth-accept{background:#1687ff;color:#fff}
body.auth-open{overflow:hidden}
.model-picker{position:relative}
.model-drop{display:none;position:absolute;left:0;right:0;top:calc(100% + 4px);z-index:30;background:#fff;border:1.5px solid #dfe7f1;border-radius:10px;box-shadow:0 12px 34px rgba(28,43,68,.14);max-height:260px;overflow:auto}
.model-drop.open{display:block}
.model-option{display:flex;justify-content:space-between;gap:10px;padding:11px 12px;border-bottom:1px solid #edf1f7;cursor:pointer;font-weight:700}
.model-option:last-child{border-bottom:0}
.model-option:hover,.model-option.active{background:#eef6ff;color:#1d72e8}
.model-option small{font-weight:500;color:#728198;white-space:nowrap}
.model-empty{padding:14px;color:#728198;font-weight:500}
.form-grid input[type=checkbox],.form-grid input[type=radio]{width:24px!important;height:24px!important;min-width:24px;padding:0!important;margin:0;flex:0 0 24px;accent-color:#1d72e8;box-shadow:none!important}
.radio-row{display:flex;gap:10px;align-items:center;min-height:46px;flex-wrap:wrap}
.radio-row label{display:inline-flex!important;flex-direction:row!important;align-items:center;justify-content:flex-start;gap:8px!important;min-height:44px;padding:9px 13px;border:1.5px solid #dfe7f1;border-radius:12px;background:#fff;font-weight:700!important;color:#243248!important}
.radio-row label:has(input:checked){border-color:#1d72e8;background:#eef6ff;color:#1d72e8!important}
fieldset{grid-column:1/-1;border:1.5px solid #dfe7f1;border-radius:14px;padding:14px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;background:#fbfdff}
fieldset legend{font-weight:900;padding:0 8px;color:#172033;font-size:16px}
fieldset label{display:flex!important;flex-direction:row!important;align-items:center;justify-content:flex-start;gap:10px!important;min-width:0;min-height:46px;border:1.5px solid #e3ebf5;border-radius:12px;background:#fff;padding:10px 12px;font-weight:700!important;color:#243248!important;line-height:1.35;word-break:normal;overflow-wrap:normal}
fieldset label:has(input:checked){border-color:#1d72e8;background:#eef6ff;color:#1d72e8!important}
.risk-tip{grid-column:1/-1;color:#d46b08;background:#fff8e6;border:1px solid #ffe0a3;border-radius:10px;padding:8px 10px;font-size:12px;font-weight:700;line-height:1.5;margin-top:0}
.calc-card{grid-column:1/-1;display:grid;grid-template-columns:repeat(4,1fr);gap:8px;background:#f8fbff;border:1px solid #d8e8ff;border-radius:12px;padding:10px}
.calc-card div{background:#fff;border-radius:10px;padding:10px;text-align:center}.calc-card span{display:block;color:#728198;font-size:12px}.calc-card strong{display:block;margin-top:4px;font-size:18px;color:#1d72e8}
.form-grid>.primary{grid-column:1/-1;font-size:18px;font-weight:800;padding:14px}.msg{grid-column:1/-1;color:#e13b3f;font-weight:700}
.risk-result-panel{grid-column:1/-1;margin-top:4px;padding:16px;border:1.5px solid #d8e0ec;border-radius:14px;background:#fff;box-shadow:0 8px 26px rgba(28,43,68,.06)}
.risk-result-panel.pass{border-color:#16a34a;background:#f0fdf4}
.risk-result-panel.reject{border-color:#dc2626;background:#fef2f2}
.risk-result-panel.need_income_material,.risk-result-panel.need_2x_deposit,.risk-result-panel.need_3x_deposit,.risk-result-panel.manual_review,.risk-result-panel.pending{border-color:#2563eb;background:#eff6ff}
.risk-result-panel h2{margin:0 0 8px;font-size:19px;color:#172033}
.risk-result-panel p{margin:0;color:#43556c;line-height:1.65;font-weight:700}
.risk-result-panel ul{margin:10px 0 0;padding-left:18px;color:#43556c;line-height:1.7}
.risk-deposit{margin-top:12px;border-radius:12px;background:#fff;border:1px solid #d8e8ff;padding:11px 12px;color:#243248;font-weight:800}
.risk-deposit b{color:#1d72e8;font-size:20px}
.risk-actions{display:grid;gap:10px;margin-top:12px}
.risk-actions button{width:100%;min-height:46px;font-weight:900}
.income-upload{margin-top:12px;border-top:1px solid rgba(29,114,232,.18);padding-top:12px;display:grid;gap:10px}
.income-upload label{display:flex!important;flex-direction:column!important;gap:7px!important;font-weight:800!important;color:#243248!important}
.income-upload input,.income-upload select{width:100%;border:1.5px solid #dfe7f1;border-radius:10px;padding:11px 12px;background:#fff;color:#172033}
.success{text-align:center}.success h1{font-size:28px;color:#22a64b}.screen-tip{margin-top:12px;color:#e13b3f;font-weight:900}.success-note{color:#16833c;font-weight:800;margin:4px 0 12px}
.login-page{min-height:100vh;display:grid;place-items:center;padding:24px}.login-box{width:min(390px,100%);background:#fff;border-radius:16px;padding:26px;border:1px solid #e5ebf4;box-shadow:0 12px 42px rgba(28,43,68,.12)}
.login-box h1{margin:0 0 20px}.login-box label{display:block;margin-bottom:12px;font-weight:700}.login-box input{width:100%;margin-top:7px;padding:12px;border:1.5px solid #dfe7f1;border-radius:10px}.login-box button{width:100%;margin-top:8px}
.admin-nav{height:64px;background:#152033;color:#fff;display:flex;align-items:center;padding:0 24px;gap:24px;position:sticky;top:0;z-index:20;box-shadow:0 2px 16px rgba(0,0,0,.16)}
.brand{font-weight:900;font-size:20px}.admin-nav nav{display:flex;gap:8px;flex:1}.admin-nav a{color:#dbe5f4;padding:8px 12px;border-radius:8px}.admin-nav a.active,.admin-nav a:hover{background:rgba(255,255,255,.12);color:#fff}.admin-user{font-weight:700}
.admin-wrap{max-width:1480px;margin:0 auto;padding:24px 18px}.admin-wrap h1{margin:0 0 16px;font-size:26px}
.filters{display:flex;gap:10px;align-items:center;flex-wrap:wrap;background:#fff;border:1px solid #e5ebf4;border-radius:12px;padding:14px;margin-bottom:14px}.filters input,.filters select{border:1.5px solid #dfe7f1;border-radius:9px;padding:9px 11px;min-width:150px}
.rule-form{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;background:#fff;border:1px solid #e5ebf4;border-radius:12px;padding:14px;margin-bottom:14px}
.rule-form label{font-weight:800;color:#243248;display:flex;flex-direction:column;gap:6px}
.rule-form input,.rule-form select,.rule-form textarea{border:1.5px solid #dfe7f1;border-radius:9px;padding:9px 11px;outline:none;width:100%}
.rule-form textarea{min-height:80px;margin:0}
.rule-form .wide{grid-column:1/-1}
.rule-form button{grid-column:1/-1}
.mini-form{display:inline-flex;margin:0}
.risk-block{background:#fff1f0;border:1px solid #ffccc7;color:#b42318;border-radius:10px;padding:12px 14px;font-weight:800}
.rule-hit{border:1px solid #dfe7f1;border-radius:12px;padding:12px;margin-top:10px;background:#fbfcfe}
.rule-hit b{display:block;margin-bottom:6px}.rule-hit span{display:block;color:#728198;font-size:13px}.rule-hit p{margin:8px 0 0;line-height:1.6}
.rule-hit.block{border-color:#ffccc7;background:#fff6f5;color:#8a1f17}
.rule-hit.review{border-color:#ffe2a8;background:#fffaf0}
.rule-hit.warn{border-color:#cfe3ff;background:#f3f8ff}
.notice{background:#eaf3ff;border:1px solid #cfe3ff;color:#31517a;border-radius:10px;padding:10px 12px;margin:12px 0}
.muted{color:#5f6f84;line-height:1.7}
.qr-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:16px}
.qr-card{background:#fff;border:1px solid #e5ebf4;border-radius:14px;box-shadow:0 8px 28px rgba(28,43,68,.05);padding:16px}
.qr-card h2{margin:0 0 12px;font-size:20px}.qr-image{display:block;width:100%;max-width:260px;aspect-ratio:1/1;margin:0 auto 12px;border:1px solid #edf1f7;border-radius:10px;background:#fff;padding:10px}
.qr-url{font-size:12px;color:#43556c;background:#f6f8fb;border:1px solid #edf1f7;border-radius:8px;padding:8px;white-space:normal;word-break:break-all}
.formula-panel,.site-price-card{background:#fff;border:1px solid #e5ebf4;border-radius:14px;box-shadow:0 8px 28px rgba(28,43,68,.05);padding:16px;margin-top:16px}
.formula-panel h2,.site-price-card h2{margin:0 0 12px;font-size:20px}.formula-panel p{margin:8px 0;line-height:1.7}
.site-price-form>.primary{margin-top:16px;width:100%;font-weight:900;padding:13px}
.site-price-fields{display:grid;grid-template-columns:2fr 1fr;gap:12px;margin-bottom:12px}.rate-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:10px}
.site-price-card label{font-weight:800;color:#243248;display:flex;flex-direction:column;gap:6px}.site-price-card input{border:1.5px solid #dfe7f1;border-radius:9px;padding:9px 11px;width:100%}
.table-tools{padding:12px 18px;border-bottom:1px solid #edf1f7;display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.table-tools .notice{margin:0;flex:1 1 420px}
.config-card{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;background:#f8fbff;border:1px solid #d8e8ff;border-radius:12px;padding:10px}
.config-card div{background:#fff;border-radius:10px;padding:10px}.config-card span{display:block;color:#728198;font-size:12px}.config-card b{display:block;margin-top:5px}
.table-card{background:#fff;border:1px solid #e5ebf4;border-radius:14px;box-shadow:0 8px 28px rgba(28,43,68,.05);overflow:auto;margin-top:16px}.table-card h2{margin:0;padding:16px 18px;border-bottom:1px solid #edf1f7}
table{width:100%;border-collapse:collapse;min-width:980px}th,td{padding:13px 14px;border-bottom:1px solid #edf1f7;text-align:left;vertical-align:middle;white-space:nowrap}th{background:#f9fbfd;color:#4c5d73;font-size:13px}td small{color:#728198}
.status,.chip{border-radius:999px;padding:5px 9px;font-size:12px;font-weight:800}.s0{background:#fff4df;color:#b76b00}.s1{background:#e7f8ec;color:#16833c}.s2{background:#ffecec;color:#c42d34}.chip{background:#eef3ff;color:#2059be}
.empty{text-align:center;color:#728198;padding:30px!important}.detail-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}
.summary-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.summary-grid div{background:#fff;border:1px solid #e5ebf4;border-radius:12px;padding:13px}.summary-grid span{display:block;font-size:12px;color:#728198}.summary-grid b{display:block;margin-top:5px}
.summary-grid.compact{grid-template-columns:repeat(3,1fr)}
.risk-admin-card.reject{border-color:#ffccc7;background:#fff6f5}
.risk-admin-card.need_income_material,.risk-admin-card.need_2x_deposit,.risk-admin-card.need_3x_deposit,.risk-admin-card.manual_review,.risk-admin-card.pending{border-color:#cfe3ff;background:#f3f8ff}
.risk-admin-card.pass{border-color:#c7efd3;background:#f3fff6}
.risk-admin-card p{line-height:1.7;color:#43556c;font-weight:700}
.risk-admin-card ul{margin:8px 0 0;line-height:1.7}
.action-row,.inline-form{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.action-row{margin:16px 0}.inline-form input{border:1.5px solid #dfe7f1;border-radius:9px;padding:9px 11px}
textarea{width:100%;min-height:130px;border:1.5px solid #dfe7f1;border-radius:10px;padding:12px;resize:vertical;margin-bottom:10px}
.analysis{border:1px solid #e5ebf4;border-radius:12px;padding:12px;margin-top:12px;background:#fbfcfe}.analysis.高{border-color:#ffc8c8;background:#fff6f6}.analysis.中{border-color:#ffe2a8;background:#fffaf0}.analysis.低{border-color:#c7efd3;background:#f3fff6}.analysis pre,.json{white-space:pre-wrap;line-height:1.7;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}
.report-visual,.official-report-frame{background:#eef3f9;border:1px solid #d9e4f2;border-radius:12px;padding:12px;overflow:auto}.report-image,.report-photo{display:block;width:100%;max-width:1080px;min-width:760px;height:auto;margin:0 auto;border-radius:12px;box-shadow:0 8px 24px rgba(23,32,51,.12);background:#fff}.report-photo{max-width:1365px}.official-report-frame iframe{display:block;width:100%;min-width:760px;height:820px;border:0;border-radius:10px;background:#fff;box-shadow:0 8px 24px rgba(23,32,51,.12)}
code{background:#f0f4fa;padding:2px 5px;border-radius:5px}
@media(max-width:760px){.form-grid{grid-template-columns:1fr}.hero h1{font-size:24px}.split,.calc-card,fieldset,.summary-grid,.rule-form,.config-card,.qr-grid,.site-price-fields,.rate-grid{grid-template-columns:1fr}.auth-line{flex-wrap:wrap}.auth-content{font-size:18px;padding:22px 20px 122px}.auth-content h3{font-size:20px}.auth-actions{grid-template-columns:1fr 2fr;padding:0 16px}.auth-actions button{font-size:18px;min-height:54px}.admin-nav{height:auto;align-items:flex-start;flex-direction:column;padding:14px}.admin-nav nav{flex-wrap:wrap}.admin-wrap{padding:16px 8px}.filters{align-items:stretch}.filters input,.filters select,.filters button,.filters .btn{width:100%}}
@media(max-width:760px){
  .mobile{padding:12px 10px 24px}
  .panel{padding:16px 14px;border-radius:16px}
  .form-grid{gap:13px}
  .form-block,.period-field,fieldset,.overdue-block{grid-column:1/-1}
  .radio-row{gap:8px}
  .radio-row label{flex:1 1 calc(50% - 8px);white-space:nowrap}
  fieldset{padding:12px;gap:8px}
  fieldset label{min-height:44px;padding:9px 10px;font-size:15px}
  .calc-card{grid-template-columns:1fr 1fr;gap:8px}
  .calc-card div{padding:9px 8px}
  .calc-card strong{font-size:20px}
}
