@charset "UTF-8";
:root{--ink:#1d293d;--muted:#738092;--line:#e7ebf1;--canvas:#f7f8fa;--blue:#315de4;--pale:#edf2ff;--navy:#223a66;--green:#268268;--amber:#a46b22;--red:#be5260;--radius:14px;font-family:Inter,-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;color:var(--ink);font-size:14px;font-synthesis:none}
*{box-sizing:border-box}body{margin:0;background:var(--canvas)}button,input,select{font:inherit}button,a,input,select{ -webkit-tap-highlight-color:transparent}button{cursor:pointer}button{color:inherit}a{color:inherit;text-decoration:none}button:disabled{cursor:not-allowed;opacity:.48}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid #9bb5ff;outline-offset:3px}button svg,a svg{flex-shrink:0}svg{width:19px;height:19px;vertical-align:middle;stroke-width:1.65}h1,h2,h3,p{margin:0}h1{font-size:29px;letter-spacing:-.8px;font-weight:650}h2{font-size:16px;font-weight:650}h3{font-size:15px;font-weight:600}p{line-height:1.7}.muted{color:var(--muted)}.small{font-size:12px}.mono{font-variant-numeric:tabular-nums}.skip-link{position:fixed;left:250px;top:-70px;z-index:100;background:white;padding:14px}.skip-link:focus{top:8px}
.sidebar{position:fixed;inset:0 auto 0 0;width:218px;background:#fff;border-right:1px solid var(--line);padding:29px 18px 20px;display:flex;flex-direction:column;z-index:20}.brand{display:flex;align-items:center;gap:11px;padding:0 11px 33px}.brand-mark{width:35px;height:39px;border-radius:9px;background:var(--navy);display:grid;place-items:center;color:white}.brand-mark svg{width:24px;height:24px}.brand strong{font-size:17px;font-weight:650;letter-spacing:.5px;display:block}.brand small{font-size:10px;color:#9aa4b3;letter-spacing:2px;display:block;margin-top:5px}.nav-label{font-size:10px;color:#a2abba;letter-spacing:1.6px;padding:0 13px;margin:10px 0 13px}.nav{display:grid;gap:6px}.nav a{display:flex;align-items:center;gap:12px;padding:13px 14px;border-radius:8px;color:#667184;font-weight:500;transition:background .15s}.nav a.active{color:var(--blue);background:var(--pale)}.nav a:hover:not(.active){background:#f7f8fb}.nav-count{margin-left:auto;font-size:11px;color:#8b97ab;background:#f1f3f7;padding:2px 6px;border-radius:4px}.side-projects{border-top:1px solid var(--line);margin:23px 9px;padding-top:17px}.side-projects a{display:flex;align-items:center;gap:9px;font-size:12px;color:#758094;padding:11px 4px;line-height:1.5}.project-dot{width:6px;height:6px;background:#b3bdcd;border-radius:2px;flex:none}.side-bottom{margin-top:auto}.prototype-box{margin:14px 8px 0;padding:13px 12px;border:1px solid var(--line);border-radius:9px;background:#fcfcfd}.prototype-box strong{display:flex;align-items:center;gap:7px;font-size:11px;font-weight:500;color:#707d91}.prototype-box p{font-size:10px;color:#99a1ad;line-height:1.8;margin-top:5px}.prototype-box button{background:none;border:0;color:var(--blue);font-size:11px;padding:8px 0 0}.layout{margin-left:218px;min-height:100vh}.topbar{height:69px;border-bottom:1px solid var(--line);background:#fff;display:flex;align-items:center;justify-content:space-between;padding:0 36px;gap:18px}.breadcrumb{color:#8a95a5;font-size:12px;display:flex;gap:12px;align-items:center}.breadcrumb b{color:#556176;font-weight:500}.top-tools{display:flex;align-items:center;gap:17px}.prototype-tag{font-size:11px;color:#8c7549;background:#faf7ef;border:1px solid #eee7d5;padding:5px 9px;border-radius:5px;white-space:nowrap}.avatar{width:29px;height:29px;display:grid;place-items:center;background:#edf0f6;border-radius:50%;font-size:11px;color:#79869a}.top-label{font-size:11px;color:#9199a7}.main{max-width:1420px;margin:0 auto;padding:32px 36px 30px;min-height:calc(100vh - 69px)}.page-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:28px}.eyebrow{font-size:10px;letter-spacing:1.8px;color:#8c97a6;margin-bottom:10px}.page-heading p{font-size:12px;color:var(--muted);margin-top:10px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 15px;min-height:38px;border:1px solid #dfe5ee;background:#fff;border-radius:7px;font-size:12px;font-weight:500;white-space:nowrap;transition:background .15s,transform .15s}.btn:hover{background:#f3f5f9}.btn.primary{background:var(--blue);border-color:var(--blue);color:#fff;box-shadow:0 3px 7px #315de412}.btn.primary:hover{background:#264dcc}.btn.navy{background:var(--navy);border-color:var(--navy);color:white}.btn.ghost{background:transparent;border-color:transparent;padding:7px 10px;color:#778399}.btn.danger{color:var(--red);border-color:#f1d8dd}.text-button{border:0;background:none;padding:5px 0;color:var(--blue);font-size:12px;display:inline-flex;gap:6px;align-items:center}.text-button svg{width:15px;height:15px}.section-title{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:26px 0 14px}.section-title .label{display:flex;align-items:center;gap:10px}.count{color:#8793a5;font-size:11px;background:#eef1f5;padding:2px 6px;border-radius:4px}.review-types{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.type-card{position:relative;padding:23px 23px 19px;background:#fff;border:1px solid var(--line);border-radius:var(--radius);transition:border-color .18s,transform .18s;overflow:hidden}.type-card:hover{border-color:#bbc9eb;transform:translateY(-2px)}.type-card.featured{border-color:#cdd8f2;background:#fff}.type-card.featured:before{content:"";position:absolute;top:0;left:22px;right:22px;height:2px;background:#4770e8}.type-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.icon-box{width:40px;height:40px;border:1px solid #e9edf4;background:#f5f7fb;border-radius:10px;display:grid;place-items:center;color:#5c6f8e}.featured .icon-box{color:var(--blue);background:#f0f4ff;border-color:#e1e9fc}.type-top .tiny-label{font-size:10px;color:#8994a5;letter-spacing:.5px}.type-card h2{font-size:17px}.type-card p{color:#7b8798;font-size:12px;line-height:1.8;margin:9px 0 20px;max-width:260px}.type-bottom{border-top:1px solid #eff2f6;padding-top:14px;display:flex;align-items:center;justify-content:space-between}.type-bottom small{font-size:10px;color:#9aa4b1}.type-bottom a,.type-bottom button{font-size:12px;color:#5b6d8a;display:flex;align-items:center;gap:6px;border:0;background:none;padding:0}.featured .type-bottom a{color:var(--blue)}.type-bottom svg{width:15px;height:15px}.task-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.active-card{padding:19px 21px;background:white;border:1px solid var(--line);border-radius:11px;display:grid;gap:14px}.card-row{display:flex;align-items:center;justify-content:space-between;gap:14px}.task-identity{display:flex;gap:12px;align-items:center;min-width:0}.task-identity strong{font-size:13px;font-weight:600;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:300px}.task-identity p{font-size:11px;color:#929cab;margin-top:5px}.file-mark{width:33px;height:37px;border:1px solid #e3e8ef;border-radius:7px;display:grid;place-items:center;color:#8491a7;flex:none}.status{display:inline-flex;align-items:center;gap:6px;border-radius:4px;white-space:nowrap;font-size:10px;font-weight:500;padding:4px 7px;background:#f0f3f8;color:#7a879b}.status:before{content:"";width:5px;height:5px;border-radius:50%;background:currentColor}.status.running{background:#edf2ff;color:#426bd9}.status.completed{background:#ecf7f2;color:#34836d}.status.error{background:#fceff1;color:#bc5967}.status.cancelling,.status.queued{background:#faf4e8;color:#a78544}.progress-track{height:4px;background:#edf0f5;border-radius:4px;overflow:hidden}.progress-track span{height:100%;display:block;background:#6282df;border-radius:4px}.active-footer{display:flex;align-items:center;justify-content:space-between;font-size:11px;color:#8793a4}.active-footer b{font-weight:500;color:#62718a}.active-footer a{display:flex;align-items:center;gap:5px;color:#526c9b}.active-footer a svg{height:14px;width:14px}.table-wrap{border:1px solid var(--line);border-radius:11px;background:white;overflow:auto}.task-table{border-collapse:collapse;width:100%;font-size:12px;text-align:left}.task-table th{background:#fafbfc;color:#909aab;font-weight:400;font-size:11px;padding:13px 19px;border-bottom:1px solid var(--line);white-space:nowrap}.task-table td{padding:16px 19px;border-bottom:1px solid #eff1f5;vertical-align:middle}.task-table tr:last-child td{border-bottom:0}.task-table tbody tr:hover{background:#fcfdff}.task-table .name{font-weight:500;display:block;color:#33445e;line-height:1.5}.task-table .sub{color:#9ba4b1;font-size:10px;display:block;margin-top:5px}.task-table .result{color:#6e7e94;font-size:11px}.task-table .result b{color:#c08248;font-weight:500}.task-table a.row-open{color:#909cad;padding:6px;display:inline-block}.table-name{min-width:200px}.project-col{max-width:220px;color:#8190a4}.footer-note{display:flex;justify-content:space-between;gap:15px;font-size:10px;color:#a0a9b5;margin-top:24px}.footer-note span{display:flex;align-items:center;gap:6px}.footer-note svg{height:12px;width:12px}.empty{padding:42px 25px;text-align:center;border:1px dashed #dce2ec;border-radius:12px;background:#fff}.empty .icon-box{margin:0 auto 14px}.empty h3{margin-bottom:9px}.empty p{color:var(--muted);font-size:12px;margin-bottom:18px}.empty.compact{padding:21px;background:#fcfdfe}.empty.compact p{margin:0}.notice{display:flex;align-items:flex-start;gap:9px;padding:12px 14px;background:#f3f6fb;border:1px solid #e8edf5;border-radius:7px;font-size:11px;color:#73839a;line-height:1.8}.notice svg{flex:none;width:16px;height:16px;margin-top:2px}.notice.warning{background:#fcf8ef;border-color:#f1e7d4;color:#a07d45}.notice.error{background:#fcf0f2;border-color:#efdae0;color:var(--red)}
.form-page .page-heading{margin-bottom:23px}.form-layout{display:grid;grid-template-columns:minmax(0,1fr) 266px;gap:24px;align-items:start}.form-main{display:grid;gap:18px}.panel{background:white;border:1px solid var(--line);border-radius:12px;padding:23px}.panel-heading{display:flex;align-items:center;gap:11px;margin-bottom:22px}.step{width:22px;height:22px;border:1px solid #dee5f1;border-radius:6px;display:grid;place-items:center;font-size:10px;color:#8294b1}.panel-heading h2{font-size:14px}.panel-heading .muted{font-size:11px;margin-left:auto}.field-row{display:grid;grid-template-columns:1fr 1fr;gap:19px}.field{display:flex;flex-direction:column;gap:9px;min-width:0}.field label{font-size:12px;color:#53647c}.field label small{font-size:10px;color:#939dab;margin-left:6px}.required{color:#c48959;margin-left:3px}input,select{height:39px;width:100%;min-width:0;padding:0 11px;border:1px solid #dfe5ee;border-radius:6px;background:#fff;color:#45546b;font-size:12px}input::placeholder{color:#a5aebb}select{padding-right:25px}.field-with-action{display:flex;gap:9px}.field-with-action .btn{padding:8px 10px}.field-hint{font-size:10px;color:#98a2b0}.form-error{color:var(--red);font-size:11px;line-height:1.7}.drop-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px}.dropzone{border:1px dashed #c8d3e6;border-radius:9px;padding:21px 16px;background:#fafcff;position:relative;display:flex;flex-direction:column;align-items:center;text-align:center;min-height:183px}.dropzone.dragover{background:#edf3ff;border-color:var(--blue)}.dropzone.has-file{background:#f7fafc;border-style:solid}.dropzone:focus-within{outline:2px solid #adc3ff;outline-offset:2px}.drop-icon{width:35px;height:35px;display:grid;place-items:center;color:#7c94ba;margin-bottom:10px}.dropzone h3{font-size:12px;margin-bottom:6px}.dropzone p{font-size:10px;color:#98a3b2;margin-bottom:14px}.dropzone label{display:inline-flex;align-items:center;gap:7px;color:var(--blue);font-size:11px;cursor:pointer;padding:6px 10px;border:1px solid #dce5f5;border-radius:5px;background:white}.dropzone input[type=file]{position:absolute;width:1px;height:1px;opacity:0;overflow:hidden}.file-name{font-size:11px;font-weight:500;line-height:1.6;overflow-wrap:anywhere;max-width:100%;margin-bottom:5px}.file-actions{display:flex;align-items:center;gap:14px;margin-top:auto}.file-actions button{font-size:10px;color:#8e99aa;padding:4px;background:none;border:0}.upload-note{display:flex;justify-content:space-between;align-items:center;margin-top:13px;gap:15px}.upload-note span{font-size:10px;color:#909bad}.settings-line{display:flex;align-items:center;gap:12px}.settings-line select{max-width:255px}.settings-line .muted{font-size:11px}.advanced{margin-top:16px;border-top:1px solid var(--line);padding-top:15px}.advanced summary{cursor:pointer;color:#77869b;font-size:11px}.advanced p{font-size:11px;color:#8995a6;margin-top:12px}.form-aside{position:sticky;top:24px}.form-aside .panel{padding:22px}.form-aside h3{font-size:12px;margin-bottom:17px}.summary-row{display:flex;justify-content:space-between;gap:10px;font-size:11px;color:#8a96a7;margin:15px 0;line-height:1.6}.summary-row strong{font-weight:500;color:#51627c;text-align:right;overflow-wrap:anywhere;max-width:150px}.form-aside hr{border:0;border-top:1px solid var(--line);margin:20px 0}.form-aside .btn{width:100%;margin-top:15px}.form-aside .notice{font-size:10px}.aside-note{padding:16px 8px;color:#929dad;font-size:10px;line-height:1.9}.aside-note strong{font-weight:500;color:#7c8b9f}.mobile-start{display:none}.filters{display:flex;align-items:center;gap:12px;margin-bottom:18px;flex-wrap:wrap}.search{position:relative;min-width:210px;flex:1}.search svg{position:absolute;left:11px;top:11px;width:17px;height:17px;color:#a0aabc}.search input{padding-left:35px}.filters select{width:auto;min-width:125px}.project-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:17px}.project-card{border:1px solid var(--line);background:#fff;border-radius:12px;padding:24px;display:flex;flex-direction:column;gap:17px;min-height:206px}.project-card h2{font-size:15px;line-height:1.6}.project-card p{font-size:11px;color:#8995a6}.project-card .card-row{margin-top:auto;font-size:11px;color:#8a98ad}.tabs{display:flex;gap:27px;border-bottom:1px solid var(--line);margin:21px 0 25px}.tabs button{padding:0 2px 13px;border:0;border-bottom:2px solid transparent;background:none;font-size:12px;color:#8290a3}.tabs button.active{color:var(--blue);border-color:var(--blue)}.project-summary{display:flex;align-items:center;gap:35px;padding:20px 24px;background:white;border:1px solid var(--line);border-radius:10px}.project-summary div{font-size:11px;color:#8a97a9}.project-summary strong{font-size:22px;color:#425570;font-weight:550;display:block;margin-bottom:7px}.project-summary p{margin-left:auto;color:#8c98a7;font-size:11px;max-width:330px}.detail-heading h1{font-size:24px;line-height:1.5}.heading-actions{display:flex;align-items:center;gap:10px}.heading-actions .status{font-size:11px}.detail-meta{display:flex;align-items:center;gap:14px;color:#8a96a8;font-size:11px;margin-top:10px;flex-wrap:wrap}.state-controls{display:flex;align-items:center;gap:11px;background:#f9f7f1;border:1px solid #eee8db;padding:10px 13px;border-radius:7px;margin-bottom:20px}.state-controls span{font-size:10px;color:#9a8457}.state-controls select{margin-left:auto;width:155px;height:30px;font-size:11px}.metric-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin:18px 0 25px}.metric{border:1px solid var(--line);border-radius:10px;background:#fff;padding:19px 21px}.metric label{font-size:11px;color:#8a95a7}.metric strong{display:block;margin:11px 0 9px;font-size:28px;font-weight:550;line-height:1.25;color:#374c6b}.metric strong small{font-size:13px;font-weight:400;color:#91a0b3}.metric p{font-size:10px;color:#99a3b2}.metric.alert strong{color:#bf6570}.metric .short-value{font-size:21px;padding:4px 0}.problem-layout{display:grid;grid-template-columns:minmax(240px,1fr) minmax(320px,1.5fr);gap:20px}.problems{display:grid;gap:10px;align-content:start}.issue-button{text-align:left;background:#fff;border:1px solid var(--line);border-radius:9px;padding:16px 18px;display:block;width:100%}.issue-button.selected{border-color:#9fb4ec;background:#f6f8ff}.issue-button .issue-tag{font-size:10px;color:#c0794e}.issue-button h3{font-size:12px;line-height:1.7;margin:7px 0}.issue-button p{font-size:10px;color:#8c98a8}.issue-detail h2{font-size:17px;margin:10px 0 20px;line-height:1.6}.issue-detail section{padding:16px 0;border-top:1px solid var(--line)}.issue-detail h4{font-size:11px;color:#8391a5;font-weight:500;margin:0 0 10px}.issue-detail p{font-size:12px;color:#576982;line-height:1.95}.detail-pill{display:inline-flex;background:#faf0ed;color:#bb765b;padding:4px 7px;border-radius:4px;font-size:10px}.chip-group{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:17px}.chip-group button{border:1px solid #e1e6ef;border-radius:5px;background:#fff;padding:7px 11px;font-size:11px;color:#8894a6}.chip-group button.active{background:#edf2ff;color:var(--blue);border-color:#dae4ff}.task-stage{max-width:680px;margin:35px auto;text-align:center}.task-stage .icon-box{margin:0 auto 22px}.task-stage h2{font-size:23px;margin-bottom:15px}.task-stage>p{font-size:12px;color:#8492a6;margin-bottom:22px}.stage-list{display:flex;justify-content:space-between;margin:28px 0;font-size:11px;color:#9aa6b5;gap:12px}.stage-list .current{color:var(--blue)}.materials{margin-top:24px}.material-row{display:flex;align-items:center;gap:14px;padding:16px 0;border-top:1px solid var(--line)}.material-row:first-of-type{margin-top:15px}.material-row p{font-size:11px;overflow-wrap:anywhere}.material-row .muted{font-size:10px}.material-row .file-mark{flex:none}.material-row>a{margin-left:auto;color:var(--blue);font-size:11px}.back-link{display:inline-flex;align-items:center;gap:7px;color:#8694a8;font-size:11px;margin-bottom:20px}.skeleton{height:110px;background:#eef1f6;border-radius:10px;margin:14px 0;animation:pulse 1.2s ease-in-out infinite alternate}@keyframes pulse{to{opacity:.5}}
dialog{border:1px solid var(--line);border-radius:16px;padding:0;width:min(490px,calc(100vw - 32px));color:var(--ink);box-shadow:0 24px 100px #152a4929}dialog::backdrop{background:#20345155;backdrop-filter:blur(3px)}.dialog-body{padding:29px}.dialog-head{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:16px}.dialog-head h2{font-size:18px}.icon-button{width:29px;height:29px;background:#f6f8fb;border:1px solid var(--line);border-radius:6px;display:grid;place-items:center}.dialog-body>p{font-size:12px;color:#8490a3;margin-bottom:20px}.dialog-body .field{margin-bottom:17px}.dialog-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:24px}.dialog-choice{display:block;width:100%;text-align:left;padding:14px;border:1px solid var(--line);background:#fff;border-radius:8px;margin:9px 0}.dialog-choice strong{font-weight:500;font-size:12px}.dialog-choice p{font-size:11px;color:#94a0b0;margin-top:5px}#toast{position:fixed;left:calc(50% + 80px);bottom:28px;transform:translate(-50%,15px);background:#293d59;color:white;border-radius:8px;padding:12px 20px;font-size:12px;box-shadow:0 5px 20px #26395422;opacity:0;pointer-events:none;transition:.2s;z-index:100;max-width:calc(100% - 40px)}#toast.visible{opacity:1;transform:translate(-50%,0)}
@media(min-width:1600px){.main{padding-top:42px}.type-card{padding:27px}.type-card p{margin-bottom:26px}.active-card{padding:22px}.task-table td{padding-top:20px;padding-bottom:20px}}
@media(max-width:1100px){.sidebar{width:185px;padding-left:12px;padding-right:12px}.brand{gap:8px;padding-left:5px}.brand strong{font-size:15px}.layout{margin-left:185px}.main{padding:28px 24px}.topbar{padding:0 24px}.type-card{padding:19px 17px}.task-table td,.task-table th{padding-left:13px;padding-right:13px}.form-layout{grid-template-columns:minmax(0,1fr) 235px;gap:17px}.panel{padding:19px}.project-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.project-col{max-width:140px}.task-identity strong{max-width:200px}}
@media(max-width:880px){.sidebar{width:72px;padding:24px 10px}.brand{padding:0 7px 30px}.brand>div:last-child,.nav-label,.nav a span,.side-projects,.prototype-box,.side-bottom .nav a span{display:none}.nav a{justify-content:center;padding:13px}.layout{margin-left:72px}.main{padding:25px 21px}.topbar{padding:0 21px}.top-label{display:none}.review-types{gap:11px}.type-card{padding:18px 15px}.type-card p{font-size:11px}.type-card h2{font-size:15px}.type-bottom{align-items:flex-end}.type-bottom small{max-width:80px;line-height:1.6}.form-layout{grid-template-columns:1fr}.form-aside{position:static}.form-aside .panel{display:none}.aside-note{padding:0}.mobile-start{display:flex;position:sticky;bottom:0;padding:13px 17px;background:#fff;border:1px solid var(--line);border-radius:9px;justify-content:space-between;align-items:center;z-index:10}.mobile-start span{font-size:11px;color:#8593a8}.problem-layout{grid-template-columns:1fr}.metric-grid{gap:10px}.metric{padding:16px}.metric strong{font-size:24px}.project-summary{gap:23px}.project-summary p{display:none}.footer-note{flex-wrap:wrap}.task-grid{grid-template-columns:1fr 1fr}.task-identity strong{max-width:170px}#toast{left:50%}}
@media(max-width:600px){.sidebar{inset:auto 0 0 0;width:100%;height:60px;flex-direction:row;padding:5px;border-top:1px solid var(--line);border-right:0}.brand,.side-bottom{display:none}.sidebar>.nav{display:flex;width:100%;gap:0}.nav a{flex:1;gap:4px;padding:8px 2px;flex-direction:column;border-radius:6px;font-size:10px}.nav a span{display:block!important}.nav .nav-count{display:none!important}.nav a svg{height:18px;width:18px}.layout{margin-left:0;padding-bottom:60px}.topbar{height:56px;padding:0 16px}.main{padding:24px 16px}.breadcrumb{font-size:11px}.avatar{display:none}.top-tools{gap:6px}.prototype-tag{font-size:9px}.page-heading{margin-bottom:22px;gap:12px;align-items:flex-start}h1{font-size:25px}.page-heading .btn{padding:8px 10px;min-height:34px;font-size:11px}.page-heading p{font-size:11px}.review-types{grid-template-columns:1fr}.type-card{padding:18px 19px;display:grid;grid-template-columns:42px 1fr;gap:0 16px}.type-card .type-top{margin:0;grid-row:1/4;display:block}.type-top .tiny-label{display:none}.type-card h2{margin-top:2px}.type-card p{max-width:none;margin:7px 0 12px}.type-card .type-bottom{grid-column:2;padding-top:10px}.type-card.featured:before{left:0;top:15px;bottom:15px;right:auto;width:2px;height:auto}.task-grid,.field-row,.drop-grid,.project-grid{grid-template-columns:1fr}.task-identity strong{max-width:230px}.section-title h2{font-size:14px}.table-name{min-width:180px}.task-table{min-width:680px}.filters{gap:9px}.search{min-width:100%;}.filters select{flex:1;min-width:120px}.panel{padding:18px}.panel-heading{margin-bottom:18px}.panel-heading .muted{font-size:10px;max-width:135px;text-align:right}.dropzone{min-height:155px;padding:17px}.upload-note{align-items:flex-start}.upload-note span{max-width:210px;line-height:1.7}.mobile-start{bottom:66px}.metric-grid{grid-template-columns:1fr 1fr}.detail-heading{display:block}.heading-actions{margin-top:15px}.detail-heading h1{font-size:22px}.detail-meta{gap:8px}.state-controls{flex-wrap:wrap}.state-controls select{width:100%;margin:0}.footer-note{line-height:1.8}.project-summary strong{font-size:20px}.tabs{gap:24px}.stage-list{flex-wrap:wrap;justify-content:center}.dialog-body{padding:24px}#toast{bottom:80px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;animation:none!important;transition:none!important}}

.status.missing{background:#fdf4e3;color:#b07b2e}

/* 模型中心（P1 · Phase D） */
.model-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px}
.model-meta{display:flex;flex-wrap:wrap;gap:8px;margin:13px 0}
.model-actions{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.model-actions .btn{padding:7px 11px}
.model-url{font-size:11px;color:#8b97ab;word-break:break-all;line-height:1.6}
.text-button.danger{color:var(--red)}
.cap-checks{display:flex;gap:15px}.cap-checks label{display:flex;align-items:center;gap:6px;font-size:12px;color:#53647c}.cap-checks input{width:auto;height:auto}
.discover-chips{display:flex;flex-wrap:wrap;gap:7px;margin-top:9px}
.discover-chips button{background:#f1f4f9;border:1px solid var(--line);border-radius:6px;padding:5px 9px;font-size:11px;color:#45546b}
.model-test-result{font-size:11px;line-height:1.7;margin:9px 0 0;color:var(--muted)}
.model-test-result.ok{color:var(--green)}.model-test-result.fail{color:var(--red)}
@media(max-width:1100px){.model-grid{grid-template-columns:1fr}}

/* ============================================================
 * 暖纸编辑风主题（2026-09-11 重设计）
 * 定调：一份装帧考究的纸质审查报告——暖白纸底、墨色正文、
 * 宋体大标题、细规则线代替卡片描边、单一赭红强调。
 * 本段覆写上方全部蓝灰工具风 token 与关键组件；变量名
 * （--blue 等）沿用旧名以零侵入复用，值已换为编辑风配色。
 * ============================================================ */
:root{
  --ink:#26221c;            /* 墨色正文 */
  --muted:#8a8375;          /* 暖灰辅助文字 */
  --line:#e4ddd0;           /* 米色细规则线 */
  --canvas:#f6f3ec;         /* 暖纸底 */
  --blue:#9c3d22;           /* 赭红强调（沿用旧变量名） */
  --pale:#f3e8e0;           /* 强调色浅底 */
  --navy:#33291e;           /* 深墨（logo/深按钮） */
  --green:#5c6f46;          /* 苔绿（完成态） */
  --amber:#9a7328;          /* 赭黄（等待态） */
  --red:#a03d22;            /* 风险/危险（与强调同族） */
  --radius:4px;             /* 编辑风锐角 */
  --paper:#fffdf8;          /* 纸面（卡片/面板） */
  --serif:"Songti SC","STSongti-SC","Noto Serif SC","Source Han Serif SC",serif;
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;
  color:var(--ink);
  font-size:14px;
}
/* ---- 排版：宋体大标题 + 等宽数字 ---- */
h1{font-family:var(--serif);font-size:32px;font-weight:700;letter-spacing:.5px}
h2{font-weight:600}
.detail-heading h1{font-family:var(--serif);font-size:26px}
.task-stage h2,.issue-detail h2{font-family:var(--serif)}
.metric strong{font-variant-numeric:tabular-nums;font-weight:700;color:var(--ink)}
.project-summary strong{font-variant-numeric:tabular-nums;font-weight:700;color:var(--ink)}
.task-table td{font-variant-numeric:tabular-nums}
/* ---- 纸面与规则线：去卡片阴影感，边框收细 ---- */
body{background:var(--canvas)}
.panel,.type-card,.active-card,.project-card,.metric,.issue-button,.empty,.state-controls,.dropzone{background:var(--paper);border-color:var(--line);border-radius:var(--radius)}
.table-wrap{background:var(--paper);border-color:var(--line);border-radius:var(--radius)}
dialog{border-color:var(--line);border-radius:6px;background:var(--paper)}
input,select{background:var(--paper);border-color:#d8d0c0;color:var(--ink);border-radius:3px}
input:focus-visible{outline-color:#c98a6b}
button:focus-visible,a:focus-visible,select:focus-visible,summary:focus-visible{outline:2px solid #c98a6b;outline-offset:2px}
/* ---- 侧栏：暖纸底 + 衬线 brand ---- */
.sidebar{background:var(--paper);border-right:1px solid var(--line)}
.brand-mark{border-radius:3px;background:var(--navy)}
.brand strong{font-family:var(--serif);letter-spacing:1px}
.nav a{border-radius:3px;color:#6f675a}
.nav a.active{color:var(--blue);background:var(--pale)}
.nav a:hover:not(.active){background:#f1ece1}
.nav-count{background:#efe9dd;color:#8a8375}
/* ---- 顶栏 ---- */
.topbar{background:var(--paper);border-bottom:1px solid var(--line)}
.prototype-tag{color:#7a6a4a;background:#f5efe2;border-color:#e4dbc6}
/* ---- 按钮：赭红主按钮 + 纸面次按钮 ---- */
.btn{background:var(--paper);border-color:#d8d0c0;border-radius:3px;font-weight:500}
.btn:hover{background:#f3efe5}
.btn.primary{background:var(--blue);border-color:var(--blue);color:#fff;box-shadow:none}
.btn.primary:hover{background:#82331b}
.btn.danger{color:var(--red);border-color:#e0c4b4}
.text-button{color:var(--blue)}
/* ---- 首页类型卡：细线 + 衬线标题，featured 顶部墨色粗线 ---- */
.type-card{border-radius:var(--radius);transition:border-color .18s}
.type-card:hover{border-color:#c9b99a;transform:none}
.type-card.featured:before{background:var(--blue)}
.type-card h2{font-family:var(--serif);font-size:18px;font-weight:700}
.featured .icon-box{color:var(--blue);background:var(--pale);border-color:#e5d5c8}
/* ---- 表格：编辑风三线表 ---- */
.table-wrap{border-left:0;border-right:0;border-radius:0;border-top:2px solid var(--ink)}
.task-table th{background:transparent;color:var(--muted);border-bottom:1px solid var(--ink);font-weight:500}
.task-table td{border-bottom:1px solid var(--line)}
.task-table tbody tr:hover{background:#f3efe3}
.task-table .name{color:var(--ink);font-weight:600}
.task-table .result b{color:#9a6b2f}
/* ---- 状态徽章暖调 ---- */
.status.running{background:var(--pale);color:var(--blue)}
.status.completed{background:#ecefe2;color:var(--green)}
.status.error{background:#f5e4dc;color:var(--red)}
.status.cancelling,.status.queued{background:#f3ecdb;color:var(--amber)}
.status.missing{background:#f3ecdb;color:#9a7328}
.progress-track{background:#e9e2d2;border-radius:2px}
.progress-track span{background:var(--blue);border-radius:2px}
/* ---- 详情页：指标卡改规则线式，警示用赭红 ---- */
.metric{border:0;border-top:2px solid var(--ink);border-radius:0;padding:15px 2px 13px;background:transparent}
.metric label{color:var(--muted)}
.metric.alert{border-top-color:var(--red)}
.metric.alert strong{color:var(--red)}
.detail-meta{color:var(--muted)}
.notice{background:#f1ede2;border-color:var(--line);color:#6f675a;border-radius:3px}
.notice.warning{background:#f6efe0;border-color:#e4d8ba;color:#8a6d33}
/* ---- 问题区：选中态用赭红细线 ---- */
.issue-button.selected{border-color:var(--blue);background:#faf3ee;box-shadow:inset 3px 0 0 var(--blue)}
.issue-button .issue-tag{color:#9a6b2f}
.chip-group button{border-color:var(--line);border-radius:3px;background:var(--paper);color:#6f675a}
.chip-group button.active{background:var(--pale);color:var(--blue);border-color:#d8b9a8}
.detail-pill{background:var(--pale);color:var(--blue);border-radius:3px}
.tabs button{color:#6f675a}
.tabs button.active{color:var(--blue)}
/* ---- 汇总条与空态 ---- */
.project-summary{background:var(--paper);border-color:var(--line);border-radius:var(--radius)}
.empty{border:1px dashed #cfc5b0;background:transparent}
/* ---- toast / dialog ---- */
#toast{background:#33291e;border-radius:4px}
/* ---- 页脚 ---- */
.footer-note{color:#a39a89}
/* ---- 降级：减小动效 ---- */
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;animation:none!important;transition:none!important}}
/* ---- 首页：featured 大卡（四卡并排） ---- */
.home-featured{max-width:620px;padding:27px 29px 23px}
.home-featured h2{font-size:21px}
.home-featured p{max-width:420px}
@media(max-width:600px){.home-featured{padding:20px 19px 18px}}
/* 程序化聚焦 main 不画 focus ring（键盘 tab 焦点环不受影响） */
#main:focus,#main:focus-visible{outline:none}
/* ---- 评分点预检（scoring_prelim）---- */
.home-cards{display:grid;grid-template-columns:1fr 1fr;gap:16px}
@media(max-width:900px){.home-cards{grid-template-columns:1fr}}
.home-prelim{max-width:none;padding:27px 29px 23px;display:flex;flex-direction:column}
.home-prelim h2{font-family:var(--serif);font-size:19px;font-weight:700}
.home-prelim .icon-box{color:var(--blue);background:var(--pale);border-color:#e5d5c8}
.home-prelim .type-bottom{margin-top:auto}
/* ---- 方案比对卡片（第三卡）---- */
.home-cards.three{grid-template-columns:repeat(3,minmax(0,1fr))}
@media(max-width:1100px){.home-cards.three{grid-template-columns:repeat(2,minmax(0,1fr))}}
.home-compare{max-width:none;padding:27px 29px 23px;display:flex;flex-direction:column}
.home-compare h2{font-family:var(--serif);font-size:19px;font-weight:700}
.home-compare .icon-box{color:var(--green);background:#eef0e4;border-color:#dcd6c2}
.home-compare .type-bottom{margin-top:auto}
/* ---- 方案比对报告 ---- */
.compare-meta td{vertical-align:top;font-size:11px;line-height:1.7}
.compare-meta td:first-child{color:var(--muted);white-space:nowrap}
.compare-meta td:last-child{white-space:nowrap}
.compare-finding .point-head h3{font-size:14px}
.doc-line{font-size:12px;color:#576982;line-height:1.9;overflow-wrap:anywhere}
.prelim-point{margin-bottom:13px}
.prelim-point .point-head{display:flex;align-items:flex-start;gap:12px;margin-bottom:10px}
.prelim-point .point-index{display:inline-flex;align-items:center;justify-content:center;min-width:26px;height:26px;border:1px solid var(--line);border-radius:3px;background:#f3efe3;color:#6f675a;font-weight:700;font-size:12px}
.prelim-point .point-head>div{flex:1;min-width:0}
.prelim-point h3{margin:0 0 3px;font-size:15px;font-weight:600}
.prelim-point h3 .detail-pill{margin-left:8px}
.prelim-point .point-block{border-top:1px solid var(--line);padding:9px 0 2px;margin-top:9px}
.prelim-point .point-block h4{margin:0 0 4px;font-size:12px;color:var(--muted);font-weight:500}
.prelim-point .point-block p{margin:0;font-size:13px;line-height:1.6}
.prelim-point .point-block.suggestion h4::after{content:" · 参考";color:#a39a89}
.point-list{margin:0;padding-left:18px}
.point-list li{font-size:13px;line-height:1.7}
.prelim-points{margin-top:4px}
.section-title .heading-actions{display:flex;gap:8px}
/* ---- 首页第四卡：报价审查 ---- */
.home-cards.four{grid-template-columns:repeat(4,minmax(0,1fr))}
.home-cards.four .home-featured{max-width:none}
@media(max-width:1100px){.home-cards.four{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:720px){.home-cards.four{grid-template-columns:1fr}}
.home-price,.home-prelim,.home-compare{padding:27px 24px 23px;display:flex;flex-direction:column}
.home-price h2{font-family:var(--serif);font-size:19px;font-weight:700}
.home-price .icon-box{color:#7a6a4a;background:#f5efe2;border-color:#e4dbc6}
.home-price .type-bottom{margin-top:auto}
.home-price .type-bottom small{line-height:1.6}
/* ---- 报价审查（price_review）：文件列表 / 两级级别 / 明细表 ---- */
.price-files{list-style:none;margin:15px 0 0;padding:0}
.price-files li{display:flex;align-items:center;gap:11px;border-top:1px solid var(--line);padding:10px 2px}
.price-files .file-mark{width:26px;height:26px;display:grid;place-items:center;color:#8a8375;flex:none}
.price-file-meta{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.price-file-meta strong{font-size:12px;font-weight:600;overflow-wrap:anywhere}
.price-file-meta span{font-size:10px;color:var(--muted)}
.price-levels{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:20px 0 4px}
.price-level{border-top:2px solid var(--ink);padding:14px 2px 12px}
.price-level label{display:block;font-size:11px;color:var(--muted);letter-spacing:.4px;margin-bottom:8px}
.price-level strong{display:block;margin-bottom:7px}
.price-level p{font-size:11px;color:var(--muted);line-height:1.6}
.price-subhead{font-size:13px;font-weight:600;color:#6f675a;margin:20px 0 10px;font-family:var(--serif)}
.price-sheet{font-size:12px;color:var(--muted);font-weight:500;margin:14px 0 6px}
.price-file h3{font-family:var(--serif);font-size:16px;margin-bottom:4px}
.price-finding.combined{border-left:3px solid var(--blue);background:#fdf8f4}
.price-refs{margin-top:9px;border-top:1px solid var(--line);padding-top:8px}
.price-refs summary{cursor:pointer;font-size:11px;color:var(--blue)}
.price-refs .point-list{margin-top:7px}
.price-detail td{vertical-align:top;font-size:11px;line-height:1.65}
.price-detail th{white-space:nowrap}
.price-prices{font-variant-numeric:tabular-nums;color:#6f675a;max-width:280px}
.price-metric{color:#6f675a;min-width:200px}
.price-metric details{margin-top:5px}
.price-metric summary{cursor:pointer;font-size:10px;color:var(--blue)}
.price-formula{overflow-wrap:anywhere;max-width:260px}
.price-meta td{font-size:11px;overflow-wrap:anywhere}
.price-meta td:first-child{color:var(--muted);white-space:nowrap}
.price-meta b{color:var(--red);font-weight:600}
@media(max-width:900px){.price-levels{grid-template-columns:1fr}}
@media(max-width:1100px){.home-price,.home-prelim,.home-compare{padding:21px 19px 19px}}
