:root{color:#172027;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;--bg:#f3f5f6;--panel:#fff;--panel-soft:#f7f9fa;--line:#dfe4e7;--line-strong:#c9d1d7;--muted:#68747d;--text:#172027;--text-soft:#35434d;--primary:#2e63d6;--primary-dark:#234da9;--primary-soft:#edf3ff;--accent:#e86d49;--accent-dark:#b84c2f;--accent-soft:#fff1ec;--teal:#0c8878;--teal-soft:#eaf7f4;--danger:#b83d46;--danger-bg:#fff0f1;--warning:#966214;--warning-bg:#fff6df;--success:#207458;--success-bg:#eaf7f1;--neutral:#eef1f3;--sidebar:#182128;--sidebar-soft:#232e36;--shadow-sm:0 5px 16px #1821280f;--shadow-md:0 18px 48px #1821281f;background:#f3f5f6;font-family:Inter,PingFang SC,Microsoft YaHei,Arial,sans-serif}*{box-sizing:border-box;letter-spacing:0}html{background:var(--bg);min-width:320px;min-height:100%}body{background:var(--bg);min-width:320px;min-height:100vh;color:var(--text);margin:0;font-size:14px}#app{min-height:100vh}button,input,select{font:inherit}button,a{-webkit-tap-highlight-color:transparent}a{color:inherit;text-decoration:none}svg{flex:none}.button{cursor:pointer;border:1px solid #0000;border-radius:6px;justify-content:center;align-items:center;gap:8px;min-height:40px;padding:0 15px;font-weight:650;line-height:1;transition:background-color .16s,border-color .16s,color .16s,box-shadow .16s;display:inline-flex}.button svg{stroke-width:2px;width:16px;height:16px}.button:focus-visible,.side-nav a:focus-visible,.text-link:focus-visible,.upload-box:focus-within{outline-offset:2px;outline:3px solid #1f5eff2e}.button:disabled,.button.disabled{cursor:not-allowed;opacity:.56}.button-primary{background:var(--primary);color:#fff;box-shadow:0 4px 10px #1f5eff29}.button-primary:hover:not(:disabled){background:var(--primary-dark)}.button-accent{background:var(--accent);color:#fff;box-shadow:0 4px 10px #e9652229}.button-accent:hover:not(:disabled):not(.disabled){background:var(--accent-dark)}.button-secondary{border-color:var(--line-strong);color:var(--text-soft);background:#fff}.button-secondary:hover:not(:disabled){border-color:var(--primary);color:var(--primary);background:var(--primary-soft)}.button-ghost{border-color:var(--line);color:var(--muted);background:0 0}.button-ghost:hover:not(:disabled){color:var(--text);background:var(--panel-soft);border-color:#b9c2d0}.full{width:100%}.auth-page{background:#e9eef1;place-items:center;min-height:100vh;padding:0;display:grid}.auth-panel{width:100%;min-height:100vh;box-shadow:none;background:#fff;border:0;border-radius:0;grid-template-columns:minmax(0,1.15fr) 430px;align-items:stretch;display:grid;overflow:hidden}.auth-copy{border-right:1px solid var(--line);background-color:#f5f7f7;background-image:url(/assets/contract-review-visual-CJc4Qt6W.webp);background-position:50%;background-size:cover;flex-direction:column;justify-content:center;padding:58px;display:flex;position:relative;overflow:hidden}.auth-copy:before{content:"";background:#f7f9f9cc;position:absolute;inset:0}.auth-copy>*{z-index:1;position:relative}.auth-copy:after{content:"";background:var(--accent);width:76px;height:4px;position:absolute;bottom:48px;left:58px;right:auto}.auth-identity{align-items:center;gap:10px;font-size:16px;display:flex;position:absolute;top:42px;left:58px}.auth-identity>span{background:var(--sidebar);color:#fff;width:36px;height:36px;box-shadow:inset 0 -3px 0 var(--accent);border-radius:6px;place-items:center;display:grid}.auth-identity svg{width:20px;height:20px}.auth-copy h1,.page-header h1{color:var(--text);margin:9px 0 12px;line-height:1.24}.auth-copy h1{max-width:520px;font-size:36px}.page-header h1{font-size:30px}.auth-copy p,.page-header p,.summary-main p{color:var(--muted);margin:0;line-height:1.7}.eyebrow{color:var(--primary);align-items:center;font-size:13px;font-weight:750;display:inline-flex}.eyebrow:before{content:"";background:var(--accent);width:5px;height:5px;margin-right:7px}.auth-card{background:var(--panel);border-left:3px solid var(--primary);flex-direction:column;justify-content:center;padding:52px 42px;display:flex}.form-heading{margin-bottom:24px}.form-heading span{color:var(--muted);margin-bottom:5px;font-size:13px;display:block}.form-heading h2,.auth-card h2{margin:0;font-size:24px}.field{gap:8px;margin-bottom:18px;display:grid}.field span,.code-field label span{color:var(--text-soft);font-size:13px;font-weight:650}.field input,.field select,.code-field input{border:1px solid var(--line-strong);width:100%;height:44px;color:var(--text);background:#fff;border-radius:6px;outline:none;padding:0 12px;transition:border-color .16s,box-shadow .16s}.field input::placeholder,.code-field input::placeholder{color:#9aa4b3}.field input:focus,.field select:focus,.code-field input:focus{border-color:var(--primary);box-shadow:0 0 0 3px #1f5eff1c}.code-field{grid-template-columns:minmax(0,1fr) 138px;align-items:end;gap:10px;margin-bottom:18px;display:grid}.code-field label{gap:8px;display:grid}.form-error,.form-message{border:1px solid #0000;border-radius:6px;width:100%;margin:0 0 14px;padding:10px 12px;font-size:13px;line-height:1.5}.form-error{background:var(--danger-bg);color:var(--danger);border-color:#f2cccc}.form-message{background:var(--success-bg);color:var(--success);border-color:#cfe8d9}.text-link{color:var(--primary);margin-top:16px;font-weight:650}.text-link:hover{color:var(--primary-dark)}.centered{text-align:center;display:block}.app-shell{grid-template-columns:238px minmax(0,1fr);min-height:100vh;display:grid}.sidebar{z-index:10;background:var(--sidebar);border-right:1px solid #10171c;flex-direction:column;height:100vh;padding:20px 16px;display:flex;position:sticky;top:0}.brand{border-bottom:1px solid #ffffff1a;align-items:center;gap:11px;padding:0 8px 20px;display:flex}.brand-mark{width:38px;height:38px;color:var(--primary);box-shadow:inset 0 -3px 0 var(--accent);background:#fff;border-radius:6px;place-items:center;display:grid}.brand-mark svg{width:21px;height:21px}.brand strong,.brand small{display:block}.brand strong{color:#fff;font-size:16px}.brand small,.sidebar-user small{color:#8e9ba5;margin-top:3px;font-size:12px}.side-nav{gap:5px;padding:22px 0;display:grid}.nav-caption{color:#77858f;padding:0 11px 7px;font-size:12px;font-weight:650}.side-nav a{color:#b9c3ca;border-radius:6px;align-items:center;gap:11px;min-height:42px;padding:0 12px;font-weight:650;display:flex;position:relative}.side-nav a svg{color:#84929c;width:18px;height:18px}.side-nav a:hover{color:#fff;background:#ffffff12}.side-nav a.router-link-active{color:#fff;background:#27343d}.side-nav a.router-link-active:before{content:"";background:var(--accent);border-radius:0 2px 2px 0;width:3px;height:22px;position:absolute;left:0}.side-nav a.router-link-active svg{color:#8eb0ff}.sidebar-user{border-top:1px solid #ffffff1a;gap:12px;margin-top:auto;padding:17px 5px 0;display:grid}.user-profile{align-items:center;gap:10px;min-width:0;display:flex}.user-avatar{color:#ff9c7e;background:#e86d4924;border-radius:50%;flex:0 0 34px;place-items:center;width:34px;height:34px;display:grid}.user-avatar svg{width:17px;height:17px}.user-profile>span:last-child{min-width:0}.sidebar-user strong{text-overflow:ellipsis;white-space:nowrap;color:#edf2f5;max-width:152px;font-size:13px;display:block;overflow:hidden}.sidebar .button-ghost{color:#aeb9c0;border-color:#ffffff24}.sidebar .button-ghost:hover:not(:disabled){color:#fff;background:#ffffff12;border-color:#ffffff4d}.workspace{min-width:0}.topbar{z-index:9;border-bottom:1px solid var(--line);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#fffffff0;justify-content:space-between;align-items:center;gap:20px;height:58px;padding:0 30px;display:flex;position:sticky;top:0}.topbar-context,.service-state{color:var(--muted);align-items:center;gap:8px;font-size:13px;font-weight:600;display:flex}.topbar-context svg{width:16px;height:16px;color:var(--primary)}.service-state span{background:#2f9b65;border-radius:50%;width:7px;height:7px;box-shadow:0 0 0 3px #e2f4e9}.service-state{color:var(--success);background:var(--success-bg);border:1px solid #cce7dc;border-radius:999px;padding:6px 10px}.main-panel{width:100%;max-width:1540px;margin:0 auto;padding:32px 36px 52px}.page-header{border-bottom:0;justify-content:space-between;align-items:flex-start;gap:24px;margin-bottom:22px;padding-bottom:10px;display:flex}.page-header>div{min-width:0}.page-header h1{overflow-wrap:anywhere}.header-actions{flex-wrap:wrap;justify-content:flex-end;gap:9px;display:flex}.content-band{width:100%}.admin-metrics{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:16px;display:grid}.admin-metric{border:1px solid var(--line);border-left:3px solid var(--primary);min-height:116px;box-shadow:var(--shadow-sm);background:#fff;border-radius:8px;align-items:center;gap:14px;padding:18px;display:flex}.admin-metric>span{background:var(--primary-soft);width:42px;height:42px;color:var(--primary);border-radius:6px;flex:0 0 42px;place-items:center;display:grid}.admin-metric svg{width:21px;height:21px}.admin-metric strong,.admin-metric small{display:block}.admin-metric strong{color:var(--text);font-size:28px;line-height:1.1}.admin-metric small{color:var(--muted);margin-top:6px;font-size:13px;font-weight:650}.admin-chart-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-bottom:16px;display:grid}.admin-panel{border:1px solid var(--line);box-shadow:var(--shadow-sm);background:#fff;border-radius:8px}.admin-panel-header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:16px;min-height:64px;padding:16px 18px;display:flex}.admin-panel-header h2{color:var(--text);margin:0;font-size:18px}.admin-panel-header p{color:var(--muted);margin:5px 0 0;font-size:13px}.admin-chart{width:100%;height:330px}.admin-table-wrap{overflow-x:auto}.admin-table{border-collapse:collapse;width:100%;min-width:900px}.admin-table th,.admin-table td{border-bottom:1px solid var(--line);text-align:left;vertical-align:middle;padding:14px 16px}.admin-table th{color:var(--muted);background:#f7f9fa;font-size:12px;font-weight:750}.admin-table td{color:var(--text-soft);font-size:13px}.admin-table tbody tr:last-child td{border-bottom:0}.list-toolbar{border:1px solid var(--line);border-bottom:0;border-left:3px solid var(--primary);min-height:50px;color:var(--muted);background:#f1f5f8;border-radius:6px 6px 0 0;justify-content:space-between;align-items:center;gap:16px;padding:0 18px;font-size:13px;display:flex}.list-toolbar>div{align-items:center;gap:9px;display:flex}.list-toolbar svg{width:17px;height:17px;color:var(--primary)}.list-toolbar strong{color:var(--text);font-size:14px}.list-toolbar>div span{color:var(--muted)}.contract-grid{grid-template-columns:1fr;gap:0;display:grid}.contract-card,.risk-card,.simple-finding,.form-surface,.info-panel,.document-panel,.review-summary{border:1px solid var(--line);background:#fff;border-radius:8px}.contract-card{border-bottom:0;border-radius:0;grid-template-columns:minmax(300px,1.35fr) minmax(270px,.9fr) auto;align-items:center;gap:24px;padding:20px 22px;transition:background-color .16s,box-shadow .16s;display:grid}.contract-card:first-child{border-top-left-radius:0;border-top-right-radius:0}.contract-card:last-child{border-bottom:1px solid var(--line);border-radius:0 0 8px 8px}.contract-card:hover{z-index:1;box-shadow:var(--shadow-sm);background:#f9fbfc;position:relative}.contract-card-main{justify-content:space-between;align-items:center;gap:16px;min-width:0;display:flex}.contract-title-row{align-items:center;gap:13px;min-width:0;display:flex}.file-icon{background:var(--primary-soft);width:40px;height:40px;color:var(--primary);border:1px solid #cfdbf4;border-radius:6px;flex:0 0 40px;place-items:center;display:grid;box-shadow:inset 0 -3px #ffd3c6}.file-icon svg{width:20px;height:20px}.contract-card h3,.risk-card h3,.simple-finding h3{color:var(--text);overflow-wrap:anywhere;margin:0;font-size:16px;line-height:1.45}.contract-card p{color:var(--muted);margin:5px 0 0;font-size:13px}.tag-row{flex-wrap:wrap;place-content:flex-start flex-end;gap:7px;display:flex}.status-pill,.risk-pill{white-space:nowrap;border:1px solid #0000;border-radius:999px;align-items:center;min-height:26px;padding:3px 9px;font-size:12px;font-weight:750;display:inline-flex}.status-pending{color:#4c5668;background:#f1f3f6;border-color:#dce1e8}.status-reviewing{color:var(--primary);background:#edf4ff;border-color:#cfe0ff}.status-reviewed,.risk-low{background:var(--success-bg);color:var(--success);border-color:#cce8d7}.status-failed,.risk-high{background:var(--danger-bg);color:var(--danger);border-color:#f0caca}.risk-medium{background:var(--warning-bg);color:var(--warning);border-color:#eedba9}.risk-empty{background:var(--neutral);color:var(--muted);border-color:#dde2e9}.meta-grid,.info-list{gap:14px;margin:0;display:grid}.meta-grid{grid-template-columns:minmax(0,1.35fr) minmax(0,1fr)}dt{color:var(--muted);font-size:12px;font-weight:650}dd{color:var(--text-soft);overflow-wrap:anywhere;margin:4px 0 0;line-height:1.45}.card-actions,.form-actions{justify-content:flex-end;gap:9px;display:flex}.card-actions .button{min-height:36px;padding:0 12px;font-size:13px}.empty-state{border:1px dashed var(--line-strong);min-height:220px;color:var(--muted);text-align:center;background:#fff;border-radius:8px;align-content:center;place-items:center;gap:12px;padding:28px;display:grid}.empty-state .form-error{width:min(440px,100%);margin:0}.form-surface{border-top:3px solid var(--accent);max-width:790px;box-shadow:var(--shadow-sm);padding:30px}.wide-form{width:100%}.form-section-title{border-bottom:1px solid var(--line);align-items:center;gap:12px;margin:-2px 0 26px;padding-bottom:18px;display:flex}.form-section-title>span{background:var(--primary-soft);width:38px;height:38px;color:var(--primary);border-radius:6px;place-items:center;display:grid}.form-section-title svg{width:19px;height:19px}.form-section-title strong,.form-section-title small{display:block}.form-section-title small{color:var(--muted);margin-top:3px;font-size:12px}.upload-box{cursor:pointer;text-align:center;background:#f5f8fb;border:1px dashed #8fa3b8;border-radius:8px;place-items:center;min-height:190px;margin:4px 0 20px;padding:26px;transition:border-color .16s,background-color .16s;display:grid}.upload-box:hover{border-color:var(--primary);background:var(--primary-soft)}.upload-box input{opacity:0;width:1px;height:1px;position:absolute;overflow:hidden}.upload-icon{background:var(--primary-soft);border:1px solid #cfdbf4;border-radius:8px;place-items:center;width:48px;height:48px;margin-bottom:13px;display:grid;color:var(--primary)!important}.upload-icon svg{width:24px;height:24px}.upload-box strong{max-width:100%;color:var(--text);overflow-wrap:anywhere}.upload-box>span:last-child{color:var(--muted);margin-top:6px;font-size:13px}.detail-layout,.review-layout{align-items:start;gap:18px;display:grid}.detail-layout{grid-template-columns:286px minmax(0,1fr)}.review-layout{grid-template-columns:minmax(340px,.82fr) minmax(480px,1.18fr)}.info-panel{border-top:3px solid var(--primary);box-shadow:var(--shadow-sm);padding:20px;position:sticky;top:80px}.panel-title{border-bottom:1px solid var(--line);align-items:center;gap:8px;margin-bottom:18px;padding-bottom:14px;display:flex}.panel-title svg{width:17px;height:17px;color:var(--primary)}.info-list>div{border-bottom:1px solid #edf0f4;padding-bottom:13px}.info-list>div:last-child{border-bottom:0;padding-bottom:0}.reviewing-note{border-left:3px solid var(--accent);color:var(--accent-dark);background:var(--accent-soft);margin:18px 0 0;padding:10px 12px;line-height:1.6}.document-panel{min-width:0;box-shadow:var(--shadow-sm);border-top:3px solid #8ca0ad;overflow:hidden}.document-panel header{border-bottom:1px solid var(--line);background:#f6f8f9;justify-content:space-between;align-items:center;gap:16px;min-height:52px;padding:0 18px;display:flex}.document-panel h2,.review-panel h2,.review-subsection h2{color:var(--text);margin:0;font-size:17px}.document-panel h2{align-items:center;gap:8px;display:flex}.document-panel h2 svg{width:17px;height:17px;color:var(--primary)}.document-panel header span{color:var(--muted);font-size:12px}.document-panel pre{white-space:pre-wrap;word-break:break-word;color:#2e3a42;background:#fffefa;min-height:500px;max-height:720px;margin:0;padding:28px 34px;font-family:PingFang SC,Microsoft YaHei,Arial,sans-serif;font-size:14px;line-height:1.9;overflow:auto}.document-panel.compact{position:sticky;top:80px}.review-summary{border-top:0;border-left:4px solid var(--accent);box-shadow:var(--shadow-sm);grid-template-columns:minmax(0,1fr) 340px;align-items:center;gap:28px;margin-bottom:18px;padding:22px 24px;display:grid}.summary-main{min-width:0}.summary-icon{background:var(--sidebar);color:#fff;vertical-align:middle;border-radius:6px;place-items:center;width:30px;height:30px;margin-right:8px;display:inline-grid}.summary-icon svg{width:17px;height:17px}.summary-main h2{margin:12px 0 8px;font-size:19px;line-height:1.45}.risk-counts{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.count-box{border:1px solid;border-radius:6px;align-content:center;gap:3px;min-width:0;min-height:86px;padding:12px;display:grid}.count-box strong{font-size:25px;line-height:1.1}.count-box span{font-size:12px;font-weight:700}.review-panel{gap:24px;display:grid}.review-panel>section>h2,.review-subsection>h2{border-bottom:1px solid var(--line);align-items:center;min-height:38px;padding-bottom:11px;display:flex}.risk-list{gap:12px;margin-top:14px;display:grid}.risk-card{padding:20px 22px;box-shadow:0 3px 12px #1821280b}.risk-card-high{border-left:3px solid var(--danger)}.risk-card-medium{border-left:3px solid #c68718}.risk-card-low{border-left:3px solid var(--success)}.risk-card-header{justify-content:space-between;gap:16px;margin-bottom:14px;display:flex}.subtle{color:var(--muted);margin-bottom:6px;font-size:12px;font-weight:650;display:inline-flex}.risk-section{border-top:1px solid #edf0f4;margin-top:13px;padding-top:13px}.risk-section h4{color:var(--text-soft);align-items:center;gap:7px;margin:0 0 8px;font-size:13px;display:flex}.risk-section h4 svg{color:#7e899a;width:15px;height:15px}.risk-section p,.simple-finding p{color:var(--text-soft);margin:0;line-height:1.75}.quote-text{background:#f7f9fa;border-left:3px solid #d9dee6;padding:8px 0 8px 12px}.recommended{background:var(--accent-soft);border:1px solid #f3d4bf;border-radius:6px;padding:14px}.recommended h4,.recommended h4 svg{color:var(--accent-dark)}.risk-footer{color:var(--muted);flex-wrap:wrap;gap:12px;margin-top:14px;font-size:12px;font-weight:650;display:flex}.review-subsection{gap:10px;display:grid}.simple-finding{padding:16px 18px}.simple-finding .risk-pill{margin-bottom:10px}.simple-finding h3{margin-bottom:8px}.positive-list{gap:8px;margin:0;padding:0;list-style:none;display:grid}.positive-list li{border:1px solid #d6e9de;border-left:3px solid var(--success);color:var(--text-soft);background:#fff;border-radius:6px;padding:12px 14px}@media (width<=1220px){.admin-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.admin-chart-grid{grid-template-columns:1fr}.contract-card{grid-template-columns:1fr;gap:15px}.contract-card-main{align-items:flex-start}.meta-grid{max-width:520px}.card-actions{justify-content:flex-start}.review-summary{grid-template-columns:1fr}.risk-counts{max-width:440px}}@media (width<=980px){.app-shell{grid-template-columns:1fr}.sidebar{border-bottom:1px solid #10171c;border-right:0;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:18px;height:auto;padding:12px 20px;display:grid;position:static}.brand{border:0;padding:0}.side-nav{justify-content:center;padding:0;display:flex}.nav-caption,.user-profile,.topbar{display:none}.sidebar-user{border:0;margin:0;padding:0}.sidebar-user .button{width:auto}.detail-layout,.review-layout{grid-template-columns:1fr}.info-panel,.document-panel.compact{position:static}}@media (width<=720px){.auth-page{padding:0}.auth-panel{grid-template-columns:1fr;min-height:100vh}.auth-copy{border-right:0;border-bottom:1px solid var(--line);min-height:260px;padding:76px 28px 46px}.auth-copy:after{bottom:27px;left:28px;right:auto}.auth-identity{top:24px;left:28px}.auth-copy h1{font-size:27px}.auth-card{border-top:3px solid var(--primary);border-left:0;padding:32px 24px}.admin-metrics{grid-template-columns:1fr}.admin-chart{height:300px}.sidebar{grid-template-columns:minmax(0,1fr) auto;gap:10px;padding:11px 14px 0}.brand small,.sidebar-user .button{display:none}.side-nav{border-top:1px solid #ffffff1a;grid-column:1/-1;justify-content:stretch;gap:4px;padding-top:6px}.side-nav a{flex:1;justify-content:center}.main-panel{padding:22px 18px 40px}.page-header,.contract-card-main,.risk-card-header,.header-actions,.card-actions,.form-actions,.list-toolbar{flex-direction:column;align-items:stretch}.page-header h1{font-size:26px}.list-toolbar{padding:12px 14px}.list-toolbar>span{display:none}.tag-row{justify-content:flex-start}.code-field,.meta-grid,.risk-counts{grid-template-columns:1fr}.risk-counts{max-width:none}.form-surface,.review-summary{padding:20px}.document-panel pre{min-height:400px;padding:22px 18px}}
