/* ===== 图纸查看器三栏 ===== */
.vw{display:grid;grid-template-columns:210px 1fr 320px;gap:0;height:calc(100vh - var(--topbar-h) - 48px);
  border:1px solid var(--line);border-radius:var(--r);overflow:hidden;background:#fff}
.vw-thumbs{background:var(--surface-2);border-right:1px solid var(--line);overflow-y:auto;padding:10px}
.vw-thumb{border:2px solid transparent;border-radius:8px;overflow:hidden;margin-bottom:9px;cursor:pointer;background:#fff;
  border:1px solid var(--line)}
.vw-thumb.active{border-color:var(--blue);box-shadow:0 0 0 2px rgba(35,103,232,.18)}
.vw-thumb .ph{aspect-ratio:1.414/1;display:grid;place-items:center;background:#fbfcfe}
.vw-thumb .cap{font-size:10px;padding:4px 7px;color:var(--muted);display:flex;justify-content:space-between}
.vw-canvas{background:#e8ecf2;display:flex;flex-direction:column;min-width:0;position:relative}
.vw-toolbar{height:44px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;
  gap:4px;padding:0 10px;flex-wrap:wrap}
.vw-toolbar .tbtn{width:32px;height:30px;border-radius:7px;color:var(--muted);font-size:13px;display:grid;place-items:center}
.vw-toolbar .tbtn:hover{background:var(--surface-2);color:var(--ink)}
.vw-toolbar .tbtn.on{background:var(--blue-soft);color:var(--blue)}
.vw-toolbar .sep{width:1px;height:20px;background:var(--line);margin:0 5px}
.vw-stage{flex:1;overflow:auto;display:grid;place-items:center;padding:22px;position:relative}
.vw-paper{background:#fff;box-shadow:0 8px 30px rgba(15,29,46,.15);border-radius:3px;position:relative;
  width:min(100%,820px);aspect-ratio:1.414/1}
.vw-paper.pdf-embed{aspect-ratio:auto;height:100%;width:100%;min-height:60vh}
.vw-paper iframe{width:100%;height:100%;border:0;border-radius:3px}
.hl-box{position:absolute;border:2px solid var(--diff);background:rgba(255,138,0,.16);border-radius:2px;
  pointer-events:none;animation:pulse 1.6s infinite}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.45}}
.vw-side{background:#fff;border-left:1px solid var(--line);overflow-y:auto}
.vw-side .side-sec{border-bottom:1px solid var(--line)}
.vw-side .side-h{padding:11px 15px;font-size:11px;font-weight:700;color:var(--muted);text-transform:uppercase;
  letter-spacing:.6px;display:flex;justify-content:space-between;align-items:center;cursor:pointer;background:var(--surface-2)}
.vw-side .side-b{padding:11px 15px;font-size:12.5px}
.attr-row{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:7px 0;border-bottom:1px dashed #eef1f5}
.attr-row:last-child{border:0}
.locate{color:var(--blue);font-size:12px;width:24px;height:24px;border-radius:6px;background:var(--blue-soft);
  display:grid;place-items:center;flex:none;cursor:pointer}
.locate:hover{background:var(--blue);color:#fff}

/* ===== 相似工作台 ===== */
.sw{display:grid;grid-template-columns:340px 1fr;gap:16px}
.sw-query{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:15px;height:fit-content}
.sw-card{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:13px;display:flex;gap:13px;
  margin-bottom:11px;cursor:pointer;transition:all .15s}
.sw-card:hover{border-color:var(--blue);box-shadow:var(--shadow-sm)}
.sw-card .thumb{width:130px;height:92px;flex:none;border-radius:8px;border:1px solid var(--line)}
.sw-card .sc-main{flex:1;min-width:0}
.sw-card .sc-top{display:flex;justify-content:space-between;align-items:flex-start}
.sw-total{font-size:21px;font-weight:760;color:var(--blue);font-family:var(--mono);line-height:1}
.sw-diffs{display:flex;gap:5px;flex-wrap:wrap;margin-top:7px}
.diff-chip{font-size:10px;padding:2px 7px;border-radius:6px;background:var(--diff-soft);color:#c5660a}

/* 对比页 */
.cmp{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.cmp .panel{background:#fff;border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
.cmp .panel .ph{aspect-ratio:1.414/1;background:#fbfcfe;position:relative;display:grid;place-items:center}
.cmp-overlay{position:relative}
.cmp-overlay .hl{position:absolute;border:2px solid var(--diff);background:rgba(255,138,0,.18);border-radius:3px}
.diff-row{display:flex;justify-content:space-between;padding:9px 0;border-bottom:1px dashed #edf0f5;font-size:12.5px}
.diff-row .a{color:var(--red)}.diff-row .b{color:var(--green)}

/* ===== 零件详情 ===== */
.detail-hero{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:18px 20px;margin-bottom:16px;
  display:flex;align-items:center;gap:18px;flex-wrap:wrap}
.detail-hero .thumb{width:120px;height:85px;border-radius:9px;border:1px solid var(--line);flex:none}
.detail-title h1{margin:0;font-size:20px}
.detail-title .meta{display:flex;gap:8px;margin-top:7px;flex-wrap:wrap}
.hero-actions{margin-left:auto;display:flex;gap:9px}
.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:12px}
.stat{background:var(--surface-2);border-radius:10px;padding:12px 13px}
.stat .k{font-size:10.5px;color:var(--muted)}
.stat .v{font-size:17px;font-weight:700;margin-top:3px}
.feat-list{display:flex;flex-wrap:wrap;gap:8px}
.feat-pill{background:var(--surface-2);border:1px solid var(--line);border-radius:9px;padding:8px 12px;font-size:12px;
  display:flex;align-items:center;gap:8px}
.feat-pill .cnt{background:var(--blue);color:#fff;border-radius:99px;font-size:10px;padding:0 7px;font-weight:700}

/* 报价趋势（纯 CSS 条形） */
.price-row{display:grid;grid-template-columns:150px 1fr 90px;gap:10px;align-items:center;padding:8px 0;border-bottom:1px dashed #edf0f5;font-size:12px}
.mini-bar{height:8px;background:var(--surface-3);border-radius:99px;overflow:hidden}
.mini-bar i{display:block;height:100%;background:linear-gradient(90deg,#5ea1ff,#2367e8)}

/* 成本瀑布 */
.cost-stack{display:flex;height:34px;border-radius:8px;overflow:hidden;border:1px solid var(--line)}
.cost-stack i{display:block;height:100%}
.cost-legend{display:grid;grid-template-columns:repeat(2,1fr);gap:7px 16px;margin-top:14px}
.cost-legend .li{display:flex;align-items:center;gap:8px;font-size:12px;justify-content:space-between}
.cost-legend .dot{width:9px;height:9px;border-radius:3px;flex:none}
.cost-hero{background:linear-gradient(135deg,#16305c,#2563eb);color:#fff;border-radius:13px;padding:20px}
.cost-hero .big{font-size:32px;font-weight:760;font-family:var(--mono);letter-spacing:-.5px}
.cost-range{display:flex;gap:20px;margin-top:10px;font-size:12px;opacity:.92}

/* 供应商能力 */
.cap-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:10px}
.cap{border:1px solid var(--line);border-radius:9px;padding:10px 12px}
.cap .k{font-size:10.5px;color:var(--muted)}
.cap .v{font-weight:700;font-size:13px;margin-top:2px}

/* RFQ 明细矩阵 */
.matrix{width:100%;border-collapse:collapse;font-size:12px}
.matrix th,.matrix td{border:1px solid var(--line);padding:9px 10px;text-align:center}
.matrix th{background:var(--surface-2);font-weight:600;color:var(--muted)}
.matrix td.lead{text-align:left;font-weight:600;background:var(--surface-2)}
.cell-ok{color:var(--green);font-weight:700}.cell-wait{color:var(--faint)}
.cell-best{background:var(--green-soft);font-weight:700;color:var(--green)}

/* 进度步骤 */
.upload-item{display:flex;align-items:center;gap:11px;padding:11px 0;border-bottom:1px solid var(--line)}
.upload-item .ui-name{flex:1;font-size:12.5px;min-width:0}
.upload-item .ui-name .p{font-size:10.5px;color:var(--muted);margin-top:2px}
.pill-state{font-size:10.5px;padding:2px 8px;border-radius:99px;font-weight:700}
.st-done{background:var(--green-soft);color:var(--green)}
.st-review{background:var(--amber-soft);color:var(--amber)}
.st-proc{background:var(--blue-soft);color:var(--blue-ink)}

/* 分栏工具 */
.split{display:grid;gap:16px}
.split-34{grid-template-columns:340px 1fr}
.split-21{grid-template-columns:1fr 1fr}
.filter-panel{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:15px;height:fit-content}
.filter-panel h4{margin:0 0 10px;font-size:12px}
.filter-panel .fg{margin-bottom:13px}
.filter-panel label{font-size:11px;color:var(--muted);margin-bottom:5px;display:block}
.ai-suggest{border:1px solid #ded7ff;background:linear-gradient(135deg,#f6f3ff,#fff);border-radius:10px;
  padding:11px 13px;font-size:12px;margin-bottom:10px}
.ai-suggest .t{color:var(--purple);font-weight:700;font-size:11px;display:flex;align-items:center;gap:6px;margin-bottom:4px}

/* 3D 占位 */
.viewer3d{background:radial-gradient(800px 400px at 50% 0,#1d2c44,#121b28);border-radius:var(--r);
  aspect-ratio:16/9;display:grid;place-items:center;color:#7084a0;position:relative;overflow:hidden}
.viewer3d .hint{color:#7084a0;font-size:12px;text-align:center;z-index:2}
.viewer3d .grid-floor{position:absolute;inset:0;background:
  linear-gradient(rgba(120,150,200,.12) 1px,transparent 1px),
  linear-gradient(90deg,rgba(120,150,200,.12) 1px,transparent 1px);
  background-size:34px 34px;transform:perspective(500px) rotateX(62deg) scale(1.6);transform-origin:center 70%}

/* 响应式 */
@media (max-width:1180px){
  .g-4{grid-template-columns:repeat(2,1fr)}.g-5{grid-template-columns:repeat(2,1fr)}
  .vw{grid-template-columns:1fr;height:auto}.vw-thumbs,.vw-side{display:none}
  .sw,.split-34{grid-template-columns:1fr}.cmp{grid-template-columns:1fr}
}
