*{box-sizing:border-box}body{margin:0;font:14px Segoe UI,Arial;background:#f5f6f8;color:#20242b}header{height:64px;background:#fff;border-bottom:1px solid #ddd;display:flex;align-items:center;justify-content:space-between;padding:0 24px}header b{font-size:20px}header span{margin-left:14px;color:#777}button{border:1px solid #c8ccd2;background:white;padding:9px 13px;border-radius:7px;cursor:pointer}.primary{background:#20242b;color:white}.scan{padding:10px 24px;background:#fff;border-bottom:1px solid #ddd;display:none;gap:8px}.scan input{flex:1;padding:9px;border:1px solid #ccc;border-radius:7px}main{display:grid;grid-template-columns:250px minmax(420px,1fr) minmax(380px,.85fr);height:calc(100vh - 64px)}aside,.list,.actions{padding:20px;overflow:auto;border-right:1px solid #ddd}aside{background:#fff}label{display:block;margin:14px 0;color:#666}select{width:100%;padding:9px;margin-top:5px;border:1px solid #ccc;border-radius:7px}.legend{margin-top:25px;display:grid;grid-template-columns:18px 1fr;gap:9px}.legend i,.dot{width:12px;height:12px;border-radius:50%;display:inline-block}.rp{background:#39a96b}.la{background:#4c83d1}.can_la{background:#e0b229}.can_rp{background:#e67e22}.missing{background:#d14c4c}.unknown{background:#8b6cb7}.title{display:flex;justify-content:space-between;align-items:center}.card,.solution,.candidate{background:#fff;border:1px solid #e0e2e5;border-radius:9px;padding:13px;margin:9px 0}.card{display:flex;gap:11px;align-items:center;cursor:pointer}.card:hover{border-color:#999}.card.active{outline:2px solid #333}.card .name{flex:1}.muted,.empty{color:#777}.solution h3{margin:0 0 7px}.solution p{color:#555}.pill{font-size:12px;background:#eef0f3;border-radius:12px;padding:3px 8px}.candidate a{color:#245da8;text-decoration:none}.busy{padding:20px;text-align:center;color:#666}@media(max-width:1000px){main{grid-template-columns:220px 1fr}.actions{position:fixed;right:0;top:64px;width:46%;height:calc(100vh - 64px);background:#f5f6f8;box-shadow:-4px 0 15px #0002}}
.scan{align-items:center;flex-wrap:wrap}.scan .workers{display:flex;align-items:center;gap:6px;margin:0;color:#555}.scan .workers input{width:65px}.scan #scanStatus{flex-basis:100%;line-height:1.5;color:#555}.scan #scanStatus small{display:block;color:#a44;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.progress{display:inline-block;width:140px;height:7px;background:#e6e8eb;border-radius:5px;margin-left:12px;overflow:hidden;vertical-align:middle}.progress i{display:block;height:100%;background:#555}.card .name small{display:block;color:#70757d;margin-top:4px;line-height:1.35}.pill.rp,.sum.rp{background:#dff4e8}.pill.la,.sum.la{background:#e2ecfb}.pill.can_la,.sum.can_la{background:#fff3c4}.pill.can_rp,.sum.can_rp{background:#fde8d5}.pill.missing,.sum.missing{background:#f9dddd}.pill.unknown,.sum.unknown{background:#eee6f7}#summary{display:flex;gap:5px;flex-wrap:wrap;margin:4px 0 8px}.sum{font-size:11px;padding:3px 7px;border-radius:10px}.actionSummary{background:#eef0f3;border-radius:8px;padding:9px 11px;margin-bottom:12px;color:#555}
.templateSelect{display:block;color:#555;margin:12px 0}.templateSelect select{margin-top:5px}.templateList{margin:14px 0;background:#fff;border:1px solid #e0e2e5;border-radius:9px;padding:10px}.templateList summary{cursor:pointer;font-weight:600}.solution pre{white-space:pre-wrap;max-height:320px;overflow:auto;background:#f7f7f8;padding:10px;border-radius:6px}
.headerBtns{display:flex;gap:8px}.templatePanel{display:none;background:#fff;border-bottom:1px solid #ddd;padding:18px 24px}.templateHead{display:flex;justify-content:space-between;gap:20px;align-items:flex-start}.templateHead h2{margin:0 0 4px}.templateHead p{margin:0;color:#666}.templateGrid{display:grid;grid-template-columns:minmax(320px,.7fr) minmax(420px,1.3fr);gap:25px;margin-top:14px}.templateGrid input{width:100%;padding:9px;border:1px solid #ccc;border-radius:7px}.dropZone{border:2px dashed #aeb4bd;border-radius:10px;padding:28px;text-align:center;cursor:pointer;background:#fafbfc;transition:.15s}.dropZone span{display:block;color:#777;margin-top:5px}.dropZone.over{border-color:#333;background:#f0f2f5}.storedTemplate{display:flex;justify-content:space-between;align-items:center;gap:12px;border:1px solid #e0e2e5;border-radius:8px;padding:10px;margin:7px 0}.storedTemplate small{display:block;color:#777;margin-top:4px}.storedTemplate .type{display:inline-block;font-size:11px;font-weight:700;margin-right:7px;padding:2px 6px;border-radius:8px;background:#eef0f3}.storedTemplate .type.RP{background:#dff4e8}.storedTemplate .type.LA{background:#e2ecfb}.noTemplate{margin:12px 0;padding:9px;border-radius:7px;background:#fff3c4;color:#685313}.noTemplate a{color:#245da8}@media(max-width:900px){.templateGrid{grid-template-columns:1fr}}

/* v6: source verification + document preview */
.sourceLine{background:#f8f9fa;border:1px solid #e1e4e8;border-radius:8px;padding:10px 12px;margin:10px 0;display:flex;gap:8px;flex-direction:column}.sourceLine a{color:#245da8}.documentPreview{margin-bottom:16px;border:1px solid #d7dbe0;border-radius:10px;background:white;overflow:hidden}.previewEmpty,.previewError{padding:16px;display:flex;flex-direction:column;gap:5px}.previewEmpty span,.previewError span,.previewHead span{color:#70757d;font-size:12px}.previewHead{display:flex;justify-content:space-between;align-items:center;padding:10px 12px;border-bottom:1px solid #e3e5e8;background:#fafbfc}.previewHead>div{display:flex;flex-direction:column;gap:3px}.docPreviewFrame{width:100%;height:520px;border:0;background:#ddd}.previewError{background:#fff4f2;color:#7b3028}.modalBackdrop{display:none;position:fixed;inset:0;background:#0007;z-index:1000;align-items:center;justify-content:center;padding:18px}.sourceModalCard{background:white;width:min(1380px,96vw);height:min(900px,94vh);border-radius:12px;overflow:hidden;box-shadow:0 18px 60px #0006;display:flex;flex-direction:column}.modalHead{display:flex;justify-content:space-between;align-items:flex-start;padding:14px 18px;border-bottom:1px solid #ddd}.modalHead h2{margin:0 0 4px}.modalHead button{font-size:20px;border:0;background:transparent;cursor:pointer}.sourceEditorGrid{display:grid;grid-template-columns:minmax(480px,1.1fr) minmax(430px,.9fr);gap:0;min-height:0;flex:1}.sourceViewer{display:flex;flex-direction:column;min-width:0;background:#e6e8eb;border-right:1px solid #ccd0d5}.sourceToolbar{background:white;border-bottom:1px solid #d7dbe0;padding:9px 12px;display:flex;justify-content:space-between;gap:12px;font-size:12px}.sourceToolbar a{color:#245da8}.sourceVisual{flex:1;overflow:auto;padding:14px;text-align:center}.sourceVisual img{max-width:100%;height:auto;background:white;box-shadow:0 2px 14px #0003}.sourceVisual iframe{width:100%;height:100%;min-height:650px;border:0;background:white}.sourceFields{padding:16px 18px;overflow:auto}.sourceFields label{display:block;margin-bottom:10px;font-size:12px;color:#555}.sourceFields input{display:block;width:100%;box-sizing:border-box;margin-top:4px;padding:9px;border:1px solid #c9cdd2;border-radius:7px;font-size:14px}.twoCols{display:grid;grid-template-columns:1fr 1fr;gap:10px}.devHead{display:flex;align-items:center;justify-content:space-between;margin-top:8px}.devHead h3{margin:0}.developerRow{display:grid;grid-template-columns:1.25fr 1fr 34px;gap:7px;margin:7px 0}.developerRow input{margin:0}.developerRow button{border:1px solid #d5d8dc;background:white;border-radius:7px;font-size:18px;cursor:pointer}.sourceFields details{margin-top:14px}.sourceFields pre{white-space:pre-wrap;max-height:220px;overflow:auto;background:#f6f7f8;border-radius:7px;padding:10px;font-size:11px}.modalActions{position:sticky;bottom:-16px;background:white;border-top:1px solid #ddd;margin:16px -18px -16px;padding:12px 18px;display:flex;justify-content:flex-end;gap:8px}.warning{padding:10px 12px;background:#fff3cd;color:#6e5715;border:1px solid #f0d98a;border-radius:8px;margin-bottom:12px}
@media(max-width:1050px){.sourceEditorGrid{grid-template-columns:1fr}.sourceViewer{min-height:420px;border-right:0;border-bottom:1px solid #ccd0d5}.sourceModalCard{overflow:auto}.sourceEditorGrid{overflow:visible}.sourceFields{overflow:visible}.docPreviewFrame{height:430px}}
.sourcePreviewShelf{background:#fff;border:1px solid #e0e2e5;border-radius:10px;padding:12px;margin-bottom:16px}.shelfHead{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:10px}.shelfHead span{color:#777;font-size:12px}.sourcePreviewCards{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:8px}.sourcePreviewCard{border:1px solid #e3e5e8;border-radius:8px;padding:10px;display:flex;gap:8px;justify-content:space-between;align-items:center}.sourcePreviewCard div{min-width:0}.sourcePreviewCard b,.sourcePreviewCard span,.sourcePreviewCard small{display:block}.sourcePreviewCard span,.sourcePreviewCard small{color:#777;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.previewModalCard{width:min(1200px,94vw);height:min(900px,92vh);background:#fff;border-radius:12px;box-shadow:0 12px 50px #0006;display:flex;flex-direction:column;overflow:hidden}.previewModalBody{flex:1;min-height:0;background:#e7e8ea}.previewModalFrame{width:100%;height:100%;border:0;background:white}.templateButtons{display:flex;gap:6px}.previewError{padding:25px;display:grid;gap:8px;background:#fff;margin:20px;border-radius:8px;color:#8a2525}
.cachedThumb{width:58px;height:78px;object-fit:cover;border:1px solid #ddd;border-radius:4px;background:#f7f7f7;flex:none}
.generationModalCard{background:#fff;width:98vw;height:95vh;border-radius:12px;overflow:hidden;box-shadow:0 18px 60px #0006;display:flex;flex-direction:column}.generationGrid{display:grid;grid-template-columns:minmax(340px,1fr) minmax(390px,.8fr) minmax(420px,1.1fr);flex:1;min-height:0}.generationPane{min-width:0;min-height:0;border-right:1px solid #d5d8dc}.generationPane:last-child{border-right:0}.paneTitle{height:42px;box-sizing:border-box;padding:11px 13px;background:#f7f8f9;border-bottom:1px solid #d5d8dc;font-weight:700}.paneTitle span{font-weight:400;color:#777;font-size:12px}.generationPane iframe{width:100%;height:calc(100% - 42px);border:0;background:#e5e6e8}.generationForm{padding:0 16px 72px;overflow:auto;position:relative}.generationForm>.paneTitle{margin:0 -16px 14px}.generationForm label{display:block;font-size:12px;color:#555;margin:10px 0}.generationForm input,.generationForm select{display:block;width:100%;box-sizing:border-box;margin-top:4px;padding:9px;border:1px solid #c9cdd2;border-radius:7px;background:#fff}.generationForm .developerRow{grid-template-columns:1.25fr 1fr 34px}.manualHint{margin:14px 0;padding:10px 12px;border-radius:8px;background:#eef5ff;color:#31577e;font-size:12px}.generationActions{left:0;right:0;bottom:-72px;margin:18px -16px -72px}.sourcePreviewCard img.cachedThumb{width:46px;height:62px;object-fit:cover;border:1px solid #ddd;background:#eee}@media(max-width:1100px){.generationGrid{grid-template-columns:1fr 1fr}.resultViewer{display:none}}

/* v10: status filters, workflow mark and direct portal links */
.statusFilters{margin:16px 0;padding:11px;border:1px solid #dfe2e6;border-radius:9px;background:#fff}.statusFilters>b{display:block;margin-bottom:7px}.statusFilters label{display:flex;align-items:center;gap:7px;margin:6px 0;font-size:12px;color:#4d535b}.statusFilters input{width:auto;margin:0}.filterBtns{display:flex;gap:6px;margin-top:9px}.filterBtns button{padding:4px 8px;font-size:11px}.cardRight{display:flex;flex-direction:column;align-items:flex-end;gap:8px;flex:none}.signingFlag{display:flex!important;align-items:center;gap:5px;margin:0!important;font-size:11px!important;color:#59636e!important;cursor:pointer;white-space:nowrap}.signingFlag input{margin:0}.card.inSigning{border-left:4px solid #2f855a;background:#fbfffc}.card.inSigning .signingFlag span{font-weight:700;color:#28724c}.cardLinks{display:flex;gap:7px;flex-wrap:wrap;margin-top:7px;font-size:11px}.cardLinks a{color:#245da8;text-decoration:none}.cardLinks a:hover{text-decoration:underline}.cardLinks span{color:#aaa}

/* v11: workflow status and LA name-only generation */
.dot.signing,.legend i.signing{background:#7b4ab5}.pill.signing,.sum.signing{background:#efe7fa;color:#603594}.card.inSigning{border-left:4px solid #7b4ab5;background:#fdfaff}.card.inSigning .signingFlag span{font-weight:700;color:#603594}.developerRow.nameOnly .devPosition{display:none}.developerRow.nameOnly{grid-template-columns:1fr auto}.developerRow.nameOnly .devName{grid-column:1}.laModeHint{background:#f7f3fb;border-color:#ded1ee}
