/* ===== MIP Product-Centric PLM 样式 ===== */

/* ---------- Product Context Bar ---------- */
.context-bar{
  position:sticky;top:0;z-index:30;
  display:flex;align-items:center;gap:14px;flex-wrap:wrap;
  background:rgba(255,255,255,.92);backdrop-filter:blur(10px);
  border-bottom:1px solid var(--line);
  padding:9px 22px;
}
.cb-product{
  display:flex;align-items:center;gap:9px;
  padding:6px 12px 6px 9px;border-radius:10px;
  background:var(--navy);color:#fff;font-weight:600;font-size:13px;
  white-space:nowrap;transition:filter .15s;
}
.cb-product:hover{filter:brightness(1.15)}
.cb-product .cb-logo{
  width:24px;height:24px;border-radius:7px;display:grid;place-items:center;
  background:linear-gradient(135deg,#3b7ff5,#2367e8);font-size:11px;font-weight:800;
}
.cb-meta{display:flex;align-items:center;gap:14px;font-size:12px;color:var(--muted);white-space:nowrap}
.cb-meta b{color:var(--ink-2);font-weight:600}
.cb-sep{width:1px;height:20px;background:var(--line)}
.cb-tabs{display:flex;align-items:center;gap:2px;overflow-x:auto;flex:1;min-width:200px}
.cb-tab{
  padding:6px 11px;border-radius:8px;font-size:12.5px;color:var(--ink-2);
  white-space:nowrap;transition:background .15s,color .15s;
}
.cb-tab:hover{background:var(--surface-3)}
.cb-tab.active{background:var(--blue-soft);color:var(--blue-ink);font-weight:600}

/* ---------- 页面通用 ---------- */
.pl-wrap{padding:24px 26px 60px;max-width:1480px}
.page-head h1{font-size:21px;margin:0 0 4px;letter-spacing:-.01em}
.page-head p{margin:0;color:var(--muted);font-size:13px}

/* 产品组合汇总条 */
.portfolio-summary{
  display:grid;grid-template-columns:repeat(5,1fr);gap:14px;margin:20px 0 26px;
}
.ps-card{
  background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);
  padding:16px 18px;box-shadow:var(--shadow-sm);
}
.ps-card .ps-k{font-size:12px;color:var(--muted);display:flex;gap:6px;align-items:center}
.ps-card .ps-v{font-size:24px;font-weight:700;margin-top:6px;letter-spacing:-.02em}
.ps-card .ps-sub{font-size:11.5px;color:var(--faint);margin-top:2px}

/* 产品线分组 */
.pline{margin-bottom:30px}
.pline-head{display:flex;align-items:center;gap:11px;margin:0 0 14px}
.pline-dot{width:10px;height:10px;border-radius:3px}
.pline-head h2{font-size:15px;margin:0}
.pline-head .pline-meta{font-size:12px;color:var(--muted)}
.product-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}

/* 产品卡片 */
.product-card{
  position:relative;background:var(--surface);border:1px solid var(--line);
  border-radius:var(--r-lg);padding:19px 19px 16px;box-shadow:var(--shadow-sm);
  cursor:pointer;overflow:hidden;transition:transform .18s,box-shadow .18s,border-color .18s;
}
.product-card::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;
  background:linear-gradient(180deg,var(--accent,var(--blue)),transparent)}
