#sourcing-full{
    --bg:#f3f6fc; --bg-2:#eaf0fa; --panel:#ffffff; --panel-2:#f6f9fe;
    --line:#e3e9f4; --line-2:#d3dcef;
    --txt:#0f1b33; --txt-2:#4f5d7c; --txt-3:#8a97b2;
    --cyan:#0891b2; --blue:#2563eb; --violet:#7c3aed;
    --green:#059669; --amber:#d97706; --rose:#e11d48;
    --grad-1:linear-gradient(135deg,#22d3ee,#3b82f6);
    --grad-2:linear-gradient(135deg,#3b82f6,#8b5cf6);
    --r-lg:18px; --r-md:12px; --r-sm:9px;
    --shadow:0 18px 46px -20px rgba(30,58,110,.28);
    --font:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;
  }
#sourcing-full *{box-sizing:border-box;margin:0;padding:0}
#sourcing-full button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}
#sourcing-full ::-webkit-scrollbar{width:8px;height:8px}
#sourcing-full ::-webkit-scrollbar-thumb{background:#c9d4e8;border-radius:8px}
#sourcing-full ::-webkit-scrollbar-track{background:transparent}
#sourcing-full /* ============ 启动屏 ============ */
  #entry{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
    padding:24px;z-index:30;transition:opacity .45s ease,transform .45s ease}
#sourcing-full #entry.hide{opacity:0;transform:scale(1.02);pointer-events:none}
#sourcing-full .entry-card{width:min(640px,100%);text-align:center;padding:52px 40px 44px;
    background:linear-gradient(180deg,#ffffff,#f6faff);
    border:1px solid var(--line-2);border-radius:26px;box-shadow:var(--shadow);}
#sourcing-full .entry-logo{width:72px;height:72px;margin:0 auto 22px;border-radius:20px;
    background:var(--grad-1);display:flex;align-items:center;justify-content:center;
    font-size:38px;box-shadow:0 14px 34px -12px rgba(34,211,238,.6)}
#sourcing-full .entry-card h1{font-size:28px;letter-spacing:.5px;margin-bottom:10px;color:var(--txt)}
#sourcing-full .entry-card h1 span{background:var(--grad-1);-webkit-background-clip:text;background-clip:text;color:transparent}
#sourcing-full .entry-card p{color:var(--txt-2);font-size:15px;line-height:1.7;margin-bottom:30px}
#sourcing-full .entry-steps{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-bottom:34px}
#sourcing-full .entry-steps .chip{display:flex;align-items:center;gap:7px;padding:8px 14px;border-radius:999px;
    background:rgba(8,145,178,.07);border:1px solid rgba(8,145,178,.24);
    color:var(--cyan);font-size:13px;font-weight:500}
#sourcing-full .entry-steps .chip i{width:18px;height:18px;border-radius:50%;background:rgba(8,145,178,.15);
    display:flex;align-items:center;justify-content:center;font-style:normal;font-size:11px;font-weight:700}
#sourcing-full .btn-primary{display:inline-flex;align-items:center;gap:9px;padding:14px 34px;border-radius:13px;
    background:var(--grad-1);color:#04121e;font-size:16px;font-weight:700;
    box-shadow:0 14px 32px -12px rgba(34,211,238,.6);transition:transform .18s,box-shadow .18s}
#sourcing-full .btn-primary:hover{transform:translateY(-2px);box-shadow:0 20px 40px -12px rgba(34,211,238,.7)}
#sourcing-full .btn-primary:active{transform:translateY(0)}
#sourcing-full .entry-role{margin-top:20px;color:var(--txt-3);font-size:12.5px}
#sourcing-full /* ============ 工作台布局 ============ */
  #app{display:none;height:100%;flex-direction:column}
#sourcing-full #app.show{display:flex}
#sourcing-full .topbar{flex:0 0 auto;display:flex;align-items:center;gap:16px;padding:14px 24px;
    border-bottom:1px solid var(--line);background:rgba(255,255,255,.82);backdrop-filter:blur(10px)}
#sourcing-full .brand{display:flex;align-items:center;gap:11px}
#sourcing-full .brand .logo{width:38px;height:38px;border-radius:11px;background:var(--grad-1);
    display:flex;align-items:center;justify-content:center;font-size:20px}
