:root{font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;color:#202534;background:#f5f6f8;font-size:16px;font-synthesis:none;--accent:#697d36;--lime:#c7ef80;--muted:#848b98;--line:#e8eaee;--dark:#171b27}*{box-sizing:border-box}body{margin:0}button,input,textarea,select{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:wait;opacity:.65}button:focus-visible,a:focus-visible{outline:3px solid #91b447;outline-offset:3px}button{border:0;background:none;color:inherit}a{color:inherit}svg{flex-shrink:0}.shell{display:grid;grid-template-columns:224px minmax(0,1fr);min-height:100vh}.sidebar{background:var(--dark);color:#959ba9;padding:32px 18px 22px;display:flex;flex-direction:column;position:fixed;width:224px;inset:0 auto 0 0;z-index:20}.brand{display:flex;align-items:center;gap:12px;padding:0 12px 36px;color:white}.brandmark{height:38px;width:38px;border:1px solid #4c5d38;color:var(--lime);border-radius:11px;display:grid;place-items:center;font-size:27px;font-weight:750}.brand strong{font-size:23px;letter-spacing:3px}.brand small{font-size:10px;letter-spacing:2.5px;display:block;color:#7a8190;margin-top:4px}.navlabel{font-size:12px;padding:10px 15px;color:#687182}.nav{display:flex;align-items:center;gap:12px;text-align:left;width:100%;padding:14px;margin:5px 0;border-radius:8px;font-size:14px}.nav:hover{background:#222837;color:#fff}.nav.active{background:#c7ef80;color:#202c17;font-weight:650}.nav .count{margin-left:auto;border-radius:5px;background:#ffffff0c;padding:1px 6px;font-size:12px}.side-bottom{margin-top:auto}.demo-card{margin:30px 8px 25px;border:1px solid #353b49;border-radius:10px;padding:15px;font-size:13px;line-height:1.8}.demo-card strong{color:#dce6cf;font-size:14px}.user{display:flex;gap:11px;align-items:center;padding:0 10px;border-top:1px solid #2c3140;padding-top:20px}.user span{background:#444a59;color:#fff;width:33px;height:33px;border-radius:50%;display:grid;place-items:center}.user strong{font-size:14px;color:#d9dce2}.user small{display:block;font-size:12px;margin-top:3px}.main{grid-column:2;min-width:0}.topbar{height:75px;border-bottom:1px solid var(--line);background:#fff;display:flex;justify-content:space-between;align-items:center;padding:0 36px;font-size:14px}.crumb{display:flex;gap:13px;color:#9ba0aa;align-items:center}.crumb b{font-weight:500;color:#343c49}.top-right{display:flex;align-items:center;gap:18px}.pill{display:inline-flex;align-items:center;gap:6px;font-size:12px;padding:5px 9px;border-radius:5px;white-space:nowrap;background:#f1f3f6;color:#717887}.demo-pill{color:#787044;background:#fbf7e9}.content{max-width:1640px;margin:auto;padding:30px 36px 38px}.heading{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:24px}h1{font-size:27px;letter-spacing:-.7px;margin:0 0 9px;font-weight:680}h2{font-size:17px;margin:0;font-weight:650}h3{font-size:16px;margin:0 0 12px}p{line-height:1.7}.sub{color:var(--muted);font-size:14px;margin:0}.btn{padding:10px 15px;border:1px solid #dee2e7;background:white;border-radius:7px;font-size:14px;display:inline-flex;align-items:center;justify-content:center;gap:7px;white-space:nowrap;font-weight:550}.btn:hover{background:#f5f7f0;border-color:#b4ca8d}.btn.primary{background:#202735;color:white;border-color:#202735}.btn.lime{background:var(--lime);border-color:var(--lime);color:#2c3b1e}.btn.small{padding:7px 10px;font-size:13px}.btn.text{border:0;background:none;color:#667d35;padding:4px}.actions{display:flex;gap:9px;align-items:center;flex-wrap:wrap}.overview{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:24px}.stat{background:#fff;border:1px solid var(--line);border-radius:10px;padding:19px 21px}.stat-top{display:flex;align-items:center;justify-content:space-between;font-size:14px;color:#777f8b}.stat-top svg{color:#9aa48c}.stat strong{display:block;font-size:29px;font-weight:650;letter-spacing:-1px;margin:12px 0 6px}.stat small{color:#9a9fac;font-size:12px}.stat small em{font-style:normal;color:#637d3c}.workflow{display:grid;grid-template-columns:repeat(4,1fr);border:1px solid var(--line);background:white;border-radius:10px;margin-bottom:24px;overflow:hidden}.step{padding:17px 19px;display:flex;align-items:center;gap:12px;border-right:1px solid var(--line);text-align:left}.step:last-child{border:0}.step b{font-size:14px;font-weight:600;display:block}.step small{display:block;font-size:12px;color:#949ba5;margin-top:5px}.step .num{font-size:12px;display:grid;place-items:center;width:28px;height:28px;border:1px solid #e2e5e9;border-radius:50%;color:#949ca8}.step.current{background:#f3f7eb}.step.current .num{background:#70874a;color:#fff;border-color:#70874a}.grid{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(300px,1fr);gap:22px}.panel{background:#fff;border:1px solid var(--line);border-radius:11px;overflow:hidden}.panel-head{padding:20px 22px;display:flex;justify-content:space-between;align-items:center;gap:12px;border-bottom:1px solid #f0f1f3}.panel-body{padding:22px}.eyebrow{font-size:11px;letter-spacing:1.5px;color:#8e96a2;margin-bottom:7px}.field{display:block;margin-bottom:20px}.field>span{display:block;font-size:14px;font-weight:550;margin-bottom:9px}.field input,.field select,.field textarea,.input{width:100%;border:1px solid #e0e4e9;border-radius:7px;padding:11px 12px;color:#364050;background:#fff;font-size:14px;outline:none}.field input:focus,.field textarea:focus,.input:focus{border-color:#a5bd7b;box-shadow:0 0 0 3px #c7ef8022}.field textarea{line-height:1.9;resize:vertical;min-height:158px}.field-row{display:grid;grid-template-columns:1fr 1fr;gap:18px}.platforms{display:flex;gap:10px}.platform-option{display:flex;gap:9px;align-items:center;padding:10px 13px;border:1px solid #e1e4e9;border-radius:7px;flex:1;font-size:14px}.platform-option:has(input:checked){border-color:#a2b47e;background:#f7f9f2}.platform-option input{accent-color:#718548}.platform-logo{width:24px;height:24px;border-radius:6px;display:inline-grid;place-items:center;background:#202430;color:white;font-size:14px;font-weight:700}.platform-logo.red{background:#ff385b;font-size:10px}.hint{background:#f7f8fa;border-radius:7px;padding:12px 14px;display:flex;gap:9px;color:#858c99;font-size:12px;line-height:1.7}.form-footer{border-top:1px solid var(--line);padding:17px 22px;display:flex;align-items:center;justify-content:space-between;gap:12px}.form-footer small{font-size:12px;color:#9299a5}.ai-badge{display:flex;gap:7px;align-items:center;font-size:12px;color:#718649}.result{padding:2px 0 17px;margin-bottom:16px;border-bottom:1px solid #f0f1f3}.result:last-child{border:0;margin-bottom:0;padding-bottom:0}.result-title{font-size:13px;color:#8a929d;margin-bottom:10px}.tags{display:flex;gap:7px;flex-wrap:wrap}.tag{font-size:12px;background:#f1f4eb;color:#627745;padding:5px 9px;border-radius:5px}.tag.gray{background:#f4f5f8;color:#6d7687}.result p{font-size:14px;margin:0;color:#4d5765}.priority{color:#a58649;font-size:12px;float:right}.checkline{display:flex;align-items:flex-start;gap:8px;font-size:14px;color:#5e6775;line-height:1.8;margin:7px 0}.checkline svg{color:#839758;margin-top:4px}.notice{margin-top:19px;background:#f9f8f2;border:1px solid #ede9d7;border-radius:8px;padding:13px;color:#8b805b;font-size:12px;line-height:1.7}.bottom-note{margin-top:20px;text-align:center;color:#a2a7b1;font-size:12px}.segmented{display:flex;padding:4px;background:#eef0f3;border-radius:8px;gap:3px}.segmented button{padding:8px 17px;border-radius:6px;font-size:14px;color:#7b8391}.segmented button.active{background:#fff;box-shadow:0 2px 4px #2025330a;color:#303a48;font-weight:600}.filterbar{display:flex;gap:12px;padding:19px 22px;align-items:center;flex-wrap:wrap}.filterbar .input{width:auto;min-width:150px}.filterbar input.input{flex:1}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;white-space:nowrap;font-size:14px}th{text-align:left;color:#8c949f;background:#fafbfc;font-size:12px;font-weight:500;padding:14px 16px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}td{padding:18px 16px;border-bottom:1px solid #f0f1f4}td input,th input{accent-color:#758d43;width:15px;height:15px}.creator{display:flex;align-items:center;gap:11px}.avatar{width:39px;height:39px;display:grid;place-items:center;border-radius:12px;font-size:15px;font-weight:600}.creator b{display:block;font-size:14px;font-weight:600}.creator small{display:block;font-size:12px;color:#99a0aa;margin-top:5px}.score{font-size:19px;color:#6d8746;font-weight:650}.score small{font-size:12px;font-weight:400}.positive{color:#758a50}.table-bottom{display:flex;justify-content:space-between;align-items:center;padding:17px 22px;color:#8d95a0;font-size:12px;gap:12px}.shortlist{margin-top:20px;padding:18px 22px;display:flex;align-items:center;justify-content:space-between;border:1px solid #dfe8cc;background:#f3f7eb;border-radius:10px}.shortlist b{font-size:14px}.shortlist small{display:block;margin-top:6px;font-size:12px;color:#85936f}.report-grid{display:grid;grid-template-columns:1.4fr 1fr;gap:22px}.chart{height:220px;display:flex;align-items:flex-end;gap:24px;padding:25px 10px 0;border-bottom:1px solid #e3e6eb;background:repeating-linear-gradient(to top,transparent 0,transparent 53px,#f0f2f4 54px,#f0f2f4 55px)}.bar-group{height:100%;flex:1;display:flex;align-items:flex-end;justify-content:center;gap:8px;position:relative}.bar{width:26%;border-radius:4px 4px 0 0;background:#b9d88a}.bar.dark{background:#444e65}.bar-labels{display:flex;padding:12px 10px 0;gap:24px;color:#949ba6;font-size:12px;text-align:center}.bar-labels span{flex:1}.legend{display:flex;gap:17px;color:#8b94a0;font-size:12px}.legend i{display:inline-block;width:8px;height:8px;border-radius:2px;margin-right:5px}.insight{border-bottom:1px solid var(--line);padding:17px 0}.insight:last-child{border-bottom:0}.insight b{font-size:14px;font-weight:600}.insight p{font-size:13px;color:#8a929e;margin:7px 0 0;line-height:1.8}.insight .index{font-size:12px;color:#91a56b;display:inline-block;margin-right:10px}.progress-row{margin:20px 0}.progress-row>div{display:flex;justify-content:space-between;font-size:14px;margin-bottom:9px}.progress{height:6px;background:#f0f2f5;border-radius:6px;overflow:hidden}.progress i{display:block;height:100%;background:#a4bf77;border-radius:6px}.metric-detail{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.metric-detail div{padding:16px;background:#f7f8fa;border-radius:8px}.metric-detail small{display:block;color:#8d95a0;font-size:12px}.metric-detail b{display:block;font-size:21px;margin-top:8px}.valuation-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:23px}.big-score{font-size:42px;font-weight:650;color:#748b4c}.big-score small{font-size:14px;color:#9ca58e}.calculation{padding:18px;background:#f4f7ed;border-radius:9px}.calc-row{display:flex;justify-content:space-between;font-size:14px;line-height:2.1;color:#7e8970}.calc-row.total{border-top:1px solid #dfe7d2;margin-top:12px;padding-top:12px;color:#465639}.calc-row.total strong{font-size:26px;letter-spacing:-.7px}.quote-grid{display:grid;grid-template-columns:1.05fr 1fr;gap:22px}.quote-status{background:#f8f1df;color:#9c814c}.empty{padding:50px;text-align:center;color:#949caa;font-size:14px}.toast{position:fixed;bottom:30px;left:50%;transform:translateX(-50%);padding:13px 22px;background:#252c3a;color:#fff;border-radius:9px;box-shadow:0 8px 30px #18203620;z-index:100;font-size:14px}dialog{border:0;padding:0;border-radius:16px;width:min(580px,90vw);box-shadow:0 25px 80px #0d142344;color:#303947}dialog::backdrop{background:#151d2b66;backdrop-filter:blur(3px)}.dialog-body{padding:24px}.dialog-header{display:flex;justify-content:space-between;align-items:center;padding:20px 24px;border-bottom:1px solid var(--line)}.dialog-header button{font-size:24px;color:#959ca6}.mobile-brand{display:none}.report-banner{display:flex;align-items:center;justify-content:space-between;background:#202737;color:#fff;padding:24px 26px;border-radius:10px;margin-bottom:22px;gap:20px}.report-banner h2{font-size:20px}.report-banner p{font-size:13px;color:#adb6c6;margin:10px 0 0}.report-banner .issue{font-size:36px;color:#c5db9c;font-weight:300}.loading{animation:pulse .65s ease infinite alternate}@keyframes pulse{to{opacity:.4}}@media(min-width:1600px){.content{padding:40px 50px}.panel-body{padding:26px}.field textarea{min-height:185px}td{padding-top:22px;padding-bottom:22px}}@media(max-width:1150px){.shell{grid-template-columns:190px minmax(0,1fr)}.sidebar{width:190px;padding-left:12px;padding-right:12px}.content{padding:26px 24px}.topbar{padding:0 24px}.grid{grid-template-columns:1.3fr 1fr}.step{padding:15px 12px;gap:8px}.step small{font-size:11px}.stat{padding:16px}.report-grid,.quote-grid{grid-template-columns:1fr}}@media(max-width:900px){.shell{display:block}.sidebar{position:static;width:auto;padding:14px 18px;display:block}.brand,.navlabel,.side-bottom{display:none}.sidebar nav{display:flex;overflow:auto;gap:6px}.nav{width:auto;white-space:nowrap;margin:0;padding:10px 13px}.nav .count{display:none}.topbar{height:62px}.grid{grid-template-columns:1fr}.overview{gap:10px}.stat strong{font-size:25px}.workflow{display:none}.content{padding:23px 20px}.heading{align-items:flex-start}h1{font-size:24px}.report-grid{grid-template-columns:1fr 1fr}.top-right>span:last-child{display:none}}@media(max-width:600px){.overview{grid-template-columns:1fr 1fr}.stat-top{font-size:12px}.heading{display:block}.heading>.actions,.heading>.btn{margin-top:16px}.field-row,.report-grid,.quote-grid{grid-template-columns:1fr}.content{padding:20px 14px}.panel-body,.panel-head{padding:18px}.topbar{padding:0 16px}.crumb{font-size:12px}.segmented button{padding:8px 12px}.filterbar{padding:15px}.filterbar .input{width:100%}.shortlist{gap:13px}.shortlist .actions{justify-content:flex-end}.form-footer{align-items:flex-start}.form-footer small{max-width:45%}.metric-detail{gap:7px}.metric-detail div{padding:11px}.metric-detail b{font-size:18px}.report-banner .issue{display:none}.top-right{gap:5px}.topbar .demo-pill{font-size:11px}}
/* Three complementary intake channels */
.channel-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin:22px 0}.channel{display:flex;gap:14px;align-items:flex-start;background:#fff;border:1px solid #e6e9ee;border-radius:12px;text-align:left;padding:23px 20px;position:relative;min-height:132px}.channel.active{border-color:#7866fa;box-shadow:0 0 0 1px #7866fa15}.channel-icon{width:36px;height:36px;background:#f1efff;color:#7863ed;display:grid;place-items:center;border-radius:10px}.channel b{display:block;font-size:16px;margin-bottom:9px}.channel small{display:block;color:#939aa7;font-size:12px;line-height:1.7}.channel em{font-size:12px;color:#8974dd;font-style:normal;display:block;margin-top:13px}.channel-selected{position:absolute;right:13px;top:12px;color:#8a7be0;font-size:10px}.brief-workspace{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:22px;align-items:start}.brief-summary{position:sticky;top:20px}.slot-tabs{display:flex;gap:22px;padding:0 22px;border-bottom:1px solid var(--line);overflow:auto}.slot-tabs button{padding:18px 0 13px;font-size:14px;white-space:nowrap;border-bottom:2px solid transparent;color:#88919e}.slot-tabs button.active{color:#6f55e8;border-color:#7458f5;font-weight:600}.slot-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.slot-field.wide{grid-column:1/-1}.slot-label{display:flex;align-items:center;justify-content:space-between;gap:7px;margin-bottom:9px}.slot-label label{font-size:14px;font-weight:550}.required{color:#8f7adf}.mode-select{font-size:11px;color:#8c899a;border:0;background:#f5f4f9;border-radius:4px;max-width:90px;padding:3px}.slot-field textarea{resize:vertical;line-height:1.65;min-height:80px}.record-only{font-size:10px;font-weight:400;color:#a9a3b7;background:#f5f4f9;border-radius:4px;padding:1px 5px;margin-left:6px;vertical-align:1px}.field-warn{font-size:11px;color:#b98e4c;background:#fff7e9;border-radius:5px;padding:6px 8px;margin-top:6px;line-height:1.7}.field-provenance{font-size:11px;color:#a4a9b3;min-height:19px;margin-top:6px}.field-provenance details{display:inline;margin-left:6px}.field-provenance summary{display:inline;cursor:pointer;color:#8c79c7}.field-provenance p{padding:8px;background:#f5f4fb;margin:5px 0;color:#848095}.completeness{display:flex;justify-content:space-between;align-items:center;margin-bottom:15px}.completeness strong{font-size:30px;letter-spacing:-1px}.completeness strong small{font-size:15px;color:#a4aab4;font-weight:400}.completeness>span{font-size:13px;color:#6b7584;text-align:right;line-height:1.6}.completeness>span small{font-size:11px;color:#a4a9b3}.summary-counts{display:flex;justify-content:space-between;gap:8px;margin:18px 0;color:#9aa1ad;font-size:11px}.summary-counts b{color:#81758d;margin-left:3px}.summary-row{display:flex;justify-content:space-between;gap:15px;padding:10px 0;border-bottom:1px solid #f3f3f7;font-size:12px}.summary-row>span{color:#8c95a3;white-space:nowrap}.summary-row>div{text-align:right;overflow-wrap:anywhere}.summary-row b{font-size:13px;font-weight:500;color:#5b6170;line-height:1.6}.summary-row small{font-size:10px;color:#aaa4ba;display:block;margin-top:3px}.summary-row .unknown{color:#b8bec8}.summary-flag{font-size:12px;padding:11px;background:#f3f7ec;color:#829566;border-radius:6px;display:flex;gap:8px;margin-top:16px;line-height:1.7}.summary-flag.warn{background:#fff7e9;color:#aa8c53}.summary-footer{display:flex;flex-direction:column;gap:9px;padding:0 20px 20px}.reference-separator{font-size:12px;color:#9297a5;border-top:1px solid var(--line);padding-top:20px;margin:24px 0 18px}.reference-dimensions{display:flex;gap:14px;align-items:center;flex-wrap:wrap;font-size:12px;color:#8a92a1}.reference-dimensions label{display:inline-flex;align-items:center;gap:5px;color:#655d7d}.reference-dimensions input{accent-color:#7861ef}.reference-list{display:grid;gap:15px;margin-top:22px}.reference-card,.document-card{border:1px solid #e9e7f1;border-radius:9px;padding:17px;margin-top:15px}.reference-head{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;margin-bottom:15px}.reference-head b{font-size:14px;margin-right:8px}.reference-head small{display:block;font-size:11px;color:#9b9dac;margin-top:7px;overflow-wrap:anywhere}.reference-head>div{min-width:0}.similarity-preview{background:#f7f7fc;border-radius:7px;padding:12px 14px;margin:14px 0}.similarity-preview>small{color:#9594a4;font-size:11px}.similarity-preview>div{display:flex;justify-content:space-between;font-size:12px;padding-top:10px;color:#686576}.similarity-preview em{color:#a9a3b7;font-size:10px;font-style:normal;margin-left:6px}.similarity-preview b{color:#8c79d4}.upload-zone{display:flex;align-items:center;justify-content:center;flex-direction:column;gap:13px;padding:36px 18px;background:#fcfbff;border:1.5px dashed #d2c8ff;border-radius:10px;cursor:pointer;color:#8673d8;text-align:center}.upload-zone b{font-size:15px;font-weight:500;color:#6d617e}.upload-zone span{font-size:12px;color:#a396bc}.upload-zone small{font-size:11px;color:#b1a9bf}.upload-zone input{max-width:100%;font-size:12px;color:#9a8caf}.upload-zone input::file-selector-button{border:0;border-radius:5px;background:#ede9ff;color:#7861dc;padding:7px 10px;margin-right:10px;cursor:pointer}.upload-zone.dragover{background:#f0eaff;border-color:#8c72ef}.upload-zone.busy{opacity:.6}.file-error{font-size:13px;color:#b96860;background:#fff2f0;padding:12px;border-radius:7px;margin-top:15px}.document-card details,.merge-item details{font-size:12px;color:#8d7dac}.document-card summary,.merge-item summary{cursor:pointer}.document-card pre{max-height:230px;overflow:auto;white-space:pre-wrap;word-break:break-word;background:#f8f7fb;border-radius:6px;padding:12px;font:12px/1.8 inherit;color:#7d768e}.file-examples{padding:28px 10px 12px}.file-examples h3{font-size:14px;color:#7a7386}.file-examples p,.file-examples small{font-size:12px;color:#a19aaa;line-height:1.9}.merge-panel{margin-top:22px}.merge-list{padding:0 22px}.merge-item{padding:20px 0;border-bottom:1px solid var(--line)}.merge-item:last-child{border:0}.merge-title{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.merge-title b{font-size:14px}.merge-title small{color:#aaa0b6;font-size:11px;margin-left:auto}.conflict-pill{background:#fff2df;color:#b98e4c}.merge-values{display:grid;grid-template-columns:1fr 1fr auto;gap:18px;margin:15px 0}.merge-values small{font-size:11px;color:#a7a0b1}.merge-values p{font-size:13px;color:#6e657d;margin:6px 0;overflow-wrap:anywhere}.merge-item details p{background:#f7f5fa;padding:12px;color:#8d8299;line-height:1.7}.merge-empty{display:flex;align-items:center;justify-content:center;gap:15px;padding:30px;color:#a29bad}.merge-empty b{font-size:13px;font-weight:500}.merge-empty p{font-size:12px;margin:7px 0 0;color:#b2aaba}.match-context{background:#f0ecff;border:1px solid #e0d6fd;padding:17px 20px;border-radius:10px;display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:20px}.match-context b{font-size:14px;color:#7e63c6;display:flex;gap:6px;align-items:center}.match-context p{font-size:12px;color:#8e7faa;margin:9px 0 5px}.match-context small{font-size:11px;color:#ac9ec2;line-height:1.7}.confirmed-pill{background:#eeebff;color:#8976ca}
/* Reference layout: function rail, project list, centered workspace */
:root{--accent:#6950ff;--lime:#7057ff;--dark:#fff;--muted:#9396a5;--line:#eeeef5;background:#f6f7fb;color:#252635}.studio-shell{display:grid;grid-template-columns:64px 224px minmax(0,1fr);min-height:100vh}.function-rail{position:fixed;inset:0 auto 0 0;width:64px;background:linear-gradient(180deg,#e3dfff,#f5f6fb 58%);display:flex;flex-direction:column;align-items:center;padding:25px 5px 18px;z-index:25;border-right:1px solid #ece9fd}.rail-logo{font-size:27px;font-weight:750;line-height:1;color:#6f57ef;margin-bottom:39px}.rail-nav{display:flex;flex-direction:column;gap:16px;width:100%}.rail-item{padding:12px 0;color:#747381;display:flex;flex-direction:column;align-items:center;gap:7px;font-size:10px;white-space:nowrap}.rail-item .icon-container{width:34px;height:34px;display:grid;place-items:center;border-radius:50%}.rail-item.active{color:#6550d8}.rail-item.active .icon-container{background:#fff;box-shadow:0 3px 10px #6958c826}.rail-profile{margin-top:auto;width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:white;font-size:12px;color:#897abd}.project-sidebar{position:fixed;left:64px;top:0;bottom:0;width:224px;background:#fff;border-right:1px solid #eeedf4;padding:27px 17px;z-index:22;display:flex;flex-direction:column}
/* 项目列表自己滚（用户 2026-10-13：左侧项目滑不动，老项目看不到）。
   侧栏是 position:fixed;top:0;bottom:0，盒子高正好等于视口，项目一多列表就顶出下边界，
   而 fixed 元素溢出的部分不产生页面滚动条 —— 于是既滚不动也够不着。
   · min-height:0 是显式兜底：按规范，overflow 非 visible 时 flex 子项的 min-height:auto
     本来就解析成 0（2026-10-13 变异验证过：单独去掉它照样能滚），写出来是为了
     不依赖这条隐式规则 —— 哪天 overflow 被人改回 visible，它才真正起作用。
   · 用 flex:0 1 auto 而不是 flex:1：项目**少**时列表按内容高、不撑开，页脚照旧紧跟其后，
     视觉与改动前完全一致；只在放不下时才收缩出滚动条。
   · 只让列表滚，不把 overflow 加到 .project-sidebar —— 那会把「新建项目」和搜索框
     一起滚出视口（探针 web_sidebar_scroll.js 有两条断言守着）。 */
#project-list{flex:0 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain}.project-brand{font-size:21px;letter-spacing:.3px;font-weight:650;margin:3px 0 20px}.new-project{width:100%;background:#6b4cff;color:#fff;border:0;border-radius:24px;padding:12px 10px;font-size:13px;display:flex;justify-content:center;align-items:center;gap:8px}.project-search{display:flex;align-items:center;background:#f6f7fa;margin:15px 0 25px;padding:7px 8px;border-radius:6px;color:#c1bfcc;gap:6px}.project-search input{border:0;outline:0;background:transparent;width:100%;font-size:11px;color:#8d8b9c}.project-search input::placeholder{color:#b7b3c4}.project-list-label{font-size:11px;color:#b3aebe;margin:0 10px 12px}.project-item{width:100%;text-align:left;font-size:12px;color:#777181;padding:12px 10px;margin-bottom:6px;border-radius:7px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.project-item.active{background:#f1edff;color:#7b62d7}.project-item:hover{background:#f7f4ff}.project-end{font-size:10px;color:#c5bfce;text-align:center;padding:18px 0}.project-note{position:absolute;bottom:25px;left:24px;right:20px;font-size:10px;color:#bdb6c7;line-height:1.8}.studio-main{grid-column:3;min-width:0}.studio-topbar{height:65px;padding:0 35px;display:flex;justify-content:space-between;align-items:center;color:#9690a2;font-size:12px}.studio-topbar>div{display:flex;align-items:center;gap:10px}.studio-topbar strong{font-size:12px;font-weight:450;color:#92909b}.studio-main .content{max-width:1520px;padding:30px 38px 40px}.studio-main.intake-view .content{max-width:1100px;padding-top:42px}.assistant-intro{display:flex;align-items:center;gap:20px;margin:3px 0 39px;padding:0 8px}.assistant-emblem{display:grid;place-items:center;width:54px;height:54px;border-radius:17px;background:linear-gradient(135deg,#efeaff,#e1dfff);box-shadow:0 6px 15px #8875ff18;color:#6952e5}.assistant-intro h1{font-size:25px;font-weight:630;margin:0 0 10px;letter-spacing:-.5px}.assistant-intro h1 span{color:#6a4fff}.assistant-intro p{font-size:12px;color:#9290a0;margin:0}.intake-view .channel-grid{margin-bottom:35px}.intake-view .channel{min-height:135px;border-color:#fff;padding:24px}.intake-view .channel.active{border-color:#e2dafe;box-shadow:0 3px 14px #8d75e50a}.quick-prompts{margin:0 0 35px}.quick-prompts>small{display:block;font-size:12px;color:#9d94aa;margin-bottom:13px}.prompt-grid{display:flex;flex-wrap:wrap;gap:9px}.prompt-chip{display:flex;align-items:center;gap:7px;padding:8px 12px;background:#fff;border:1px solid #ece8ff;border-radius:22px;font-size:11px;color:#81778f}.prompt-chip svg{color:#a58bed}.composer-bar{display:flex;align-items:center;justify-content:space-between;margin-bottom:11px;font-size:12px;color:#9a8fac}.composer-bar .pill{background:transparent;color:#8c6ee8;border:1px solid #b7a2fa;border-radius:18px;padding:5px 11px;font-size:11px}.composer-bar button{font-size:11px;color:#9a8eac}.intake-view .brief-workspace{display:block}.intake-view .input-workspace{border:1.5px solid #9072ff;border-radius:13px;overflow:visible}.intake-view .input-workspace .panel-head{padding:18px 22px 15px}.intake-view .input-workspace h2{font-size:15px;color:#6b627b}.intake-view .input-workspace .panel-body{padding-top:20px}.intake-view .brief-summary{position:static;margin-top:22px}.intake-view .summary-body{display:grid;grid-template-columns:1fr 1fr;gap:0 24px}.intake-view .completeness,.intake-view .summary-counts,.intake-view .summary-body>.progress,.intake-view .summary-flag,.intake-view .summary-body>p{grid-column:1/-1}.intake-view .completeness{display:none}.intake-view .summary-counts{justify-content:flex-start;gap:25px}.intake-view .summary-footer{flex-direction:row;justify-content:flex-end}.intake-view .slot-grid{grid-template-columns:1fr 1fr}.intake-view .slot-field .input{background:#fff;border-color:#eeeaf5;font-size:13px;padding:10px}.intake-view .slot-field .input:focus{border-color:#b8a3ee;box-shadow:0 0 0 2px #f3eefe}.intake-view .form-footer{border-top:1px solid #f0edf7}.intake-view .btn.primary,.btn.primary{background:#7153f4;border-color:#7153f4}.btn.lime{background:#7054f4;border-color:#7054f4;color:#fff}.tag{color:#8d73c5;background:#f4efff}.positive,.score,.big-score{color:#8d72c9}.progress i{background:#b49aea}.step.current{background:#f5efff}.step.current .num{background:#a486d1;border-color:#a486d1}.calculation{background:#f6f2fc}.calc-row{color:#9583a6}.calc-row.total{border-color:#e8ddef;color:#887199}.stat-top svg,.ai-badge{color:#a08bbe}.shortlist{background:#f6f2fc;border-color:#e9dff4}.shortlist small{color:#a694b9}.btn.text{color:#8f75b4}.report-banner{background:#40344e}.report-banner .issue{color:#d4bfe8}.panel{border-color:#eeebf4}.btn:hover{background:#f4efff;border-color:#bca4e0}.btn.primary:hover,.btn.lime:hover{background:#8164e8;color:#fff}.studio-main .bottom-note{font-size:10px;color:#b8b1c2}.intake-view .heading{display:none}.review-toggle{display:flex;align-items:center;justify-content:space-between;width:100%;padding:18px 22px;text-align:left;border-bottom:1px solid #f0edf7}.review-toggle strong{font-size:14px;font-weight:550;color:#766583}.review-toggle small{font-size:12px;color:#ab9bb8}.review-toggle span{font-size:12px;color:#a088be}.brief-summary.collapsed .summary-body,.brief-summary.collapsed .summary-footer{display:none}.new-project-form label{font-size:14px;display:block;margin-bottom:10px}.new-project-form .actions{margin-top:20px;justify-content:flex-end}.mobile-project-label{display:none}
@media(min-width:1700px){.studio-main.intake-view .content{padding-top:64px}.assistant-intro{margin-bottom:48px}.intake-view .channel-grid{margin-bottom:40px}.quick-prompts{margin-bottom:44px}}
@media(max-width:1200px){.studio-shell{grid-template-columns:60px 190px minmax(0,1fr)}.function-rail{width:60px}.project-sidebar{left:60px;width:190px;padding:24px 13px}.project-brand{font-size:19px}.studio-main .content{padding:25px}.studio-main.intake-view .content{padding-top:25px}.channel{padding:18px 13px;gap:9px}.intake-view .channel{padding:18px 13px}.channel-icon{width:30px;height:30px}.channel b{font-size:14px}.channel small{font-size:11px}.assistant-intro h1{font-size:23px}.merge-values{grid-template-columns:1fr 1fr}.merge-values>.actions{grid-column:1/-1;justify-content:flex-end}}
@media(max-width:960px){.studio-shell{grid-template-columns:60px minmax(0,1fr)}.project-sidebar{display:none}.studio-main{grid-column:2}.mobile-project-label{display:block}.studio-topbar{padding:0 24px}.studio-topbar .demo-pill{font-size:10px}.channel-grid{gap:10px}.channel-icon{display:none}.channel-selected{display:none}.brief-workspace{grid-template-columns:1fr}.assistant-intro{gap:14px}.intake-view .slot-grid{grid-template-columns:1fr 1fr}}
@media(max-width:600px){.studio-shell{display:block;padding-bottom:68px}.function-rail{inset:auto 0 0 0;width:100%;height:64px;padding:0 5px;flex-direction:row;background:#f2eefb;border-right:0;border-top:1px solid #e6dcf4}.rail-logo,.rail-profile{display:none}.rail-nav{flex-direction:row;justify-content:space-around;gap:0}.rail-item{padding:4px 0;gap:3px;font-size:9px}.rail-item .icon-container{width:28px;height:28px}.studio-topbar{height:56px;padding:0 16px}.studio-main .content{padding:18px 14px}.studio-main.intake-view .content{padding-top:15px}.assistant-intro{margin:4px 0 23px;align-items:flex-start;gap:11px;padding:0}.assistant-emblem{width:39px;height:39px;flex-shrink:0;border-radius:12px}.assistant-intro h1{font-size:18px;line-height:1.55;margin-bottom:5px}.assistant-intro h1 span{display:block}.assistant-intro p{font-size:11px;line-height:1.7}.intake-view .channel-grid{gap:7px;margin:16px 0 25px}.intake-view .channel{padding:13px 9px;min-height:119px}.channel b{font-size:12px}.channel small{font-size:10px}.channel em{font-size:10px;margin-top:10px}.quick-prompts{margin-bottom:25px}.prompt-chip{font-size:10px;padding:7px 10px}.intake-view .slot-grid,.slot-grid{grid-template-columns:1fr}.slot-field.wide{grid-column:auto}.slot-label label{font-size:13px}.mode-select{font-size:10px}.slot-tabs{padding:0 16px;gap:20px}.slot-tabs button{font-size:12px}.intake-view .summary-body{grid-template-columns:1fr}.summary-row{grid-column:1}.summary-footer .btn{font-size:12px}.merge-panel .panel-head{align-items:flex-start}.merge-title small{margin-left:0;width:100%}.merge-values{gap:10px}.merge-title{gap:7px}.merge-title b{font-size:13px}.merge-list{padding:0 16px}.match-context{display:block}.match-context>.btn{margin-top:14px}.reference-dimensions{gap:9px;font-size:11px}.form-footer{padding:15px 18px}.form-footer small{font-size:10px}.composer-bar .pill{font-size:10px}.studio-main .bottom-note{line-height:1.7}.studio-topbar strong{max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}
/* Shared intake: form / guided conversation */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.intake-mode-bar{display:flex;justify-content:space-between;align-items:center;gap:20px;margin:-10px 0 28px}.intake-mode-bar>div{display:flex;flex-direction:column;gap:6px}.mode-eyebrow{font-size:12px;letter-spacing:.5px;color:#a09aad}.mode-description{font-size:14px;color:#797080}.mode-flip-button{display:flex;align-items:center;gap:9px;background:#fff;border:1px solid #ded5fc;border-radius:24px;padding:11px 17px;font-size:14px;color:#7658d2;box-shadow:0 3px 9px #8973d508;white-space:nowrap}.mode-flip-button:hover{background:#f2edff;border-color:#bca8f0}.flip-glyph{font-size:20px;margin-left:4px;line-height:1}.intake-face{transform-origin:center top}.intake-face.is-switching{animation:intake-flip .3s ease-out}@keyframes intake-flip{from{opacity:.35;transform:perspective(1000px) rotateY(-4deg) translateY(6px)}to{opacity:1;transform:none}}.conversation-workspace{max-width:1000px;margin:0 auto}.conversation-header{display:flex;align-items:center;gap:13px;margin-bottom:24px}.chat-assistant-mark{height:42px;width:42px;border-radius:13px;display:grid;place-items:center;background:#eae5ff;color:#7a59e0;flex-shrink:0}.conversation-header h1{font-size:23px;letter-spacing:0;margin:0 0 6px;color:#302c3c}.conversation-header p{font-size:13px;color:#9891a5;margin:0}.conversation-header>.pill{margin-left:auto;background:#f0eaf9;color:#a08bbd}.chat-stage-strip{display:flex;align-items:center;justify-content:space-between;background:white;border:1px solid #efebf4;border-radius:10px;padding:15px 20px;gap:10px;margin-bottom:15px}.chat-stage-strip>span{display:flex;align-items:center;gap:8px;font-size:13px;color:#b4adbf}.chat-stage-strip i{font-size:11px;font-style:normal;width:23px;height:23px;border-radius:50%;display:grid;place-items:center;background:#f4f2f7;color:#b1a6bf}.chat-stage-strip .done{color:#8a6dc7}.chat-stage-strip .done i{background:#ece5fc;color:#9576cf}.chat-shared-state{display:flex;justify-content:space-between;gap:15px;align-items:center;font-size:13px;color:#9d8fae;margin:0 0 20px;padding:0 3px}.chat-shared-state>span{display:flex;align-items:center;gap:7px}.chat-shared-state small{font-size:12px;margin-left:5px;color:#b0a4bd}.chat-shared-state button{font-size:12px;color:#8c6dcc;text-decoration:underline;text-underline-offset:3px}.conversation-log{max-height:64vh;min-height:180px;overflow-y:auto;scrollbar-width:thin;scrollbar-color:#d8cfea transparent;padding:12px 8px 12px 0}.chat-message{display:flex;align-items:flex-start;gap:12px;margin-bottom:25px}.chat-avatar{width:30px;height:30px;flex-shrink:0;border-radius:10px;display:grid;place-items:center;background:#e7defc;color:#8867d0;font-size:12px;margin-top:27px}.chat-message-content{max-width:calc(100% - 90px);min-width:120px}.chat-message-meta{display:flex;gap:13px;align-items:center;font-size:12px;color:#8a8096;margin-bottom:8px}.chat-message-meta time{font-size:11px;color:#bbb1c7}.chat-bubble{padding:17px 20px;background:#fff;border:1px solid #eeeaf4;border-radius:3px 13px 13px 13px;color:#655b72;box-shadow:0 2px 5px #73668103}.chat-bubble>p{font-size:15px;line-height:1.9;margin:0}.chat-message.from-user{flex-direction:row-reverse}.from-user .chat-avatar{background:#e9e5f0;color:#897b99;border-radius:50%}.from-user .chat-message-meta{justify-content:flex-end}.from-user .chat-bubble{background:#eee9fb;border-color:#eee9fb;border-radius:13px 3px 13px 13px;color:#71628c}.chat-sync-card{margin:0 45px 27px;padding:15px 18px;border:1px dashed #ded4ed;border-radius:9px;color:#9f90b4;font-size:12px;background:#f9f6fd}.chat-sync-card>span{display:flex;align-items:center;gap:7px;margin-bottom:10px}.chat-sync-card>div{display:flex;flex-wrap:wrap;gap:10px 22px;line-height:1.7}.chat-sync-card b{font-weight:500;color:#897699}.chat-next-question{background:#fff;border:1px solid #e6def2;border-radius:11px;padding:18px 21px;margin:8px 0 16px;font-size:14px;color:#8c789e}.chat-question-label{font-size:11px;color:#a996be}.chat-next-question h2{font-size:16px;color:#756580;font-weight:550;margin:8px 0 13px}.chat-quick-replies{display:flex;flex-wrap:wrap;gap:8px}.chat-quick-replies button{padding:7px 13px;border:1px solid #e1d6f1;border-radius:18px;background:#faf7ff;font-size:13px;color:#9879b4}.chat-quick-replies button:hover{border-color:#b698d4;background:#f1e7ff}.chat-quick-replies .skip-reply{background:white;border-color:#eeebf2;color:#b2a4be}
/* 两颗动作按钮**紧贴输入框上沿**、等宽并排（用户 2026-10-13）。
   它们原先塞在「试试这样说」那个白框里、跟快捷例句挤一行 —— 那框是"给你几个
   例句抄"的，把两个主操作放进去，读起来像是例句的一部分。 */
.chat-actions{display:flex;gap:10px;margin:0 0 12px}
.chat-actions .btn{flex:1;margin-top:0}.chat-composer{border:1.5px solid #a487eb;background:white;border-radius:12px;box-shadow:0 6px 20px #9980ba0b;overflow:hidden}.chat-composer textarea{width:100%;border:0;outline:0;resize:vertical;min-height:93px;padding:17px 20px;font-size:15px;line-height:1.8;color:#6b5f79;background:transparent}.chat-composer textarea::placeholder{color:#b6a9c3;font-size:13px}.chat-composer-toolbar{display:flex;align-items:center;justify-content:space-between;padding:10px 14px 12px;border-top:1px solid #f5f0fa;gap:12px}.chat-attachments{display:flex;gap:8px}.chat-attachments button{display:flex;align-items:center;gap:6px;font-size:12px;color:#a18ab8;padding:6px 9px;background:#f9f5fd;border-radius:5px}.chat-send-button{display:flex;align-items:center;gap:10px;background:#8c69dc;color:white;padding:9px 16px;border-radius:7px;font-size:13px}.chat-send-button:disabled{background:#d5c9e7;cursor:default}.chat-footer-hint{font-size:11px;color:#b7aac4;line-height:1.7;text-align:center;margin:10px 10px 0}.chat-proposal{min-width:350px;margin-top:15px}.chat-proposal-title{display:flex;align-items:center;gap:7px;font-size:13px;color:#927ba7;padding-bottom:10px}.chat-proposal-title>span{margin-left:auto;font-size:11px;color:#b3a0c7}.chat-proposed-field{display:flex;justify-content:space-between;gap:20px;padding:11px 0;border-top:1px solid #f2ecf8;font-size:13px}.chat-proposed-field>span{color:#a294b0;white-space:nowrap}.chat-proposed-field>div{text-align:right}.chat-proposed-field b{font-weight:500;color:#7c6a90}.chat-proposed-field del{display:block;font-size:11px;color:#bfb1cb;margin-bottom:5px}.chat-card-actions{display:flex;justify-content:flex-end;gap:9px;flex-wrap:wrap;margin-top:18px}.chat-strategy{margin-top:18px;min-width:420px}.chat-strategy-version{display:flex;gap:9px;flex-wrap:wrap;align-items:center;font-size:17px;font-weight:600;color:#756081;padding-bottom:13px;border-bottom:1px solid #eee5f5}.chat-strategy-version span{font-size:11px;font-weight:400;padding:4px 8px;border-radius:5px;background:#f4edfc;color:#9d7fbb}.chat-strategy-version em{font-size:11px;font-weight:400;font-style:normal;color:#b7a3c6;margin-left:auto}.chat-strategy-group{padding:17px 0;border-bottom:1px solid #f1eaf6}.chat-strategy-group h3{font-size:14px;color:#8e749e;margin:0 0 13px}.chat-strategy-group>div{display:grid;grid-template-columns:125px 1fr;gap:14px;font-size:13px;margin-top:9px;line-height:1.7}.chat-strategy-group>div span{color:#ae9abd}.chat-strategy-group b{font-weight:450;color:#857091}.strategy-unknown{font-size:11px;color:#baa6c6;line-height:1.9;margin:14px 0}.chat-result-card{display:flex;flex-direction:column;width:100%;text-align:left;margin-top:16px;border:1px solid #e9def2;border-radius:9px;padding:17px;background:#f8f3fc}.chat-result-head{display:flex;align-items:center;gap:13px;width:100%}.chat-result-head>span{min-width:0}.chat-report-icon{flex-shrink:0;width:41px;height:45px;display:grid;place-items:center;background:#eee1fa;border-radius:8px;color:#ad84d0}.chat-result-card b{display:block;font-size:14px;color:#90739f}.chat-result-card small{display:block;font-size:11px;color:#b29ac1;margin-top:7px}.chat-result-card strong{margin-left:auto;color:#a17aba;font-size:13px;font-weight:500;white-space:nowrap}.chat-result-names{display:flex;flex-wrap:wrap;gap:7px;width:100%;margin-top:15px;padding-top:14px;border-top:1px solid #ece0f7}.chat-result-name{font-size:12px;color:#7f6890;background:#fff;border:1px solid #ebdff6;border-radius:6px;padding:5px 9px;max-width:14em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-result-more{font-size:11px;color:#b29ac1;padding:5px 2px}.chat-source-alert{display:flex;align-items:center;gap:8px;padding:14px;background:#fff7e8;color:#b89f76;border-radius:8px;font-size:12px;line-height:1.6;margin:10px 0}.chat-source-alert button{margin-left:auto;color:#a68764;text-decoration:underline;white-space:nowrap}.chat-collected-list{display:grid;grid-template-columns:1fr 1fr;gap:0 22px}.chat-collected-list button{display:grid;grid-template-columns:110px 1fr;gap:8px;text-align:left;padding:13px 0;border-bottom:1px solid #f1eaf6}.chat-collected-list span{font-size:12px;color:#ac98b9}.chat-collected-list b{font-size:13px;line-height:1.7;font-weight:450;color:#8a729b;overflow-wrap:anywhere}.chat-collected-list small{grid-column:2;color:#baa1ca;font-size:10px}
@media(max-width:700px){.intake-mode-bar{margin-bottom:22px;gap:10px}.mode-eyebrow{font-size:10px}.mode-description{font-size:11px}.mode-flip-button{font-size:11px;padding:9px 10px;gap:5px}.flip-glyph{font-size:15px}.conversation-header>.pill{display:none}.conversation-header h1{font-size:19px}.conversation-header p{font-size:11px}.chat-stage-strip{padding:13px 10px;gap:5px}.chat-stage-strip>span{font-size:11px;gap:4px}.chat-stage-strip i{width:19px;height:19px;font-size:10px}.chat-shared-state{font-size:11px}.chat-shared-state small{display:none}.chat-shared-state button{font-size:10px}.conversation-log{max-height:60vh;padding-right:0}.chat-message{gap:7px}.chat-message-content{max-width:calc(100% - 36px)}.chat-avatar{width:25px;height:25px}.chat-bubble{padding:14px}.chat-bubble>p{font-size:14px}.chat-sync-card{margin:0 0 22px;padding:12px;font-size:11px}.chat-proposal,.chat-strategy{min-width:0}.chat-proposed-field{font-size:12px;gap:12px}.chat-strategy-group>div{grid-template-columns:95px 1fr;font-size:12px;gap:8px}.chat-strategy-version{font-size:15px}.chat-next-question{padding:15px}.chat-next-question h2{font-size:14px}.chat-quick-replies button{font-size:12px}.chat-attachments button{font-size:11px;padding:6px}.chat-result-card{padding:12px}.chat-result-card b{font-size:12px}.chat-result-card small{font-size:10px}.chat-result-names{margin-top:12px;padding-top:11px;gap:6px}.chat-result-name{font-size:11px;padding:4px 7px}.chat-collected-list{grid-template-columns:1fr}.chat-source-alert{flex-wrap:wrap}.chat-source-alert button{margin-left:22px}.chat-message-meta{font-size:10px}.chat-footer-hint{font-size:10px}.chat-composer textarea{font-size:14px}}
@media(prefers-reduced-motion:reduce){.intake-face.is-switching{animation:none}}
/* Recommendation list and selection cart */
.studio-main:has(.recommend-page) .content{max-width:none;padding:20px 24px 35px}.selection-overview{display:grid;grid-template-columns:1.25fr 1fr 1fr 145px;gap:10px}.selection-metric{background:#fff;border-radius:14px;padding:16px 18px;display:flex;align-items:center;gap:12px;min-width:0}.ai-selection-wordmark{display:flex;flex-direction:column;align-items:center;margin-right:8px;flex-shrink:0}.ai-selection-wordmark i{font-size:24px;font-weight:800;color:#7761ed;line-height:1.1}.ai-selection-wordmark b{font-size:12px;margin-top:3px}.metric-round{width:38px;height:38px;border-radius:50%;background:#f2edff;color:#9d83df;display:grid;place-items:center;flex-shrink:0}.selection-label{min-width:0}.selection-label b{display:block;font-size:14px;font-weight:550}.selection-label small{display:block;font-size:11px;color:#a29bad;margin-top:6px}.selection-metric>strong{margin-left:auto;white-space:nowrap;font-size:24px;font-weight:550;color:#51465d;letter-spacing:-.5px}.selection-metric>strong small{font-size:12px;font-weight:400;letter-spacing:0}.cart-entry{border-radius:14px;flex-wrap:wrap;line-height:1.5}.cart-entry span{padding:2px 6px;background:#ffffff22;border-radius:5px;font-size:12px}.cart-footnote{font-size:11px;color:#b3aabb;margin:11px 8px 23px;line-height:1.7}.cart-footnote b{font-weight:500;color:#b99264}.recommend-tools{display:flex;justify-content:space-between;gap:15px;align-items:center;flex-wrap:wrap;margin-bottom:15px}.strategy-tools{display:flex;align-items:center;gap:15px}.strategy-chip{font-size:12px;color:#a586df;border:1px solid #b9a1e6;border-radius:5px;padding:8px 12px;background:#f5f0fe}.strategy-chip small{font-size:10px;color:#b9a5cc;margin-left:8px}.rec-platforms{display:flex;gap:4px}.rec-platforms button{padding:6px 10px;font-size:12px;color:#a194af;border-radius:5px}.rec-platforms .active{background:#eee6fa;color:#9571c5}.recommend-tabs{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.recommend-tabs button{padding:8px 12px;border:1px solid #dfd6eb;background:white;border-radius:18px;font-size:12px;color:#a093af}.recommend-tabs button.active{background:#8865de;color:#fff;border-color:#8865de}.recommend-tabs .plain{background:none;border:0;padding-right:0;display:flex;align-items:center;gap:6px}.rec-filter-row{display:flex;gap:11px;align-items:center;margin-bottom:18px;flex-wrap:wrap}.rec-search{display:flex;align-items:center;gap:8px;background:#fff;border:1px solid #ebe4f1;border-radius:6px;padding:8px 12px;color:#c1b6cd}.rec-search input{background:none;border:0;outline:0;width:200px;font-size:12px;color:#8c7e9a}.rec-search input::placeholder{color:#bdb0ca}.rec-filter-row>.input{width:auto;max-width:175px;font-size:12px;padding:8px 10px;border-color:#e8e0f0;color:#a28ab2}.rec-scope{margin-left:auto;font-size:11px;color:#b8aac4}.similar-tag{display:flex;gap:8px;align-items:center;font-size:11px;color:#a17dbc;background:#f4eafb;border-radius:5px;padding:6px 9px}.similar-tag button{font-size:17px}.rec-constraints{font-size:12px;color:#af94c1;margin:0 0 16px}.rec-constraints summary{cursor:pointer;padding:5px}.rec-constraints .match-context{margin-top:10px}.recommend-table-surface{background:white;border:1px solid #f0e9f6;border-radius:5px;overflow:hidden}.recommend-table-scroll{overflow-x:auto;max-width:100%}.recommend-table{table-layout:auto;border-collapse:separate;border-spacing:0;min-width:1050px}.recommend-table th{background:white;border-top:0;color:#b6a7c5;font-size:12px;padding:21px 15px;font-weight:400;white-space:nowrap}.recommend-table th button{text-align:left;position:relative;font-size:12px;color:inherit;padding-right:17px}.recommend-table th small{display:block;font-size:11px;margin-top:5px;line-height:1.6}.sort-indicator{position:absolute;right:0;top:1px;color:#d5c8df;font-size:13px}.sort-indicator.selected{color:#b391d3}.recommend-table .creator-column{min-width:215px}.recommend-table .notes-column{min-width:112px}.recommend-table .data-column{text-align:center;min-width:92px}.recommend-table .score-column{width:150px}.recommend-table td{border-bottom:0;padding:17px 15px;color:#7f6c90;font-size:13px;vertical-align:middle}.recommend-table .pick-column{width:44px;min-width:44px;text-align:center;padding-left:14px;padding-right:4px}.recommend-table .pick-column input{width:15px;height:15px;accent-color:#9670de;cursor:pointer;vertical-align:middle}.creator-profile-button{display:flex;align-items:center;gap:12px;text-align:left;padding:0}.rec-avatar{width:55px;height:55px;border-radius:50%;display:grid;place-items:center;font-size:20px;color:#806b8d;flex-shrink:0}.rec-creator-info>b{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:550;color:#625269}.recommend-thumb{background:#fff0e3;color:#e8b580;border-radius:3px;width:15px;height:15px;display:grid;place-items:center}.creator-tags{display:flex;gap:4px;align-items:center;margin-top:8px;flex-wrap:wrap}.creator-tags span{font-size:10px;background:#f1ecf8;color:#aa96b9;padding:2px 5px;border-radius:3px}.creator-tags .platform-xhs{background:#fceef4;color:#d59aa9}.creator-tags .platform-dy{background:#efedf6;color:#aaa0c0}.creator-tags .linked-label{background:#edf7ef;color:#8aba9c}.rec-creator-info>small{display:block;font-size:11px;color:#b5a5c1;margin-top:7px}.rec-creator-info>small em{font-size:10px;font-style:normal;color:#bfaec9}.recent-note-cards{display:flex;gap:8px}.note-preview{width:76px;height:99px;border:1px solid #eee6f3;border-radius:10px;padding:8px 7px;display:flex;flex-direction:column;text-align:left;white-space:normal;justify-content:space-between;background:#f8f3fb;color:#8f789c}.note-preview>span{font-size:8px;display:flex;justify-content:space-between;color:#b1a0bd}.note-preview em{font-style:normal;font-size:7px}.note-preview b{font-size:11px;line-height:1.55;font-weight:600}.note-preview small{font-size:7px;color:#b0a0ba}.note-theme-1{background:#f5f4e9;color:#968b73;border-color:#eeeade}.note-theme-2{background:#f7eced;color:#a2878e;border-color:#f0e3e5}.note-theme-3{background:#edf2f8;color:#8097b0;border-color:#e4ecf5}.note-preview:hover{border-color:#bda1d1;transform:translateY(-2px)}.quoted-price{font-size:13px;color:#786484;white-space:nowrap}.quoted-price i{font-size:16px;font-style:normal;color:#e6b194;margin-left:5px}.missing-data{font-size:11px;color:#c4b4ce}.rec-score{font-size:17px}.row-operation-buttons{display:flex;flex-direction:column;gap:7px;align-items:stretch;padding:0 1px}.row-btn{font-size:11px;border:1px solid #dcd0eb;border-radius:20px;padding:6px 8px;color:#a58bb8;background:white;white-space:nowrap;line-height:1.2}.row-btn.cart-add{background:#9670de;color:white;border-color:#9670de}.row-btn.preselected{background:#f5edfc;border-color:#bda2d4;color:#9b76b6}.recommend-table .recommend-reason-row>td{padding:0 19px 19px;border-bottom:1px solid #eee7f5;white-space:normal}.recommend-reason{display:flex;gap:10px;align-items:flex-start;padding:9px 14px;background:#f5f0fc;border-radius:18px;color:#a991bb;font-size:11px;line-height:1.8}.recommend-reason-badge{display:flex;align-items:center;gap:4px;white-space:nowrap;color:#d5a283;font-size:11px;font-weight:550}.recommend-reason-badge small{font-size:8px;color:#bcabcb;font-weight:400}.recommend-reason p{font-size:11px;line-height:1.8;margin:0;color:#ac98bb}.recommend-reason p b{font-weight:500;color:#a38baf}.recommend-table-footer{padding:14px 20px;display:flex;justify-content:space-between;align-items:center;font-size:11px;color:#baa9c7;gap:15px}.wide-rec-dialog{width:min(1000px,94vw);max-height:90vh;overflow:auto}.profile-price-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:20px;font-size:12px;color:#a38db3}.profile-price-grid b{display:block;margin-top:8px;font-size:16px;font-weight:500;color:#8e74a3}.note-reading h2{font-size:22px;line-height:1.5;margin:22px 0 15px;color:#8b709b}.note-reading p{font-size:14px;color:#aa93bb;line-height:1.9}.similar-candidate{display:flex;align-items:center;gap:18px;border-bottom:1px solid #f0e8f6;padding:17px 0}.similar-candidate .creator{flex:1}.similar-candidate-score{text-align:right}.similar-candidate-score b{font-size:20px;color:#a27ac0}.similar-candidate-score small{display:block;font-size:10px;color:#bba4ca;margin-top:5px}.metric-options{display:grid;grid-template-columns:1fr 1fr;gap:15px;margin:22px 0}.metric-options label{display:flex;align-items:center;gap:8px;font-size:13px;color:#a088b4}.metric-options input{accent-color:#9873c3}.metric-explanations h3{font-size:14px;color:#9b7cad;margin:22px 0 8px}.metric-explanations p{font-size:13px;color:#b49bc4;line-height:1.9}.strategy-detail>div{display:grid;grid-template-columns:130px 1fr auto;gap:15px;padding:12px 0;border-bottom:1px solid #f0e7f5;font-size:12px;color:#b29ac2}.strategy-detail b{font-weight:400;color:#9375a6;line-height:1.7}.strategy-detail small{font-size:10px;color:#c5aed3}.cart-table-scroll{overflow:auto}.cart-table{min-width:670px}.cart-table th{background:#fbf8fe;color:#b8a2c8}.cart-table td{font-size:13px;color:#a389b7}.cart-table .input{font-size:12px;padding:7px;border-color:#e9dff1}.cart-confirmed{display:block;font-size:10px;color:#a3b796;margin-top:4px}.cart-summary-line{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:20px;background:#f8f1fd;margin-top:20px;border-radius:9px;color:#aa8bbd;font-size:13px}.cart-summary-line b{font-size:23px;font-weight:500;margin-left:10px;color:#9f7ab4}.cart-summary-line small{font-size:11px;color:#bda3ce;line-height:1.7}
@media(max-width:1400px){.selection-overview{grid-template-columns:1fr 1fr 1fr 125px}.selection-metric{padding:16px 13px;gap:9px}.selection-label small{font-size:10px}.selection-metric>strong{font-size:21px}.ai-selection-wordmark{display:none}.metric-round{width:31px;height:31px}.recommend-tabs{gap:5px}.recommend-tabs button{font-size:11px;padding:7px 10px}.rec-scope{display:none}}
@media(max-width:1000px){.selection-overview{grid-template-columns:1fr 1fr 1fr}.cart-entry{grid-column:1/-1;padding:11px;border-radius:8px;justify-self:end}.selection-metric{padding:15px 11px}.metric-round{display:none}.selection-metric>strong{font-size:20px}.selection-label b{font-size:12px}.selection-label small{font-size:9px}.cart-footnote{margin-top:4px}.recommend-tools{align-items:flex-start}.recommend-reason{border-radius:9px}.recommend-tabs{gap:6px}.cart-summary-line{display:block}.cart-summary-line small{display:block;margin-top:9px}}
@media(max-width:600px){.studio-main:has(.recommend-page) .content{padding:15px 12px 25px}.selection-overview{gap:6px}.selection-metric{display:block;padding:13px 10px;border-radius:9px}.selection-metric>strong{display:block;margin-top:12px;font-size:19px}.selection-label b{font-size:11px}.selection-label small{font-size:9px;line-height:1.6}.cart-entry{font-size:12px}.cart-footnote{font-size:10px}.strategy-tools{gap:7px;flex-wrap:wrap}.strategy-chip{font-size:11px}.strategy-chip small{font-size:9px}.rec-platforms button{font-size:11px;padding:6px 8px}.recommend-tabs .plain{font-size:10px}.rec-filter-row{gap:7px}.rec-search{width:100%}.rec-search input{width:100%}.rec-filter-row>.input{max-width:calc(50% - 5px);font-size:11px}.recommend-table .pick-column{width:38px;min-width:38px;padding-left:9px;padding-right:2px}.recommend-table-footer{font-size:10px;align-items:flex-start;padding:12px}.recommend-table-footer .btn{font-size:10px}.similar-candidate{gap:10px;flex-wrap:wrap}.similar-candidate .creator{min-width:65%}.similar-candidate .btn{margin-left:auto}.metric-options{grid-template-columns:1fr}.cart-summary-line b{font-size:21px}.profile-price-grid{font-size:11px}.profile-price-grid b{font-size:14px}.strategy-detail>div{grid-template-columns:95px 1fr}.strategy-detail small{grid-column:2}}


/* ══════════════════════════════════════════════════════════════════════════
   引力工作台（新前端）补充样式
   ──────────────────────────────────────────────────────────────────────────
   这一节以上，整份 style.css 是从原型逐字节拷过来的，**一个字没改**。
   下面这些是新前端才有的 class 的样式 —— 原型里没有的三类东西：

     1. 推荐 / 洞察两页的容器与卡片。原型那两页是写死假数据的（`creators`
        是 8 条编的），页面结构基本没留，所以没有可抄的。
     2. 「这一列没有数据源」的弱化字（`.no-source`）。原型的表每一列都有
        假数据，不存在"空得有原因"这件事。
     3. 判定 / 在库状态的小标签（`.rec-level`）。原型写的是 `.pill.ok` 之类，
        但上面那份 CSS 里**根本没有这些选择器**（grep 实测为空）——
        Streamlit 版的 `_verdict_pill()` 走的是另一套主题层，不是这份文件。

   为什么追加在末尾、不改上面的规则：上面是原型的资产。哪天要跟原型对差异，
   只读这一节就够了；混着改进去，就再也对不回去了。

   配色一律取自 `:root` 里的令牌，语义色沿用已有的 `.summary-flag` 那一套
   （ok #f3f7ec/#5f7541、warn #fff7e9/#aa8c53），新增的只有 bad 一档。
   ══════════════════════════════════════════════════════════════════════════ */

/* ── 状态小标签：判定（推荐/不推荐）、本机有无数据、等级 ── */
.rec-level{display:inline-flex;align-items:center;font-size:12px;padding:3px 8px;
  border-radius:5px;background:#f1f3f6;color:#717887;white-space:nowrap}
.rec-level.ok{background:#f3f7ec;color:#5f7541}
.rec-level.warn{background:#fff7e9;color:#aa8c53}
.rec-level.bad{background:#fdf0ef;color:#b4544a}
/* 挂在达人昵称后面的那一个是小一号的，别把名字顶掉 */
.rec-creator-info .rec-level{font-size:10px;padding:1px 5px;margin-left:6px;
  vertical-align:1px;font-weight:500}

/* ── 「这一列没有数据源」──────────────────────────────────────────────────
   写「暂无数据」而不是留空，也不是写 0 —— 空格子看着像渲染坏了，写 0 是撒谎。
   `cursor:help` 是因为每一处都带 `title` 说明为什么空，鼠标停上去就读得到。 */
.no-source{cursor:help;color:#a9afba;font-size:12px;font-style:normal}

/* ── 表格单元格里的证据 / 理由 ── */
.cell-tags{display:flex;flex-wrap:wrap;gap:5px}
.cell-tags span{background:#f1f3f6;color:#6c7381;border-radius:4px;
  padding:2px 7px;font-size:11px;white-space:nowrap}
.cell-reason{display:block;font-size:12px;color:#79808d;line-height:1.75;max-width:420px}

/* 可排序表头上的按钮：全局 `button{border:0;background:none;color:inherit}` 已经
   把外观清干净了，这里只补回它需要的排列方式。 */
.recommend-table th button{display:inline-flex;align-items:center;gap:5px;
  font:inherit;color:inherit}
.recommend-table th small{font-weight:400;font-size:11px;color:#a2a9b5}

/* 主榜的两行式：一个达人占两行 —— 第一行是 `creator-data-row`（达人 + 数据），
   紧跟的第二行 `recommend-reason-row` 是四维证据。这两行是**一个人**，
   所以分隔线由第二行那条规则出（原型 CSS 里就有，见本文件上半部分），
   第一行自己不再画下边框。`.recommend-table td` 本来就是 `border-bottom:0`，
   这条是把它钉住：哪天有人给 `td` 加回边框，主榜每一组中间会多出一条线，
   看着就成两个人了。 */
.recommend-table .creator-data-row>td{border-bottom:0}

/* ── 推荐页顶部的运行控制条 ── */
.run-bar{display:flex;align-items:center;justify-content:space-between;gap:16px;
  flex-wrap:wrap;background:#fff;border:1px solid var(--line);border-radius:10px;
  padding:13px 16px;margin-bottom:16px}
.run-bar-left,.run-bar-right{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.run-bar .input{padding:6px 9px;font-size:13px;width:auto}
.run-k,.run-history{display:flex;align-items:center;gap:6px;font-size:12px;color:#727a87}
.run-k .input{width:70px}
.run-history .input{max-width:270px}

/* ── 「先去确认选号标准」那张挡路的卡 ──────────────────────────────────────
   没确认需求时推荐页给的是这张卡，不是一个灰按钮 —— 灰按钮会让人以为坏了。 */
.gate-card{background:#fff;border:1px solid var(--line);border-radius:12px;
  padding:44px 32px;max-width:620px;margin:48px auto;text-align:center}
.gate-icon{width:52px;height:52px;border-radius:14px;background:#f3f7ec;color:#7f9a4b;
  display:grid;place-items:center;margin:0 auto 18px}
.gate-card h2{margin:0 0 12px;font-size:19px}
.gate-card p{margin:0 0 10px;font-size:13px;color:#7d8592;line-height:1.9}
.gate-card .actions{display:flex;gap:10px;justify-content:center;margin-top:22px}

/* ── 「这次真正生效的硬筛」折叠块 ── */
.rec-constraints{background:#fff;border:1px solid var(--line);border-radius:10px;
  margin-bottom:14px}
.rec-constraints>summary{cursor:pointer;padding:12px 16px;font-size:13px;
  color:#5d6470;list-style:none}
.rec-constraints>summary::-webkit-details-marker{display:none}
.rec-constraints>summary::before{content:"\25B8";display:inline-block;margin-right:9px;
  color:#a8aeb9;transition:transform .15s}
.rec-constraints[open]>summary::before{transform:rotate(90deg)}
.rec-constraints .match-context{border-top:1px solid var(--line);padding:14px 16px}
.rec-constraints .match-context p{margin:0 0 8px;font-size:12px;line-height:1.9;
  color:#6f7683}
.rec-constraints .match-context p:last-child{margin-bottom:0}

/* 表格下面那句说明这一档是什么的话 */
.run-kind-note{margin:14px 0 0;font-size:12px;color:#8a929e;line-height:1.9;
  background:#fff;border:1px solid var(--line);border-radius:8px;padding:12px 14px}

/* 「以人找人」那一档顶部那句覆盖说明（后端 `coverage_note` 给的话）。
   放在表格**上面**、样式比 `.run-kind-note` 重一点：它讲的是"这一档里有多少格
   是「暂无数据」，以及那不算出错"—— 先看见它，再看见那一列「暂无数据」，
   顺序反了的话人会先以为系统坏了。 */
.rec-people-note{margin:0 0 14px;display:flex;gap:9px;align-items:flex-start;
  font-size:12px;color:#7a6350;line-height:1.9;background:#fdf7ef;
  border:1px solid #f2e3d0;border-radius:8px;padding:12px 14px}
.rec-people-note svg{flex-shrink:0;margin-top:3px;color:#c8a37a}
.rec-people-note span{min-width:0}

/* ── 需求工作台：槽位旁边那行后果提示 ──────────────────────────────────────
   `brief.js` 一直在用 `.hint.slot-warn` / `.hint.ok.slot-warn`，但这两条规则
   原型的 CSS 里没有 —— 没样式时它会和输入框挤在一起分不出层级。
   空着的时候直接不占位：24 个槽位每个都留一行空白，网格会被撑成两倍高。 */
.slot-warn:empty{display:none}
.hint.ok{background:#f3f7ec;color:#7f9a4b}

/* ══ 行业洞察 ══
   这一页的容器不叫 `.recommend-page`，所以要自己声明"内容区放开宽度" ——
   上面 `.studio-main:has(.recommend-page)` 那条管不到它。 */
.studio-main:has(.ins-page) .content{max-width:none;padding:20px 24px 35px}
@media(max-width:600px){.studio-main:has(.ins-page) .content{padding:15px 12px 25px}}

.ins-page{display:flex;flex-direction:column;gap:16px}
.ins-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;
  background:#fff;border:1px solid var(--line);border-radius:12px;padding:22px 24px}
.ins-head h1{margin:0 0 10px;font-size:20px}
.ins-head p{margin:0;font-size:13px;color:#7d8592;line-height:1.95;max-width:780px}

.ins-grid{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(340px,1fr))}
.ins-card{background:#fff;border:1px solid var(--line);border-radius:12px;
  padding:20px 22px;display:flex;flex-direction:column;min-width:0}
.ins-card>header{margin-bottom:16px}
.ins-card h2{margin:0;font-size:15px}
.ins-card header small{display:block;margin-top:5px;font-size:12px;color:#959caa}
/* 「四档构成」和「条件生不生效」两栏信息量大，占满整行 */
.ins-card:has(.ins-kinds),.ins-card:has(.ins-filters){grid-column:1/-1}

.ins-kinds{display:flex;gap:12px;flex-wrap:wrap}
.ins-kind{flex:1 1 130px;background:#f7f8fa;border-radius:9px;padding:14px 16px;
  text-align:left;display:flex;flex-direction:column;gap:5px;transition:background .15s}
.ins-kind:hover{background:#eef1f5}
.ins-kind b{font-size:23px;font-weight:650;font-variant-numeric:tabular-nums}
.ins-kind span{font-size:12px;color:#828a97}

/* 横向条：条长按最大计数定标，数字一律标出来 ——
   只有条没有数，读者就得拿眼睛量长度。 */
.ins-bars{display:flex;flex-direction:column;gap:9px}
.ins-bar-row{display:grid;grid-template-columns:minmax(72px,132px) minmax(0,1fr) auto;
  align-items:center;gap:12px}
.ins-bar-label{font-size:12px;color:#6f7683;overflow:hidden;text-overflow:ellipsis;
  white-space:nowrap}
.ins-bar-track{background:#f1f3f6;border-radius:5px;height:9px;overflow:hidden;display:block}
.ins-bar-track i{display:block;height:100%;background:#a8c46a;border-radius:5px}
.ins-bar-value{font-size:12px;color:#4d5462;font-variant-numeric:tabular-nums;
  min-width:36px;text-align:right}

.ins-none{font-size:12px;color:#98a0ad;line-height:1.9;margin:0}

.ins-table-scroll{overflow-x:auto}
.ins-table{width:100%;border-collapse:collapse;font-size:13px}
.ins-table th{text-align:left;font-size:11px;font-weight:500;color:#98a0ad;
  padding:0 12px 9px 0;border-bottom:1px solid var(--line);white-space:nowrap}
.ins-table td{padding:11px 12px 11px 0;border-bottom:1px solid #f2f4f7;color:#5d6470;
  font-variant-numeric:tabular-nums}
.ins-table tr:last-child td{border-bottom:0}

.ins-filters{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:22px}
.ins-filters h3{margin:0 0 12px;font-size:13px;font-weight:600;color:#4d5462}
.ins-filters h3 b{color:#7f9a4b;font-size:15px}
.ins-filters ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:9px}
.ins-filters li{background:#f7f8fa;border-radius:7px;padding:10px 13px;font-size:12px;
  line-height:1.75;color:#6f7683;display:flex;flex-direction:column;gap:4px}
.ins-filters code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;
  color:#7f9a4b;background:#f3f7ec;border-radius:4px;padding:1px 6px;align-self:flex-start}
.ins-filters li small{color:#959caa}

/* ── 对话页底部的两颗按钮（齐备度 + 确认选号标准）──────────────────────────
   原来那颗「确认选号标准」是自己一个居中 div。加齐备度之后两颗并排，
   所以把「居中」这件事交给这一层 —— 各自再定位就会互相推。 */
.chat-actions-row{display:flex;justify-content:center;align-items:center;
  gap:12px;flex-wrap:wrap;margin-top:16px}

/* ── 七维齐备度弹窗 ────────────────────────────────────────────────────────
   一行一个维度：左边一个点（有数据 / 还没），中间维度名，右边那句提示。 */
.readiness-list{display:flex;flex-direction:column;gap:0;margin:14px 0 18px}
.readiness-row{display:flex;align-items:center;gap:10px;padding:11px 2px;
  border-bottom:1px solid #f1eaf6;font-size:13px}
.readiness-row:last-child{border-bottom:0}
.readiness-row b{color:#8a729b;font-weight:450;white-space:nowrap}
.readiness-row em{font-style:normal;margin-left:auto;font-size:12px;
  color:#bcaec6;text-align:right}
/* 有数据的那一行才点亮。空行的小圆点是灰的 —— 靠颜色区分，
   不靠"有没有这个元素"，否则读屏和色弱用户拿到的信息不一样。 */
.readiness-dot{width:9px;height:9px;border-radius:50%;flex-shrink:0;
  background:#e6dfef;box-shadow:inset 0 0 0 1px #d8cfe3}
.readiness-row.on .readiness-dot{background:#8c69dc;box-shadow:none}
.readiness-row.on em{color:#9d8ab0}
/* 「仅记录」这一档：这一维不进达标判定，得在界面上说出来，
   否则用户会以为它也算数、为它去凑一个下游根本不读的字段。 */
.readiness-tag{font-size:10px;padding:2px 7px;border-radius:9px;
  background:#f4edfc;color:#a98cc4;white-space:nowrap}

/* 对话页：滚轮滚的是**整页**，输入框粘在视口底部。
   上一版把它做成"整页正好一屏、只有日志自己滚"，结果整页只剩 11px 可滚，
   滚轮就"滚不动"了。现在对话跟页面一起长，输入框 sticky 钉在下面。
   输入框是 .conversation-workspace 里最后一个元素（DOM 顺序见 conversation.js），
   浮起来时盖住的是对话，不会盖住「齐备度 / 确认选号标准」那排按钮。 */
.conversation-log{max-height:none;min-height:0;overflow:visible}
.chat-composer{position:sticky;bottom:0;z-index:8}

/* 以人找人：参考达人卡片里的相似达人名单。
   `.similar-candidate` 原本是给推荐页那个弹窗用的（行高、间距都是弹窗尺度），
   塞进需求工作台的右栏会显得又高又散 —— 这里在卡片范围内收一档。 */
.reference-similar-title{font-size:12px;color:#8c95a3;margin:2px 0 4px}
.reference-card .similar-candidate{gap:12px;padding:11px 0}
.reference-card .similar-candidate .creator{gap:0}
.reference-card .similar-candidate:last-child{border-bottom:0;padding-bottom:0}
.reference-card .rec-creator-info>b{font-size:13px;display:block}
.reference-card .rec-creator-info>small{font-size:11px;overflow-wrap:anywhere}
.reference-card .creator-tags{margin-top:5px}

/* 「开始查找」在请求期间会 disabled（一次点击 = 一次计费，不能点两下）。
   浏览器默认不给按钮加禁用态样式，不写这条就等于"点了没反应但看着还能点"。 */
.btn[disabled]{opacity:.55;cursor:not-allowed}

/* ── 对话页「已记下」清单 ─────────────────────────────────────────────
   从后端真的写进去的 `applied` 渲染，不是模型说出来的话。
   变量 `--line` / `--muted` / `--lime` 都已在 `:root` 定义（studio 主题里
   另有一份覆写），**别新造变量名** —— 引用一个不存在的变量会让整条声明静默
   失效，界面上表现为"那条虚线/灰字没了"，而测试全绿。 */
.chat-applied{margin-top:10px;padding-top:9px;border-top:1px dashed var(--line)}
.chat-applied-head{font-size:12px;letter-spacing:.08em;text-transform:uppercase;
  color:var(--muted);margin-bottom:6px}
.chat-applied-row{display:flex;gap:8px;align-items:baseline;font-size:13px;
  line-height:1.7}
.chat-applied-tick{color:var(--lime,#7ac74f);font-weight:700}
.chat-applied-row b{font-weight:600}
.chat-applied-row em{font-style:normal;color:var(--muted);
  overflow-wrap:anywhere}

/* ── 对话页「这几句我没地方放」卡 ────────────────────────────────────
   模型读懂了、但七维字段清单里没有对应路径的那些话（后端 `unplaced`）。
   **必须画**：不画的话用户以为"我说过了"，而那条要求从未进过需求。
   与「已记下」同族，但刻意**不**用 `--lime` —— 这不是一件成了的事。
   标题那行的琥珀色是**字面量**，不是 token：`--warn` 在两个 `:root` 块里
   **都不存在**，写 `var(--warn)` 会让整条 `color` 声明静默失效（就是下面
   那段注释警告的坑）。要把它升成 token 的话得同时改两个 `:root`。 */
.chat-unplaced{margin-top:10px;padding-top:9px;border-top:1px dashed var(--line)}
.chat-unplaced-head{font-size:12px;letter-spacing:.08em;text-transform:uppercase;
  color:#c9822f;margin-bottom:6px}
.chat-unplaced-note{font-size:12px;color:var(--muted);margin-bottom:6px;
  overflow-wrap:anywhere}
.chat-unplaced-note b{font-weight:600}
.chat-unplaced-row{font-size:13px;line-height:1.7;overflow-wrap:anywhere}

/* ── 对话页「要改吗」覆盖确认卡 ───────────────────────────────────────
   只在**这一轮读出的值与库里已有的值不一样**时出现（后端 `conflicts`，
   那种情况后端**不写库**、停下来等用户点头）。与上面那张「已记下」同族：
   一张说"记下了"，一张说"要改吗"，会同时出现在一条消息里。
   变量 `--line` / `--muted` / `--accent` 都已在两个 `:root` 块里定义
   （studio 主题另有一份覆写），**别新造变量名** —— 引用一个不存在的变量会让
   整条声明静默失效，界面上看着像"样式没写"，而测试全绿。 */
.chat-conflict{margin-top:10px;padding-top:9px;border-top:1px dashed var(--line)}
.chat-conflict-row{display:flex;gap:10px;align-items:center;
  justify-content:space-between;flex-wrap:wrap;font-size:13px;line-height:1.7;
  margin-bottom:6px}
.chat-conflict-text{min-width:0;overflow-wrap:anywhere}
.chat-conflict-text b{font-weight:600}
/* `del` / `ins` 显式给色：浏览器默认的删除线/下划线色在深底上未必看得清。 */
.chat-conflict-text del{color:var(--muted,#848b98)}
.chat-conflict-text ins{color:var(--accent,#697d36);font-weight:600}
.chat-conflict-actions{display:flex;gap:8px;flex:0 0 auto}

/* ── 详情弹窗的「推荐理由」要**真的换行** ─────────────────────────────
   后端（`rag/reason.py` 的 SYS_PROMPT）刻意把理由排成六行：达人现状一行、
   `理由：` 一行、四个维度各一行，这样品牌方可以逐维度扫。
   但 `openDialog` 把这段理由塞进一个**裸 `<p>`**（`recommendations.js:1213`），
   标签里只有内联样式、没有 class；而 `esc()` 只转义 `& < > " '`、
   **不碰 `\n`** —— 于是那五个换行符原样进了 HTML 文本节点，
   再被默认的 `white-space:normal` 折成空格，六行糊成一整段。
   也就是说：**没有这条规则，后端分得越细，页面上看着越糊。**

   为什么用 `pre-line` 而不是 `pre-wrap`：只要保留 `\n`，
   不想要 `pre-wrap` 那套"空格也照留"（模板字符串里的缩进会被原样画出来）。

   为什么选择器长这样：那段 `<p>` 没有 class，`[style*=...]` 又会误伤
   `recommendations.js:1256`（导出弹窗的说明段落，恰好是同一串内联样式，
   且**源码里带缩进换行** —— 给它 `pre-line` 会把那段话拆得七零八落）。
   能同时避开这两个坑的判据只有"它是 `.sub` 段落的**紧邻下一个兄弟**"：
   详情弹窗里 `<p class="sub"><b>推荐理由</b></p>` 后面紧跟着它，
   而导出弹窗那两段 `.sub` 后面跟的是 `<label>`。
   对话页那个 wide 弹窗也会命中（`conversation.js:1183`），但那句话里
   没有换行符，`pre-line` 对它是个空操作。

   ⚠️ 若哪天给那段 `<p>` 加了 class、或改了 `openDialog` 的结构，
      这条规则会**静默失效**（页面退回糊成一整段，而测试全绿）——
      届时把选择器换成语义化的那个 class。 */
.wide-rec-dialog .dialog-body p.sub + p{white-space:pre-line}

/* ── 「正在说…」的现场泡泡（`conversation.js` 的 `_streamBubbleHtml`）─────────

   它是 SSE 流打到一半时那半句还没落库的回复。外观**故意和真消息一样**
   （同一个 `.chat-message` / `.chat-bubble`），只靠底下这行小字自报身份 ——
   那行字是它唯一的"我不是一条已存下的消息"的标记，删了它就会有人把
   半句话当成一轮完整回复。 */
.chat-typing{color:#a99fb5;font-style:italic}
.chat-streaming-note{display:block;margin-top:9px;font-size:11px;color:#b3a9be}
/* 说到一半断了（流断 / 收尾失败）。用告警那支的暖色，和 `.chat-source-alert`
   是同一种"这里出过事"的信号。 */
.chat-streaming-note.broke{color:#b89f76}

/* ── 过程条（`conversation.js` 的 `_traceHtml`）────────────────────────────

   挂在流式气泡**正文之前**：先看它正在想什么/查什么，再看它说的话。

   ⚠️ **视觉上必须明显弱于正文**。它是过程，不是结论 —— 一旦长得和回复一样重，
      用户就会把"我正在考虑要不要写成 2 万"当成已经定下来的条件来读。
      所以：小一号字、灰、带一条左边线往里缩，与正文之间还有一道虚线分隔。
   思考默认折叠，工具行常显（工具行本身就是一两行字，藏起来反而没意义）。 */
.chat-trace{margin:0 0 10px;padding:0 0 9px;border-bottom:1px dashed var(--line);
  font-size:12px;line-height:1.55}
.chat-trace-row{display:flex;gap:7px;align-items:baseline;color:#b3a9be}
.chat-trace-row + .chat-trace-row{margin-top:3px}
.chat-trace-ico{flex:0 0 auto;color:#c3b9cd;position:relative;top:2px}
.chat-trace-row.bad{color:#b89f76}
.chat-trace-row.bad .chat-trace-ico{color:#b89f76}
.chat-trace-text{min-width:0}
/* 展开开关做成按钮（键盘可达），但长得像一行小字，不像按钮 —— 它是个
   显示偏好，不是这一页的主操作。 */
.chat-trace-toggle{font:inherit;color:inherit;background:none;border:0;padding:0;
  cursor:pointer;text-align:left;text-decoration:underline dotted;text-underline-offset:3px}
.chat-trace-toggle:hover{color:#8f839c}
/* 展开出来的思考原文。**左线 + 更淡**：一眼看上去就是"引文/旁注"，
   不会被当成正文读。 */
.chat-trace-think{margin:5px 0 2px 20px;padding-left:9px;border-left:2px solid var(--line);
  color:#a99fb5;font-size:12px;white-space:pre-wrap;word-break:break-word}