.product-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-lg);border-color:var(--line-strong)}
.pc-top{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
.pc-code{font-family:var(--mono);font-size:11.5px;color:var(--faint);letter-spacing:.04em}
.pc-name{font-size:15.5px;font-weight:700;margin:4px 0 2px;letter-spacing:-.01em}
.pc-stage{font-size:12px;color:var(--muted);margin-bottom:14px}
.pc-foot{display:flex;align-items:center;justify-content:space-between;gap:10px}
.pc-mini{display:flex;gap:13px;font-size:11.5px;color:var(--muted)}
.pc-mini b{color:var(--ink-2);font-weight:600}

/* 健康环 */
.ring{position:relative;width:52px;height:52px;flex:none}
.ring svg{transform:rotate(-90deg)}
.ring .ring-bg{fill:none;stroke:var(--surface-3);stroke-width:5}
.ring .ring-fg{fill:none;stroke:url(#ringGrad);stroke-width:5;stroke-linecap:round;
  transition:stroke-dashoffset .6s}
.ring .ring-tx{position:absolute;inset:0;display:grid;place-items:center;font-size:11px;font-weight:700}

/* 状态 pill */
.pill{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border-radius:20px;
  font-size:11px;font-weight:600}
.pill .dot{width:6px;height:6px;border-radius:50%}
.pill.navy{background:var(--navy);color:#fff}
.pill.blue{background:var(--blue-soft);color:var(--blue-ink)}
.pill.green{background:var(--green-soft);color:var(--green)}
.pill.amber{background:var(--amber-soft);color:var(--amber)}
.pill.red{background:var(--red-soft);color:var(--red)}
.pill.gray{background:var(--surface-3);color:var(--muted)}
.pill.purple{background:var(--purple-soft);color:var(--purple)}

/* ---------- Product 360 ---------- */
.p360-hero{
  background:linear-gradient(120deg,var(--navy),var(--navy-2) 60%,#1d3a63);
  border-radius:var(--r-lg);padding:24px 26px;color:#fff;position:relative;overflow:hidden;
}
.p360-hero::after{content:"";position:absolute;right:-60px;top:-60px;width:240px;height:240px;
  background:radial-gradient(circle,rgba(59,127,245,.35),transparent 70%);border-radius:50%}
.p360-breadcrumb{font-size:12px;color:rgba(255,255,255,.65);margin-bottom:10px}
.p360-breadcrumb a{color:rgba(255,255,255,.85)}
.p360-title{display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.p360-title h1{font-size:24px;margin:0;letter-spacing:-.02em}
.p360-title .p360-code{font-family:var(--mono);font-size:12px;color:rgba(255,255,255,.6)}
.p360-keys{display:flex;gap:26px;margin-top:18px;flex-wrap:wrap;position:relative;z-index:1}
.p360-key .k{font-size:11px;color:rgba(255,255,255,.55);text-transform:uppercase;letter-spacing:.05em}
.p360-key .v{font-size:14px;font-weight:600;margin-top:3px}

.p360-tabs{display:flex;gap:3px;margin:20px 0 22px;border-bottom:1px solid var(--line);overflow-x:auto}
.p360-tab{padding:10px 15px;font-size:13px;color:var(--muted);border-bottom:2px solid transparent;
  white-space:nowrap;margin-bottom:-1px;font-weight:500}
.p360-tab:hover{color:var(--ink)}
.p360-tab.active{color:var(--blue-ink);border-bottom-color:var(--blue);font-weight:600}

.p360-grid{display:grid;gap:16px}
.g-2x{grid-template-columns:repeat(2,1fr)}.g-3x{grid-template-columns:repeat(3,1fr)}
.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);
  padding:18px 20px;box-shadow:var(--shadow-sm)}
.panel-h{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}
.panel-h h3{font-size:14px;margin:0}
.panel-h .ph-link{font-size:12px}

/* 六问控制中心 */
.six-q{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.q-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);
  padding:17px 19px;box-shadow:var(--shadow-sm)}
.q-card .q-top{display:flex;align-items:center;justify-content:space-between}
.q-card .q-label{font-size:12.5px;color:var(--muted)}
.q-card .q-ico{width:30px;height:30px;border-radius:9px;display:grid;place-items:center;font-size:15px}
.q-card .q-score{font-size:22px;font-weight:700;margin:10px 0 6px}
.q-card .q-note{font-size:11.5px;color:var(--faint)}

/* ---------- 生命周期流 ---------- */
.lc-flow{display:flex;align-items:flex-start;overflow-x:auto;padding:14px 4px 20px}
.lc-stage{display:flex;flex-direction:column;align-items:center;position:relative;flex:none;width:108px;cursor:pointer}
.lc-dot{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;font-size:12px;
  font-weight:700;background:var(--surface-3);color:var(--faint);border:2px solid var(--surface);z-index:2}
.lc-stage.done .lc-dot{background:var(--blue);color:#fff}
.lc-stage.active .lc-dot{background:#fff;color:var(--blue);border-color:var(--blue);
  box-shadow:0 0 0 5px rgba(35,103,232,.16)}
.lc-name{font-size:11.5px;text-align:center;margin-top:9px;color:var(--muted);max-width:100px;line-height:1.35}
.lc-stage.done .lc-name{color:var(--ink-2)}
.lc-stage.active .lc-name{color:var(--blue-ink);font-weight:600}
.lc-gate{font-size:10px;color:var(--faint);margin-top:3px;text-align:center}
.lc-line{position:absolute;top:15px;left:calc(50% + 18px);width:72px;height:2px;background:var(--surface-3);z-index:1}
.lc-stage.done .lc-line{background:var(--blue)}

/* ---------- 结构树 ---------- */
.st-tree{font-size:13px}
.st-node{position:relative}
.st-children{margin-left:22px;border-left:1px dashed var(--line-strong);padding-left:6px}
.st-row{display:flex;align-items:center;gap:9px;padding:6px 9px;border-radius:8px;cursor:pointer}
.st-row:hover{background:var(--surface-2)}
.st-row .st-caret{width:14px;color:var(--faint);font-size:10px;transition:transform .15s;flex:none}
.st-row.open .st-caret{transform:rotate(90deg)}
.st-row .st-ico{width:24px;height:24px;border-radius:7px;display:grid;place-items:center;
  font-size:11px;font-weight:700;flex:none}
.tp-System{background:#e7eefc;color:#2b5bc4}
.tp-Subsystem{background:#e9f7f1;color:#12805c}
.tp-Assembly{background:#fdf0e3;color:#c2670a}
.tp-PartRef{background:#f0ecff;color:#6b46d6}
.tp-Process{background:#e6f6ee;color:#14684a}
.st-row .st-name{font-weight:500}
.st-row .st-code{font-family:var(--mono);font-size:11px;color:var(--faint)}
.st-row .st-find{margin-left:auto;font-size:11px;color:var(--muted);display:flex;gap:12px;align-items:center}
/* 构型适用性编辑入口：默认隐藏，hover 行时显现，避免干扰阅读 */
.st-row .st-cfgbtn{margin-left:6px;color:var(--faint);font-size:12px;opacity:0;
  transition:opacity .12s;padding:0 2px}
.st-row:hover .st-cfgbtn{opacity:.75}
.st-row .st-cfgbtn:hover{opacity:1;color:var(--blue)}

/* ---------- 就绪 ---------- */
.rd-top{display:grid;grid-template-columns:220px 1fr;gap:28px;align-items:center}
.rd-big-ring{width:180px;height:180px;margin:auto;position:relative}
.rd-big-ring svg{transform:rotate(-90deg)}
.rd-big-ring .rb-bg{fill:none;stroke:var(--surface-3);stroke-width:13}
.rd-big-ring .rb-fg{fill:none;stroke:url(#ringGrad);stroke-width:13;stroke-linecap:round}
.rd-big-ring .rb-tx{position:absolute;inset:0;display:grid;place-items:center;flex-direction:column}
.rd-big-ring .rb-pct{font-size:34px;font-weight:700;letter-spacing:-.03em}
.rd-big-ring .rb-lb{font-size:12px;color:var(--muted)}
.rd-dims{display:grid;grid-template-columns:repeat(2,1fr);gap:12px 22px}

/* ---------- 影响图 ---------- */
.imp-canvas{width:100%;overflow-x:auto;border:1px solid var(--line);border-radius:var(--r);
  background:linear-gradient(180deg,#fbfcfe,#f5f8fc);padding:8px}
.imp-canvas svg{display:block}
.imp-node rect{stroke-width:1.5;rx:8}
.imp-node text{font-size:11.5px;font-weight:600}
.imp-edge{fill:none;stroke:#b9c4d4;stroke-width:1.6}
.imp-legend{display:flex;gap:16px;flex-wrap:wrap;margin-top:12px;font-size:11.5px;color:var(--muted)}
.imp-legend span{display:inline-flex;align-items:center;gap:6px}
.imp-legend i{width:11px;height:11px;border-radius:3px;display:inline-block}

/* ---------- 技术包 ---------- */
.pkg-status{display:flex;align-items:center;gap:10px}
.pkg-timeline{display:flex;gap:0;margin:18px 0}
.pkg-step{flex:1;text-align:center;position:relative;font-size:11.5px;color:var(--faint)}
.pkg-step .ps-dot{width:24px;height:24px;border-radius:50%;background:var(--surface-3);color:#fff;
  display:grid;place-items:center;margin:0 auto 6px;font-size:11px;position:relative;z-index:2}
.pkg-step.done .ps-dot{background:var(--blue)}
.pkg-step::before{content:"";position:absolute;top:12px;left:calc(50% + 14px);right:calc(-50% + 14px);
  height:2px;background:var(--surface-3)}
.pkg-step:last-child::before{display:none}
.pkg-step.done::before{background:var(--blue)}
.pkg-step.done{color:var(--ink-2)}

/* 受控水印提示 */
.watermark-note{display:flex;align-items:center;gap:9px;background:var(--diff-soft);
  border:1px solid #f6d9b8;border-radius:var(--r);padding:11px 14px;font-size:12px;color:#9a5b12}

/* 列表表格增强 */
.pl-table{width:100%;border-collapse:collapse;font-size:12.5px}
.pl-table th{text-align:left;font-weight:600;color:var(--muted);font-size:11.5px;
  padding:9px 12px;border-bottom:1px solid var(--line)}
.pl-table td{padding:11px 12px;border-bottom:1px solid var(--surface-3);vertical-align:middle}
.pl-table tbody tr{cursor:pointer;transition:background .12s}
.pl-table tbody tr:hover{background:var(--surface-2)}
.pl-table .mono-c{font-family:var(--mono);font-size:11.5px;color:var(--muted)}

/* 筛选条 */
.filter-bar{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px;align-items:center}
.chip-filter{padding:6px 13px;border-radius:20px;border:1px solid var(--line);background:#fff;
  font-size:12px;color:var(--ink-2);transition:all .15s}
.chip-filter:hover{border-color:var(--blue)}
.chip-filter.active{background:var(--navy);color:#fff;border-color:var(--navy)}

/* 空状态在产品页 */
.pl-empty{padding:50px 20px;text-align:center;color:var(--muted)}

.dm-sec.collapsed .dm-sec-b{display:none}
.dm-sec-h .faint{transition:transform .15s}
.dm-sec.collapsed .dm-sec-h .faint{transform:rotate(-90deg)}

@media (max-width:1100px){
  .product-grid{grid-template-columns:repeat(2,1fr)}
  .portfolio-summary{grid-template-columns:repeat(3,1fr)}
  .six-q{grid-template-columns:repeat(2,1fr)}
  .dm-grid{grid-template-columns:1fr!important}
}


/* ===== R6 Product Lifecycle Agent ===== */
.ai-headline{font-size:14.5px;line-height:1.75;color:var(--ink);
  background:linear-gradient(135deg,rgba(124,92,252,.09),rgba(35,103,232,.06));
  border:1px solid var(--surface-3);border-radius:12px;padding:14px 16px}
.ai-ico{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;
  border-radius:50%;font-size:12px;font-weight:700;flex:none}
.ai-ico.ok{background:rgba(18,128,92,.14);color:var(--green)}
.ai-ico.warn{background:rgba(255,138,0,.16);color:#ff8a00}
.ai-actions{margin:0;padding-left:20px;font-size:13px;line-height:2;color:var(--ink)}
.ai-answer{background:var(--surface-2);border:1px solid var(--surface-3);border-radius:10px;
  padding:12px 14px;font-size:13px;line-height:1.75;color:var(--ink)}
.ai-answer .pill.gray{background:var(--surface-3);color:var(--ink-2)}


/* ===== R6 Product Digital Graph ===== */
.dg-card{display:flex;flex-direction:column}
.dg-legend{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:11.5px;color:var(--ink-2);margin-bottom:10px}
.dg-legend span{display:inline-flex;align-items:center;gap:5px}
.dg-legend i{width:10px;height:10px;border-radius:50%;display:inline-block}
.dg-wrap{width:100%;min-height:420px;border:1px solid var(--surface-3);border-radius:12px;
  background:radial-gradient(circle at 50% 40%,#fbfdff,#f2f6fb);overflow:hidden}
.dg-svg{width:100%;height:600px;display:block;cursor:default}
.dg-label{font-size:10.5px;fill:var(--ink-2);text-anchor:middle;pointer-events:none;font-weight:600}
.dg-hint{font-size:11px;margin-top:8px}


/* ===== R6 行业合规 ===== */
.ind-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:10px}
.ind-item{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;border:1px solid var(--surface-3);
  border-radius:10px;background:var(--surface-2)}
.ind-item b{font-size:12.5px;color:var(--ink);font-weight:600}
.ind-ico{flex:none;width:22px;height:22px;border-radius:50%;display:inline-flex;
  align-items:center;justify-content:center;font-size:12px;font-weight:700}
.ind-item.ok .ind-ico{background:rgba(18,128,92,.14);color:var(--green)}
.ind-item.warn .ind-ico{background:rgba(255,138,0,.16);color:#ff8a00}
.ind-item.todo .ind-ico{background:var(--surface-3);color:var(--faint)}
.ind-item.ok{background:rgba(18,128,92,.05)}