#sourcing-full .brand b{font-size:16px;display:block;color:var(--txt)}
#sourcing-full .brand small{color:var(--txt-3);font-size:11.5px}
#sourcing-full .top-tag{margin-left:6px;padding:5px 12px;border-radius:8px;background:rgba(8,145,178,.09);
    border:1px solid rgba(8,145,178,.24);color:var(--cyan);font-size:12px;font-weight:600}
#sourcing-full .top-right{margin-left:auto;display:flex;align-items:center;gap:14px}
#sourcing-full .project-no{color:var(--txt-2);font-size:13px}
#sourcing-full .project-no b{color:var(--txt)}
#sourcing-full .avatar{width:36px;height:36px;border-radius:50%;background:var(--grad-2);
    display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:700;color:#fff}
#sourcing-full .workspace{flex:1 1 auto;display:grid;grid-template-columns:minmax(360px,420px) 1fr;min-height:0}
#sourcing-full /* ----- 左：智能体对话 ----- */
  .chat{display:flex;flex-direction:column;min-height:0;border-right:1px solid var(--line);
    background:linear-gradient(180deg,#f7faff,var(--bg))}
#sourcing-full .chat-head{flex:0 0 auto;display:flex;align-items:center;gap:11px;padding:16px 20px;border-bottom:1px solid var(--line)}
#sourcing-full .ai-dot{width:38px;height:38px;border-radius:11px;background:var(--grad-1);position:relative;
    display:flex;align-items:center;justify-content:center;font-size:19px}
#sourcing-full .ai-dot::after{content:"";position:absolute;right:-2px;bottom:-2px;width:11px;height:11px;border-radius:50%;
    background:var(--green);border:2px solid #fff}
#sourcing-full .chat-head b{font-size:14.5px;display:block;color:var(--txt)}
#sourcing-full .chat-head small{color:var(--green);font-size:11.5px}
#sourcing-full .chat-body{flex:1 1 auto;overflow-y:auto;padding:22px 18px;display:flex;flex-direction:column;gap:16px}
#sourcing-full .msg{display:flex;gap:10px;max-width:92%;animation:rise .35s ease}

  @keyframes sf-rise{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}#sourcing-full .msg.me{align-self:flex-end;flex-direction:row-reverse}
#sourcing-full .msg .av{flex:0 0 auto;width:30px;height:30px;border-radius:9px;display:flex;align-items:center;
    justify-content:center;font-size:15px}
#sourcing-full .msg.ai .av{background:var(--grad-1)}
#sourcing-full .msg.me .av{background:var(--grad-2)}
#sourcing-full .bubble{padding:11px 14px;border-radius:13px;font-size:13.5px;line-height:1.65}
#sourcing-full .msg.ai .bubble{background:var(--panel);border:1px solid var(--line-2);border-top-left-radius:4px;
    box-shadow:0 6px 18px -12px rgba(30,58,110,.3)}
#sourcing-full .msg.me .bubble{background:linear-gradient(135deg,#2563eb,#3b82f6);color:#fff;border-top-right-radius:4px}
#sourcing-full .bubble b{color:var(--cyan)}
#sourcing-full .msg.me .bubble b{color:#bff0fb}
#sourcing-full .bubble .mini-list{margin-top:8px;display:flex;flex-direction:column;gap:5px}
#sourcing-full .bubble .mini-list span{display:flex;gap:7px;align-items:baseline;font-size:12.5px;color:var(--txt-2)}
#sourcing-full .bubble .mini-list span i{color:var(--cyan);font-style:normal;font-weight:700}
#sourcing-full .typing{display:inline-flex;gap:4px;align-items:center;padding:3px 2px}
#sourcing-full .typing i{width:7px;height:7px;border-radius:50%;background:var(--txt-3);animation:blink 1.2s infinite}
#sourcing-full .typing i:nth-child(2){animation-delay:.2s}
#sourcing-full .typing i:nth-child(3){animation-delay:.4s}

  @keyframes sf-blink{0%,60%,100%{opacity:.25;transform:translateY(0)}30%{opacity:1;transform:translateY(-3px)}}#sourcing-full .quick{flex:0 0 auto;display:flex;gap:8px;flex-wrap:wrap;padding:10px 18px 4px}
#sourcing-full .quick button{padding:7px 13px;border-radius:999px;font-size:12.5px;color:var(--cyan);
    background:rgba(8,145,178,.07);border:1px solid rgba(8,145,178,.24);transition:all .15s}
