@charset "UTF-8";
/* V5 新增的样式：15 个一级分类的顶栏、可以逐层返回的抽屉、带类型的查找、“用户端状态”和“技术分支”两组页面用到的组件。
   前四个样式文件（V1–V4）都没有改动。只按电脑屏幕设计，没有手机布局。 */

/* ---------- 顶栏：15 个一级分类。放不下时两头出现箭头，可以左右滚 ---------- */
@media(max-width:2100px){.pnav svg{display:none}}
.pnav{padding:9px 11px}
@media(max-width:1700px){.pnav{padding:8px 9px}.desktop.v3 .topnav{gap:12px;padding-left:20px}}
@media(max-width:1500px){.pnav{padding:8px 7px;font-size:12.5px}.topnav .wordmark{font-size:18px}.topnav .owner-label span{display:none}.desktop.v3 .topnav{gap:10px;padding:0 12px 0 16px}.pnav-row{gap:2px}}
.pnav-arrow{display:none;flex:none;width:24px;height:30px;border-radius:6px;background:#ffffff14;color:#dbe5f3;font-size:16px;line-height:1}
.pnav-arrow.show{display:block}
.pnav-arrow:hover{background:#ffffff2b;color:#fff}
.pnav-count{margin-left:-2px}

/* ---------- 内容区上方：返回、当前位置、查找 ---------- */
.subbar{gap:14px}
.back-btn{flex:none;display:inline-flex;align-items:center;gap:6px;max-width:330px;background:#eef4ff;color:#2859c5;border:1px solid #d5e2fb;border-radius:7px;padding:7px 11px 7px 8px;font-size:12px}
.back-btn svg{width:14px;height:14px}
.back-btn span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.back-btn:hover{background:#e2ecff}
.subbar .breadcrumb{flex:1;display:flex;align-items:center}
.subbar .quick{display:flex;gap:6px;flex:none;width:400px;max-width:42%}
.quick select{flex:none;width:98px;padding:8px 6px;font-size:11px;border-radius:7px;background:#f8fafc;color:#51637b}
.quick .search{height:35px}
.quick-pop{max-height:70vh;overflow:auto;left:auto;right:0;width:440px;max-width:90vw}
.pop-group{padding:8px 16px 5px;font-size:10px;color:#93a2b6;background:#fafbfd;border-bottom:1px solid #f1f4f8;letter-spacing:.3px}
.pop-item.more{background:#f7faff;color:#2859c5}
.pop-item.more svg{width:14px;height:14px}

/* ---------- 抽屉：可以一层层点进去，关掉一层回到上一层 ---------- */
.drawer.wide{width:1010px;max-width:calc(100vw - 60px)}
.drawer .modal-head h2{display:flex;align-items:center;gap:8px}
.drawer-up{background:#f1f4f8;border-radius:6px;width:26px;height:26px;display:inline-flex;align-items:center;justify-content:center;color:#51637b}
.drawer-up svg{width:14px;height:14px}
.drawer-crumbs{flex:none;display:flex;align-items:center;gap:7px;flex-wrap:wrap;padding:9px 25px;background:#f7f9fc;border-bottom:1px solid var(--line);font-size:11px;color:#8a98ab}
.drawer-crumbs>button:not(.text-btn){background:none;padding:0;color:#3565c9;font-size:11px}
.drawer-crumbs>button:not(.text-btn):hover{text-decoration:underline}
.drawer-crumbs svg{width:11px;height:11px;color:#c2cbd7}
.drawer-crumbs strong{color:#3f556f;font-weight:600}
.drawer-crumbs .text-btn{margin-left:auto;font-size:11px}
.sub-title{display:flex;align-items:center;gap:10px}
.sub-right{font-weight:400;font-size:11px;color:#94a0b1;margin-left:auto}
.sub-title .badge{font-weight:400}

/* ---------- 表格：选列、固定身份列、完整值复制 ---------- */
.cols-wrap{position:relative;margin-left:14px;display:inline-block}
.cols-wrap>.text-btn{display:inline-flex;align-items:center;gap:5px;font-size:11px;color:#6883b7}
.cols-wrap svg{width:13px;height:13px}
.cols-pop{bottom:26px;left:0;width:230px;padding:10px 14px;display:flex;flex-direction:column;gap:7px;overflow:visible}
.cols-pop label{display:flex;align-items:center;gap:8px;font-size:12px;color:#51637b}
.cols-pop small{font-size:10px;color:#9aa7b9;line-height:1.6;border-top:1px solid #eef2f6;padding-top:8px;margin-top:2px}
th.fix,td.fix{position:sticky;left:0;z-index:1;box-shadow:1px 0 0 #eef2f6}
td.fix{background:#fff}
tr.fresh td.fix{background:#f2f7ff}
tr.stale td{color:#9aa6b6}
tr.stale td.fix{background:#fff}
.clip{vertical-align:middle}
.pre{white-space:pre}
.copy-btn svg{width:13px;height:13px}
.table-wrap td.wrap{min-width:200px;white-space:normal;line-height:1.6}

/* ---------- 状态标签：都带文字 ---------- */
.badge.violet{background:#f3efff;color:#7a5fc6}
.badge.pres{gap:6px}
.pres-dot{width:6px;height:6px;border-radius:50%;background:#b3bdcb;display:inline-block}
.badge.pres.green .pres-dot{background:#2fae8b}
.badge.pres.amber .pres-dot{background:#dba23a}
.badge.pres.violet .pres-dot{background:#8f76d8}
.code-tag{font-family:Consolas,"Cascadia Code",monospace;font-size:10px;background:#f4f1f1;color:#a2555c;border:1px solid #efdfe0;border-radius:4px;padding:1px 5px;white-space:nowrap}
.bill{font-size:11px;color:#6b7c93}
.chips-line{display:inline-flex;gap:3px;flex-wrap:wrap;margin-top:2px}
.chip-st{font-style:normal;font-size:10px;line-height:1;padding:3px 5px;border-radius:4px;background:#f1f4f8;color:#9aa6b6;border:1px solid #e7ecf2;white-space:nowrap;max-width:92px;overflow:hidden;text-overflow:ellipsis}
.chip-st.green{background:#edf8f4;color:#248b72;border-color:#d3eee5}
.chip-st.red{background:#fff0f1;color:#c0666d;border-color:#f6d9db}
.chip-st.amber{background:#fff7e7;color:#b58b3e;border-color:#f3e3bd}
.chip-st.blue{background:#edf3ff;color:#4674d0;border-color:#d5e2fb}

/* ---------- 实时视图顶上的一条 ---------- */
.live-bar{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:10px 16px;margin-bottom:18px;border:1px solid #dfe8f5;border-radius:9px;background:#f8fbff;font-size:12px;color:#5d6f88}
.live-bar .status-tag{display:inline-flex;color:#3f8f79;font-weight:600}
.live-bar.paused{background:#fffaf0;border-color:#f3dfb4}
.live-bar.paused .status-tag{color:#b58b3e}
.live-bar.paused .status-tag .dot{animation:none;background:#dba23a}
.live-new b{color:#b0742a}
.live-note{flex:1;min-width:260px;font-size:11px;color:#94a0b1;line-height:1.6}
.live-bar .btn svg{width:13px;height:13px}

/* ---------- 几样互不相干的状态并排放 ---------- */
.tri{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:4px 0 16px}
.tri>div{border:1px solid #e4ebf5;border-radius:9px;background:#f7f9fc;padding:13px 15px}
.tri small{font-size:11px;color:#8a98ab}
.tri strong{display:block;font-size:14px;color:#2f4a6b;margin:7px 0 6px;font-weight:600}
.tri p{font-size:11px;color:#8a98ab;line-height:1.6}
.mini.as-btn{text-align:left;cursor:pointer}
.mini.as-btn:hover,.mini.as-btn.on{border-color:#a9c1f5;background:#f1f6ff}
.view-tabs .tabs,.profile-tabs{border-bottom:1px solid #e5eaf2;margin-bottom:20px;gap:22px}
.view-tabs .tab,.profile-tabs .tab{padding-top:4px}

/* ---------- 时间线 ---------- */
.tl{list-style:none;margin:0 0 6px;padding:0}
.tl-item{display:grid;grid-template-columns:18px minmax(0,1fr);gap:10px;position:relative;padding-bottom:14px}
.tl-item:not(:last-child)::before{content:"";position:absolute;left:5px;top:16px;bottom:0;width:2px;background:#e6ebf2}
.tl-dot{width:12px;height:12px;border-radius:50%;background:#fff;border:2px solid #c9d2de;margin-top:3px;position:relative}
.tl-item.green .tl-dot{border-color:#3fbf9a;background:#3fbf9a}
.tl-item.red .tl-dot{border-color:#d9707a;background:#d9707a}
.tl-item.amber .tl-dot{border-color:#dba23a;background:#fff}
.tl-item.blue .tl-dot{border-color:#5786ed;background:#fff;box-shadow:0 0 0 3px #5786ed22}
.tl-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:12px}
.tl-head strong{color:#34506f;font-weight:600}
.tl-item.idle .tl-head strong{color:#9aa6b6;font-weight:500}
.tl-time{margin-left:auto;font-size:11px;color:#8a98ab;font-variant-numeric:tabular-nums}
.tl-why{font-size:11px;color:#b0666c;margin-top:5px;line-height:1.6}
.tl-note{font-size:11px;color:#94a0b1;margin-top:5px;line-height:1.6}
.tl-rows{list-style:none;margin:8px 0 0;padding:0;border:1px solid #edf1f6;border-radius:8px;background:#fafbfd}
.tl-rows li{display:grid;grid-template-columns:minmax(0,1fr) auto 70px minmax(110px,auto);gap:10px;align-items:center;padding:7px 12px;font-size:11px;color:#6b7c93;border-bottom:1px solid #f0f3f7}
.tl-rows li:last-child{border-bottom:0}
.tl-rows em{font-style:normal;color:#8a98ab;text-align:right}
.tl-rows small{font-size:10px;color:#a3adbb;text-align:right}
.proof{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.proof li{display:flex;align-items:center;gap:9px;font-size:12px;color:#51637b;border:1px solid #e7ecf2;border-radius:8px;padding:9px 12px}
.proof li svg{width:14px;height:14px}
.proof li.has svg{color:#2fae8b}
.proof li.no{background:#fffaf0;border-color:#f3dfb4}
.proof li.no svg{color:#c99a45}
.proof small{margin-left:auto;font-size:11px;color:#94a0b1}

/* ---------- SMART 对照 ---------- */
.smart-heads{display:grid;gap:5px;margin-bottom:10px;font-size:12px;color:#6b7c93}
.smart-heads b{display:inline-block;min-width:74px;color:#3f556f;font-weight:600}
table.smart td,table.smart th{padding:8px 12px}
table.smart td small{margin-top:2px}

/* ---------- 技术版本卡片 ---------- */
.tech-card{display:flex;gap:12px;border:1px solid #dfe8f5;border-radius:9px;background:#f8fbff;padding:13px 15px;margin-bottom:8px}
.tech-card>svg{color:#5d83d6;margin-top:1px}
.tech-card strong{font-size:12px;color:#34506f;font-weight:600;display:block}
.tech-card p{font-size:11px;color:#7d8fa7;margin-top:6px;line-height:1.7}
.tech-card.none{background:#f7f9fc;border-color:#e7ecf2}
.tech-card.none>svg{color:#b3bdcb}

/* ---------- 用户完整档案 ---------- */
.profile-head{background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow);padding:18px 22px;margin-bottom:18px;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px 20px;align-items:center}
.profile-id{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.profile-id strong{font-size:19px;color:#253d5b}
.profile-id .mono{font-size:13px;color:#7d8fa7}
.profile-head p{grid-column:1;font-size:12px;color:#7d8fa7;line-height:1.7}
.profile-actions{grid-column:2;grid-row:1 / span 2;display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.profile-tabs{overflow-x:auto;scrollbar-width:thin;padding-bottom:1px}
.profile-tabs .tab{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
.profile-tabs .tab i{font-style:normal;font-size:10px;background:#eef1f6;color:#7b8ba1;border-radius:8px;padding:1px 6px}
.profile-tabs .tab.active i{background:#e3ecff;color:#3565c9}

/* ---------- 其他小件 ---------- */
.fold{border:1px solid #e7ecf2;border-radius:9px;padding:0 15px;margin:10px 0}
.fold summary{cursor:pointer;font-size:12px;color:#3f556f;padding:12px 0;font-weight:600}
.fold[open] summary{border-bottom:1px solid #eef2f6}
.fold .summary-box{margin:12px 0}
.mark-row{display:flex;gap:8px;flex-wrap:wrap}
.note-list{list-style:none;margin:14px 0 0;padding:0;display:grid;gap:8px}
.note-list li{border-left:3px solid #d5e2fb;background:#f8fbff;padding:9px 12px;font-size:12px;color:#51637b;line-height:1.6}
.note-list small{display:block;color:#94a0b1;margin-bottom:3px}
.scan-map{position:relative;height:18px;border-radius:5px;background:#f1f4f8;border:1px solid #e3e9f1;overflow:hidden;margin-top:14px}
.scan-map .done{position:absolute;left:0;top:0;bottom:0;background:#b9d4f7}
.scan-map b{position:absolute;top:0;bottom:0;width:2px}
.scan-map b.err,.scan-map-legend b.err{background:#d9606b}
.scan-map b.slow,.scan-map-legend b.slow{background:#dba23a}
.scan-map-legend{display:flex;gap:16px;flex-wrap:wrap;font-size:11px;color:#8a98ab;margin:7px 0 0}
.scan-map-legend span{display:inline-flex;align-items:center;gap:6px}
.scan-map-legend i{width:14px;height:9px;border-radius:2px;display:inline-block;border:1px solid #e3e9f1}
.scan-map-legend i.done{background:#b9d4f7}
.scan-map-legend i.blank{background:#f1f4f8}
.scan-map-legend b{width:3px;height:11px;display:inline-block}
.cap-groups{display:grid;gap:10px}
.cap-groups small{font-size:11px;color:#8a98ab}
.cap-groups p{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.cap{font-size:11px;border-radius:5px;padding:4px 8px;border:1px solid #e7ecf2;background:#f7f9fc;color:#9aa6b6;white-space:nowrap}
.cap.has{background:#edf8f4;border-color:#d3eee5;color:#248b72}
.cap.no{text-decoration:none;color:#a3adbb}
.cap.need{background:#fff7e7;border-color:#f3e3bd;color:#b0742a}
.search-page .search-line{display:flex;gap:8px;align-items:stretch;flex-wrap:wrap}
.search-page .search-line select{font-size:12px;padding:9px 10px}
.search-page .search.big{flex:1;min-width:280px;max-width:none}
.search-page .search.big input{border:0;background:none;box-shadow:none;width:100%;padding:11px 0}
.ui-demo{display:flex;align-items:center;gap:8px;font-size:11px;color:#8a98ab}
.ui-demo select{font-size:11px;padding:6px 8px}
.ui-state{display:flex;align-items:center;gap:12px;border:1px solid #e3e9f1;border-radius:9px;padding:13px 16px;font-size:12px;color:#5d6f88;background:#fff;margin-bottom:14px}
.ui-state svg{width:17px;height:17px;flex:none}
.ui-state span{flex:1;line-height:1.6}
.ui-state.error{border-color:#f3cfd2;background:#fff7f7;color:#a4545b}
.ui-state.partial{border-color:#f3dfb4;background:#fffaf0;color:#8d733c}
.spin{width:16px;height:16px;border-radius:50%;border:2px solid #cfdcf5;border-top-color:#4779e1;animation:qf-spin .9s linear infinite;flex:none}
@keyframes qf-spin{to{transform:rotate(360deg)}}
.skeleton{display:grid;gap:10px}
.skeleton i{height:44px;border-radius:8px;background:linear-gradient(90deg,#eef2f7 25%,#f7f9fc 50%,#eef2f7 75%);background-size:200% 100%;animation:qf-shine 1.4s linear infinite}
@keyframes qf-shine{to{background-position:-200% 0}}
.demo-btns{display:flex;gap:7px;flex-wrap:wrap;margin:8px 0 4px}
.demo-panel{width:470px}
.demo-tabs button{padding:7px 2px}
.demo-block .field.wide select{max-width:100%}

/* ---------- 技术分支 ---------- */
.duty-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.duty{border:1px solid #e4ebf5;border-radius:10px;padding:16px 18px;background:#fbfcfe}
.duty h4{font-size:13px;color:#2f4a6b;display:flex;align-items:center;gap:8px}
.duty h4 svg{width:16px;height:16px;color:#5d83d6}
.duty ul{margin:10px 0 0;padding-left:16px;font-size:12px;color:#6b7c93;line-height:1.9}
.srv-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:14px}
.srv{border:1px dashed #cfd9e8;border-radius:9px;padding:12px 14px;font-size:12px;color:#6b7c93;line-height:1.7}
.srv strong{display:flex;justify-content:space-between;align-items:center;color:#3f556f;font-size:12px;margin-bottom:4px}
.state-row{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px;margin-bottom:18px}
.state-box{background:#fff;border:1px solid var(--line);border-radius:10px;padding:14px 16px;text-align:left;box-shadow:var(--shadow)}
.state-box:hover{border-color:#a9c1f5}
.state-box small{font-size:11px;color:#8a98ab;display:flex;align-items:center;gap:6px}
.state-box strong{display:block;font-size:24px;color:#253d5b;margin-top:8px;font-weight:600}
.state-box p{font-size:10px;color:#a3adbb;margin-top:6px;line-height:1.5}
.quick-links{display:flex;gap:10px;flex-wrap:wrap}
.wiz-steps{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px;margin-bottom:18px}
.wiz-step{display:flex;align-items:center;gap:8px;background:#fff;border:1px solid var(--line);border-radius:9px;padding:10px 11px;text-align:left;font-size:12px;color:#7d8fa7;min-width:0}
.wiz-step i{font-style:normal;flex:none;width:21px;height:21px;border-radius:50%;background:#eef1f6;color:#7b8ba1;display:inline-flex;align-items:center;justify-content:center;font-size:11px}
.wiz-step span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wiz-step.on{border-color:#4779e1;color:#2859c5;font-weight:600;box-shadow:0 0 0 3px #4779e11a}
.wiz-step.on i{background:#4779e1;color:#fff}
.wiz-step.ok i{background:#dff3ec;color:#248b72}
.wiz-step.bad i{background:#fde9ea;color:#c0666d}
.wiz-step:disabled{opacity:.55}
.wiz-foot{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-top:18px;padding-top:16px;border-top:1px solid #edf0f5}
.wiz-foot .why{font-size:11px;color:#b0742a;flex:1;text-align:right;line-height:1.6}
.field .err{font-size:11px;color:#c0666d}
.field.bad input,.field.bad select{border-color:#e3a3a8;background:#fffafa}
.field small{font-size:11px;color:#94a0b1;line-height:1.6}
.field .unit{display:flex;align-items:center;gap:8px}
.field .unit input{flex:1}
.field .unit em{font-style:normal;font-size:11px;color:#94a0b1;white-space:nowrap}
.form-grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}
.form-grid .full{grid-column:1 / -1}
.pick-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:10px}
.pick-card{border:1px solid #e1e7f0;border-radius:9px;padding:12px 14px;text-align:left;background:#fff;font-size:12px;color:#6b7c93;line-height:1.6;display:block;width:100%}
.pick-card strong{display:flex;justify-content:space-between;gap:8px;align-items:center;color:#34506f;font-size:12px;margin-bottom:4px}
.pick-card.on{border-color:#4779e1;background:#f4f8ff;box-shadow:0 0 0 3px #4779e11a}
.pick-card:disabled{opacity:.6;background:#f7f9fc}
.lock-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:8px}
.lock{display:flex;align-items:center;gap:8px;border:1px solid #e7ecf2;border-radius:8px;padding:9px 12px;font-size:12px;color:#6b7c93;background:#f7f9fc}
.lock svg{width:14px;height:14px;color:#8a98ab}
.lock em{margin-left:auto;font-style:normal;font-size:10px;color:#9aa6b6}
.stage-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
@media(min-width:1750px){.stage-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}
.stage{border:1px solid #e1e7f0;border-radius:10px;background:#fff;overflow:hidden}
.stage-top{display:flex;align-items:center;gap:10px;padding:12px 15px;background:#f7f9fc;border-bottom:1px solid #edf0f5}
.stage-top i{font-style:normal;width:26px;height:26px;border-radius:7px;background:#2c5fd4;color:#fff;display:inline-flex;align-items:center;justify-content:center;font-weight:600;font-size:13px;flex:none}
.stage-top strong{font-size:13px;color:#2f4a6b}
.stage-top small{margin-left:auto;font-size:11px;color:#8a98ab;text-align:right}
.stage dl{margin:0;padding:6px 15px 12px;display:grid;grid-template-columns:86px minmax(0,1fr);gap:0 12px}
.stage dt{font-size:11px;color:#8a98ab;padding:7px 0;border-bottom:1px solid #f3f5f8}
.stage dd{margin:0;font-size:12px;color:#51637b;padding:7px 0;border-bottom:1px solid #f3f5f8;line-height:1.65}
.stage .flag{margin:0 15px 12px;border:1px solid #f3dfb4;background:#fffaf0;border-radius:8px;padding:9px 12px;font-size:11px;color:#8d733c;line-height:1.6}
.stage .flag.off{border-color:#e7ecf2;background:#f7f9fc;color:#8a98ab}
.flow5{display:flex;align-items:stretch;gap:8px;flex-wrap:wrap}
.flow5>div{flex:1;min-width:150px;border:1px solid #e1e7f0;border-radius:9px;padding:11px 13px;font-size:12px;color:#6b7c93;line-height:1.65;background:#fbfcfe}
.flow5 strong{display:block;color:#34506f;font-size:12px;margin-bottom:4px}
.flow5>span{align-self:center;color:#b3bdcb;font-size:16px}
.diff-view{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.diff-side{border:1px solid #e1e7f0;border-radius:9px;padding:13px 15px}
.diff-side h4{font-size:12px;color:#34506f;margin-bottom:8px}
.byte-bar{position:relative;height:22px;border-radius:5px;background:#f1f4f8;border:1px solid #e3e9f1;overflow:hidden;margin:10px 0 6px}
.byte-bar .allow{position:absolute;top:0;bottom:0;background:#dbe9fb}
.byte-bar .chg{position:absolute;top:4px;bottom:4px;background:#3fbf9a;min-width:2px}
.byte-bar .chg.out{background:#d9606b;top:0;bottom:0}
.layers{display:grid;gap:8px}
.layer{display:grid;grid-template-columns:26px 130px minmax(0,1fr) auto;gap:10px;align-items:start;border:1px solid #e7ecf2;border-radius:8px;padding:10px 13px;font-size:12px;color:#51637b;line-height:1.6}
.layer i{font-style:normal;width:22px;height:22px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:12px;background:#eef1f6;color:#8a98ab}
.layer.pass i{background:#dff3ec;color:#248b72}
.layer.fail{border-color:#f3cfd2;background:#fffafa}
.layer.fail i{background:#fde9ea;color:#c0666d}
.layer.todo{border-color:#f3dfb4;background:#fffdf7}
.layer.todo i{background:#fdf1d6;color:#b0742a}
.layer strong{color:#34506f;font-weight:600}
.gate-list{display:grid;gap:7px;margin:0;padding:0;list-style:none}
.gate-list li{display:flex;gap:10px;align-items:flex-start;border:1px solid #f3cfd2;background:#fffafa;border-radius:8px;padding:10px 13px;font-size:12px;color:#8a4a50;line-height:1.6}
.gate-list li svg{width:15px;height:15px;color:#d9707a;margin-top:2px}
.gate-list li span{flex:1}
.gate-list.warn li{border-color:#f3dfb4;background:#fffaf0;color:#8d733c}
.gate-list.warn li svg{color:#dba23a}
.gate-ok{display:flex;gap:10px;align-items:center;border:1px solid #cfeadf;background:#f3fbf8;border-radius:8px;padding:10px 13px;font-size:12px;color:#2f7d68}
.gate-ok svg{width:15px;height:15px}
table.matrix td,table.matrix th{padding:9px 10px;text-align:center;white-space:nowrap}
table.matrix td:first-child,table.matrix th:first-child{text-align:left;position:sticky;left:0;background:#fff;z-index:1}
table.matrix th:first-child{background:#fafbfd}
table.matrix .yes{color:#248b72;font-weight:600}
table.matrix .no{color:#c3cbd6}
table.matrix .grp td{background:#f7f9fc;color:#8a98ab;font-size:11px;text-align:left}
.rev-line{display:grid;gap:0;margin:6px 0}
.rev-ev{display:grid;grid-template-columns:150px 18px minmax(0,1fr);gap:10px;font-size:12px;color:#51637b;position:relative;padding-bottom:13px}
.rev-ev time{font-size:11px;color:#8a98ab;text-align:right;font-variant-numeric:tabular-nums;padding-top:1px}
.rev-ev::before{content:"";position:absolute;left:165px;top:15px;bottom:0;width:2px;background:#e6ebf2}
.rev-ev:last-child::before{display:none}
.rev-ev b{width:12px;height:12px;border-radius:50%;border:2px solid #5786ed;background:#fff;margin-top:3px}
.rev-ev.pub b{background:#5786ed}
.rev-ev.task b{border-color:#3fbf9a}
.rev-ev p{line-height:1.6}
.rev-ev small{display:block;font-size:11px;color:#94a0b1;margin-top:3px}
.kv2{display:grid;grid-template-columns:150px minmax(0,1fr);gap:0 16px;font-size:12px;margin:6px 0}
.kv2 dt{color:#8695a9;padding:8px 0;border-bottom:1px solid #f1f4f8}
.kv2 dd{margin:0;color:#3f556f;padding:8px 0;border-bottom:1px solid #f1f4f8;line-height:1.65}
.cmp td.diff{background:#fffaf0}
.cmp td:first-child{color:#8a98ab;white-space:nowrap}
.scope-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(285px,1fr));gap:7px;max-height:230px;overflow:auto;border:1px solid #e7ecf2;border-radius:8px;padding:10px}
.scope-list label{display:flex;gap:8px;align-items:center;font-size:12px;color:#51637b}
.scope-list label.off{color:#a3adbb}
.scope-list small{font-size:10px;color:#a3adbb;margin-left:auto;white-space:nowrap;flex-shrink:0}
.radio-inline{display:flex;gap:18px;flex-wrap:wrap;font-size:12px;color:#51637b}
.radio-inline label{display:flex;gap:7px;align-items:center}
.match-box{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:14px;align-items:start}
.match-result{border:1px solid #e1e7f0;border-radius:9px;padding:13px 15px;font-size:12px;color:#51637b;line-height:1.7;background:#fbfcfe}
.match-result strong{display:flex;align-items:center;gap:8px;color:#34506f;margin-bottom:6px}
.sim{font-size:10px;color:#9a7b3c;background:#fff7e7;border:1px solid #f3e3bd;border-radius:4px;padding:1px 6px;font-weight:400;white-space:nowrap}

@media(max-width:1500px){.state-row{grid-template-columns:repeat(3,minmax(0,1fr))}.wiz-steps{grid-template-columns:repeat(4,minmax(0,1fr))}.duty-grid{grid-template-columns:minmax(0,1fr)}.srv-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.match-box{grid-template-columns:minmax(0,1fr)}.form-grid.three{grid-template-columns:repeat(2,minmax(0,1fr))}}

.stat-value .txt{font-size:17px;line-height:1.4;display:inline-block}

/* 表格里几个标签上下排 */
.tag-stack{display:inline-flex;flex-direction:column;align-items:flex-start;gap:4px}
/* 表格里太长的名称截断，鼠标停上去看全名 */
.link.clip{display:block;max-width:215px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left}
/* 对照表里的长内容可以换行，空格照原样保留 */
.cmp td.pre{white-space:pre-wrap;overflow-wrap:anywhere}
.cmp td:not(:first-child):not(.pre){white-space:normal;line-height:1.6}