#sourcing-full .quick button:hover{background:rgba(8,145,178,.15)}
#sourcing-full .chat-input{flex:0 0 auto;display:flex;gap:10px;padding:14px 18px 18px}
#sourcing-full .chat-input .field{flex:1;display:flex;align-items:center;background:var(--panel);
    border:1px solid var(--line-2);border-radius:13px;padding:0 14px;transition:border .15s}
#sourcing-full .chat-input .field:focus-within{border-color:var(--cyan)}
#sourcing-full .chat-input input{flex:1;background:none;border:none;outline:none;color:var(--txt);
    font-size:13.5px;padding:12px 0}
#sourcing-full .chat-input input::placeholder{color:var(--txt-3)}
#sourcing-full .chat-input .send{width:44px;height:44px;border-radius:12px;background:var(--grad-1);
    display:flex;align-items:center;justify-content:center;color:#04121e;font-size:17px;
    transition:transform .15s}
#sourcing-full .chat-input .send:hover{transform:scale(1.06)}
#sourcing-full /* ----- 右：4步工作台 ----- */
  .board{display:flex;flex-direction:column;min-height:0;overflow:hidden}
#sourcing-full .stepper{flex:0 0 auto;display:grid;grid-template-columns:repeat(4,1fr);gap:12px;padding:20px 24px 4px}
#sourcing-full .step{position:relative;display:flex;align-items:center;gap:12px;padding:14px 16px;border-radius:var(--r-md);
    background:var(--panel);border:1px solid var(--line);transition:all .3s}
#sourcing-full .step .num{flex:0 0 auto;width:34px;height:34px;border-radius:50%;display:flex;align-items:center;
    justify-content:center;font-weight:700;font-size:15px;background:#eef2fa;color:var(--txt-3);
    border:1.5px solid var(--line-2);transition:all .3}
#sourcing-full .step .st-t b{font-size:14px;display:block;color:var(--txt)}
#sourcing-full .step .st-t small{font-size:11.5px;color:var(--txt-3)}
#sourcing-full .step.active{border-color:rgba(34,211,238,.6);background:linear-gradient(135deg,rgba(34,211,238,.1),rgba(59,130,246,.07));
    box-shadow:0 0 0 1px rgba(34,211,238,.18)}
#sourcing-full .step.active .num{background:var(--grad-1);color:#04121e;border-color:transparent}
#sourcing-full .step.active .st-t small{color:var(--cyan)}
#sourcing-full .step.done .num{background:rgba(5,150,105,.13);color:var(--green);border-color:rgba(5,150,105,.38)}
#sourcing-full .step.done .st-t small{color:var(--green)}
#sourcing-full .stage{flex:1 1 auto;overflow-y:auto;padding:18px 24px 26px;min-height:0}
#sourcing-full .pane{display:none;animation:fade .4s ease}
#sourcing-full .pane.active{display:block}

  @keyframes sf-fade{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}#sourcing-full .pane-head{display:flex;align-items:center;gap:10px;margin:4px 0 16px}
#sourcing-full .pane-head h2{font-size:18px;color:var(--txt)}
#sourcing-full .pane-head .tag{padding:4px 11px;border-radius:7px;font-size:11.5px;font-weight:600}
#sourcing-full .tag.ok{background:rgba(5,150,105,.12);color:var(--green)}
#sourcing-full .tag.run{background:rgba(8,145,178,.11);color:var(--cyan)}
#sourcing-full .pane-head .hint{margin-left:auto;color:var(--txt-3);font-size:12px}
#sourcing-full .card{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);padding:20px;margin-bottom:16px;
    box-shadow:0 10px 30px -20px rgba(30,58,110,.25)}
#sourcing-full .card h3{font-size:14px;margin-bottom:14px;display:flex;align-items:center;gap:8px;color:var(--txt)}
#sourcing-full .card h3::before{content:"";width:4px;height:15px;border-radius:2px;background:var(--grad-1)}
#sourcing-full /* 需求字段 */
  .field-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px}
#sourcing-full .fld{background:var(--panel-2);border:1px solid var(--line-2);border-radius:var(--r-md);padding:13px 15px}
#sourcing-full .fld label{display:block;font-size:11.5px;color:var(--txt-3);margin-bottom:6px}
#sourcing-full .fld .val{font-size:14.5px;font-weight:600;color:var(--txt)}
#sourcing-full .fld .val.small{font-size:13px;font-weight:500;color:var(--txt-2);line-height:1.5}
#sourcing-full .conf{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;color:var(--green);
    margin-top:7px;padding:3px 8px;border-radius:6px;background:rgba(5,150,105,.1)}
#sourcing-full .conf.amb{color:var(--amber);background:rgba(217,119,6,.1)}
#sourcing-full /* 匹配供应商 */
  .sup-list{display:flex;flex-direction:column;gap:12px}
#sourcing-full .sup{display:grid;grid-template-columns:auto 1fr auto;gap:14px;align-items:center;padding:15px 17px;
    background:var(--panel-2);border:1px solid var(--line-2);border-radius:var(--r-md);transition:border .2s,transform .2s}
#sourcing-full .sup:hover{border-color:var(--cyan);transform:translateX(3px)}
#sourcing-full .rank{width:34px;height:34px;border-radius:10px;display:flex;align-items:center;justify-content:center;
    font-weight:800;font-size:15px;background:#e9eef8;color:var(--txt-3)}
#sourcing-full .sup.top .rank{background:var(--grad-1);color:#04121e}
#sourcing-full .sup .info b{font-size:14.5px;display:flex;align-items:center;gap:8px;color:var(--txt)}
#sourcing-full .badge{font-size:10.5px;padding:2px 7px;border-radius:5px;font-weight:600}
#sourcing-full .badge.cert{background:rgba(5,150,105,.13);color:var(--green)}
#sourcing-full .sup .info p{color:var(--txt-2);font-size:12px;margin-top:4px}
#sourcing-full .tags{margin-top:7px;display:flex;gap:6px;flex-wrap:wrap}
#sourcing-full .tags span{font-size:11px;color:var(--txt-2);background:rgba(15,27,51,.05);padding:2px 8px;border-radius:5px}
#sourcing-full .score-box{text-align:center}
#sourcing-full .score{font-size:24px;font-weight:800;background:linear-gradient(135deg,#0891b2,#2563eb);
    -webkit-background-clip:text;background-clip:text;color:transparent}
#sourcing-full .score-box small{display:block;color:var(--txt-3);font-size:10.5px;margin-top:2px}
#sourcing-full .score-bar{width:90px;height:5px;border-radius:3px;background:#e4ebf6;margin-top:7px;overflow:hidden}
#sourcing-full .score-bar i{display:block;height:100%;background:var(--grad-1);border-radius:3px}
#sourcing-full /* 议价 */
  .nego-wrap{display:grid;grid-template-columns:1fr;gap:0}
#sourcing-full .nego-thread{display:flex;flex-direction:column;gap:13px}
#sourcing-full .n-card{padding:14px 16px;border-radius:var(--r-md);border:1px solid var(--line-2)}
#sourcing-full .n-card.from-sup{background:var(--panel-2)}
#sourcing-full .n-card.from-ai{background:linear-gradient(135deg,rgba(59,130,246,.08),rgba(139,92,246,.06));border-color:rgba(99,102,241,.28)}
#sourcing-full .n-top{display:flex;align-items:center;gap:9px;margin-bottom:9px}
#sourcing-full .n-top b{font-size:13px;color:var(--txt)}
#sourcing-full .n-top .who{font-size:10.5px;padding:2px 8px;border-radius:5px;font-weight:600}
#sourcing-full .who.sup{background:rgba(217,119,6,.13);color:var(--amber)}
#sourcing-full .who.ai{background:rgba(124,58,237,.13);color:var(--violet)}
#sourcing-full .n-top .time{margin-left:auto;color:var(--txt-3);font-size:11px}
#sourcing-full .n-terms{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
#sourcing-full .n-term{background:rgba(15,27,51,.04);border-radius:var(--r-sm);padding:9px 11px}
#sourcing-full .n-term label{font-size:10.5px;color:var(--txt-3);display:block;margin-bottom:3px}
#sourcing-full .n-term b{font-size:13.5px;color:var(--txt)}
#sourcing-full .n-term b.down{color:var(--green)}
#sourcing-full .n-card .note{margin-top:10px;font-size:12px;color:var(--txt-2);line-height:1.6}
#sourcing-full /* 比选结果 */
  .compare-table{width:100%;border-collapse:collapse;font-size:12.5px}
#sourcing-full .compare-table th{text-align:left;padding:11px 13px;color:var(--txt-3);font-weight:600;
    font-size:11.5px;border-bottom:1px solid var(--line-2);white-space:nowrap}
#sourcing-full .compare-table td{padding:13px;border-bottom:1px solid var(--line);color:var(--txt-2)}
#sourcing-full .compare-table tr:hover td{background:rgba(8,145,178,.04)}
#sourcing-full .compare-table .c-sup b{font-size:13px;display:block;color:var(--txt)}
#sourcing-full .compare-table .c-sup small{color:var(--txt-3);font-size:11px}
#sourcing-full .pill{display:inline-block;padding:3px 9px;border-radius:6px;font-size:11px;font-weight:600}
#sourcing-full .pill.g{background:rgba(5,150,105,.13);color:var(--green)}
#sourcing-full .pill.a{background:rgba(217,119,6,.13);color:var(--amber)}
#sourcing-full .pill.r{background:rgba(225,29,72,.11);color:var(--rose)}
#sourcing-full .reco-box{margin-top:16px;padding:20px 22px;border-radius:var(--r-lg);
    background:linear-gradient(135deg,rgba(34,211,238,.1),rgba(59,130,246,.08));
    border:1px solid rgba(34,211,238,.3)}
#sourcing-full .reco-box h3{font-size:15px;margin-bottom:9px;display:flex;align-items:center;gap:9px;color:var(--txt)}
#sourcing-full .reco-box h3 .crown{font-size:19px}
#sourcing-full .reco-box p{font-size:13px;color:var(--txt-2);line-height:1.7}
#sourcing-full .reco-box p b{color:var(--cyan)}
#sourcing-full .reco-actions{display:flex;gap:11px;margin-top:17px;flex-wrap:wrap}
#sourcing-full .btn{padding:11px 20px;border-radius:11px;font-size:13.5px;font-weight:600;transition:all .17s}
#sourcing-full .btn.solid{background:var(--grad-1);color:#04121e}
#sourcing-full .btn.solid:hover{transform:translateY(-2px);box-shadow:0 12px 26px -12px rgba(34,211,238,.6)}
#sourcing-full .btn.ghost{background:var(--panel);border:1px solid var(--line-2);color:var(--txt)}
#sourcing-full .btn.ghost:hover{border-color:var(--cyan)}
#sourcing-full .pane-cta{display:flex;justify-content:flex-end;margin-top:4px}
#sourcing-full .btn-next{display:inline-flex;align-items:center;gap:8px;padding:11px 22px;border-radius:11px;
    background:var(--grad-1);color:#04121e;font-size:13.5px;font-weight:700;transition:all .17s}
#sourcing-full .btn-next:hover{transform:translateY(-2px)}
#sourcing-full .placeholder{padding:46px 24px;text-align:center;color:var(--txt-3);font-size:13px;
    border:1.5px dashed var(--line-2);border-radius:var(--r-lg);background:var(--panel-2)}
#sourcing-full .placeholder .big{font-size:34px;display:block;margin-bottom:12px;opacity:.7}


  @media(max-width:1080px){#sourcing-full .workspace{grid-template-columns:1fr;grid-template-rows:44vh 1fr}
#sourcing-full .chat{border-right:none;border-bottom:1px solid var(--line)}
#sourcing-full .n-terms{grid-template-columns:repeat(2,1fr)}
}

  @media(max-width:680px){#sourcing-full .stepper{grid-template-columns:repeat(2,1fr)}
#sourcing-full .project-no{display:none}
#sourcing-full .entry-card{padding:40px 24px}
}

#sourcing-full{position:fixed;inset:0;z-index:200;display:none;overflow:hidden;
  background:
    radial-gradient(1100px 520px at 82% -8%, rgba(59,130,246,.12), transparent 60%),
    radial-gradient(900px 480px at 0% 110%, rgba(34,211,238,.10), transparent 55%),
    #f3f6fc;color:#0f1b33;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;}
#sourcing-full.open{display:block}
#sourcing-full .sf-back-bar{position:absolute;top:16px;right:22px;z-index:210;display:flex;gap:10px}
#sourcing-full .sf-back{padding:9px 16px;border-radius:10px;background:#fff;border:1px solid #d3dcef;
  color:#2563eb;font-size:13px;font-weight:600;box-shadow:0 8px 20px -12px rgba(30,58,110,.4)}
#sourcing-full .sf-back:hover{border-color:#22d3ee}
#sourcing-full #entry{z-index:205}
