.mdb-app /* 智慧后勤精细化管理多维表格系统 — 样式 */ :root{
  --bg:#f3f6f8; --panel:#fff; --panel-2:#f8fafb; --panel-3:#f1f5f7;
  --line:#e4eaef; --line-2:#d5dfe6;
  --text:#172633; --text-2:#5c6d7c; --text-3:#93a3b0;
  --brand:#0d8c80; --brand-d:#0a6c63; --brand-soft:#e7f5f3; --brand-soft2:#d3ece8;
  --accent:#2f6fed; --accent-soft:#eaf1fe;
  --ok:#159a6b; --ok-soft:#e4f6ee;
  --warn:#d98713; --warn-soft:#fdf2e0;
  --danger:#d4514c; --danger-soft:#fdebea;
  --purple:#7256c8; --purple-soft:#f0ecfb;
  --pink:#c64f86; --pink-soft:#fbeaf2;
  --shadow:0 1px 2px rgba(16,40,60,.05),0 8px 28px rgba(16,40,60,.07);
  --radius:10px;
}
.mdb-app *{box-sizing:border-box}
.mdb-app,.mdb-app{margin:0;padding:0;height:100%}
.mdb-app{
  font-family:"Inter","Segoe UI","PingFang SC","Microsoft YaHei",system-ui,sans-serif;
  background:var(--bg); color:var(--text); font-size:13px; line-height:1.55;
  -webkit-font-smoothing:antialiased; overflow:hidden;
}
.mdb-app button,.mdb-app input,.mdb-app select,.mdb-app textarea{font-family:inherit;font-size:inherit;color:inherit}
.mdb-app button{cursor:pointer;border:none;background:none}
.mdb-app a{color:var(--brand);text-decoration:none}
.mdb-app svg{display:block}
.mdb-app .num{font-variant-numeric:tabular-nums;font-feature-settings:"tnum"}
.mdb-app .mono{font-family:"SFMono-Regular",Consolas,"Liberation Mono",monospace}
.mdb-app /* ---------------- 布局 ---------------- */ .app{display:flex;height:100vh;overflow:hidden}
.mdb-app .sidebar{width:246px;flex:none;background:var(--panel);border-right:1px solid var(--line);display:flex;flex-direction:column;z-index:5}
.mdb-app .brand-box{height:66px;flex:none;display:flex;align-items:center;gap:11px;padding:0 18px;border-bottom:1px solid var(--line)}
.mdb-app .brand-logo{width:34px;height:34px;border-radius:9px;background:linear-gradient(135deg,#12a394,#0a6c63);display:flex;align-items:center;justify-content:center;color:#fff;box-shadow:0 4px 12px rgba(13,140,128,.28)}
.mdb-app .brand-name{font-size:13.5px;font-weight:700;letter-spacing:.2px;line-height:1.25}
.mdb-app .brand-sub{font-size:10.5px;color:var(--text-3);letter-spacing:.3px}
.mdb-app .nav{flex:1;overflow-y:auto;padding:12px 10px 20px}
.mdb-app .nav-label{font-size:10.5px;color:var(--text-3);font-weight:700;letter-spacing:1.2px;padding:8px 10px 6px;text-transform:uppercase}
.mdb-app .nav-item{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:8px;color:var(--text-2);cursor:pointer;margin-bottom:2px;user-select:none;transition:.13s}
.mdb-app .nav-item:hover{background:var(--panel-3);color:var(--text)}
.mdb-app .nav-item.active{background:var(--brand-soft);color:var(--brand-d);font-weight:600}
.mdb-app .nav-item .ni-icon{width:17px;height:17px;flex:none;opacity:.85}
.mdb-app .nav-item.active .ni-icon{opacity:1}
.mdb-app .nav-item .ni-name{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mdb-app .nav-item .ni-count{font-size:10.5px;background:var(--panel-3);color:var(--text-3);padding:1px 6px;border-radius:9px;min-width:22px;text-align:center}
.mdb-app .nav-item.active .ni-count{background:#fff;color:var(--brand-d)}
.mdb-app .nav-item .ni-arrow{width:12px;height:12px;transition:.18s;opacity:.5}
.mdb-app .nav-item.open .ni-arrow{transform:rotate(90deg)}
.mdb-app .subnav{margin:2px 0 6px 20px;padding-left:9px;border-left:1px solid var(--line)}
.mdb-app .subnav-item{display:flex;align-items:center;gap:7px;padding:6px 9px;border-radius:7px;color:var(--text-2);cursor:pointer;font-size:12.5px;margin-bottom:1px}
.mdb-app .subnav-item:hover{background:var(--panel-3)}
.mdb-app .subnav-item.active{background:var(--brand-soft2);color:var(--brand-d);font-weight:600}
.mdb-app .subnav-item .sn-dot{width:5px;height:5px;border-radius:50%;background:var(--line-2);flex:none}
.mdb-app .subnav-item.active .sn-dot{background:var(--brand)}
.mdb-app .subnav-item .sn-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mdb-app .subnav-item .sn-count{font-size:10.5px;color:var(--text-3)}
.mdb-app .side-foot{flex:none;padding:11px 16px;border-top:1px solid var(--line);font-size:11px;color:var(--text-3)}
.mdb-app .side-foot .sf-row{display:flex;justify-content:space-between;margin-bottom:3px}
.mdb-app .side-foot b{color:var(--text-2);font-weight:600}
.mdb-app .main{flex:1;min-width:0;display:flex;flex-direction:column}
.mdb-app .topbar{height:66px;flex:none;background:var(--panel);border-bottom:1px solid var(--line);display:flex;align-items:center;gap:14px;padding:0 20px}
.mdb-app .crumb{display:flex;align-items:center;gap:8px;min-width:0;flex:1}
.mdb-app .crumb .c-main{font-size:16px;font-weight:700;white-space:nowrap}
.mdb-app .crumb .c-sep{color:var(--line-2)}
.mdb-app .crumb .c-sub{font-size:12.5px;color:var(--text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mdb-app .badge{display:inline-flex;align-items:center;gap:4px;font-size:10.5px;padding:2px 8px;border-radius:20px;font-weight:600;white-space:nowrap}
.mdb-app .badge.real{background:var(--ok-soft);color:var(--ok)}
.mdb-app .badge.demo{background:var(--warn-soft);color:var(--warn)}
.mdb-app .badge.rebuilt{background:var(--purple-soft);color:var(--purple)}
.mdb-app .badge.info{background:var(--accent-soft);color:var(--accent)}
.mdb-app .badge.plain{background:var(--panel-3);color:var(--text-2)}
.mdb-app .top-actions{display:flex;align-items:center;gap:8px;flex:none}
.mdb-app .search-box{display:flex;align-items:center;gap:7px;background:var(--panel-2);border:1px solid var(--line);border-radius:8px;padding:0 10px;height:34px;width:230px;transition:.15s}
.mdb-app .search-box:focus-within{border-color:var(--brand);background:#fff;box-shadow:0 0 0 3px var(--brand-soft)}
.mdb-app .search-box svg{color:var(--text-3);flex:none}
.mdb-app .search-box input{border:none;outline:none;background:transparent;flex:1;min-width:0;font-size:12.5px}
.mdb-app .btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:34px;padding:0 12px;border-radius:8px;border:1px solid var(--line-2);background:#fff;color:var(--text-2);font-size:12.5px;font-weight:500;white-space:nowrap;transition:.13s}
.mdb-app .btn:hover{border-color:var(--brand);color:var(--brand-d);background:var(--brand-soft)}
.mdb-app .btn.primary{background:var(--brand);border-color:var(--brand);color:#fff;box-shadow:0 2px 7px rgba(13,140,128,.22)}
.mdb-app .btn.primary:hover{background:var(--brand-d);border-color:var(--brand-d);color:#fff}
.mdb-app .btn.ghost{border-color:transparent;background:transparent}
.mdb-app .btn.ghost:hover{background:var(--panel-3)}
.mdb-app .btn.sm{height:28px;padding:0 9px;font-size:12px;border-radius:6px}
.mdb-app .btn.icon{width:34px;padding:0}
.mdb-app .btn.danger:hover{border-color:var(--danger);color:var(--danger);background:var(--danger-soft)}
.mdb-app .btn[disabled]{opacity:.45;cursor:not-allowed}
.mdb-app .viewtabs{display:flex;gap:2px;background:var(--panel-3);padding:3px;border-radius:8px}
.mdb-app .viewtab{display:flex;align-items:center;gap:5px;height:27px;padding:0 11px;border-radius:6px;font-size:12.5px;color:var(--text-2);font-weight:500}
.mdb-app .viewtab.active{background:#fff;color:var(--brand-d);box-shadow:0 1px 3px rgba(16,40,60,.1);font-weight:600}
.mdb-app .toolbar{flex:none;background:var(--panel);border-bottom:1px solid var(--line);padding:9px 20px;display:flex;align-items:center;gap:9px;flex-wrap:wrap;min-height:50px}
.mdb-app .toolbar .tb-sep{width:1px;height:20px;background:var(--line);margin:0 2px}
.mdb-app .toolbar .tb-info{font-size:12px;color:var(--text-3);margin-left:auto;white-space:nowrap}
.mdb-app .filter-chip{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 6px 0 10px;border:1px solid var(--brand-soft2);background:var(--brand-soft);border-radius:7px;font-size:12px;color:var(--brand-d);white-space:nowrap}
.mdb-app .filter-chip select{border:none;background:transparent;outline:none;font-size:12px;color:var(--brand-d);max-width:130px}
.mdb-app .filter-chip input{border:none;background:transparent;outline:none;width:110px;font-size:12px;color:var(--brand-d)}
.mdb-app .filter-chip input::placeholder{color:#7fb6b0}
.mdb-app .filter-chip .fc-x{width:18px;height:18px;border-radius:4px;display:flex;align-items:center;justify-content:center;color:var(--brand-d);opacity:.6}
.mdb-app .filter-chip .fc-x:hover{background:var(--brand-soft2);opacity:1}
.mdb-app .filter-add{border:1px dashed var(--line-2);color:var(--text-2)}
.mdb-app .notice{flex:none;display:flex;align-items:center;gap:9px;background:linear-gradient(90deg,#fff8ea,#fffdf8);border-bottom:1px solid #f2e2c2;padding:7px 20px;font-size:12px;color:#8a6318}
.mdb-app .notice b{color:#6d4b0c}
.mdb-app .notice .spacer{flex:1}
.mdb-app .notice button{font-size:12px;color:#9a6b12;text-decoration:underline;font-weight:600}
.mdb-app .notice.blank,.mdb-app .notice.cleared{background:#f0f9f5;border-bottom-color:#cdeadd;color:#1d7a5a}
.mdb-app .notice.blank .spacer,.mdb-app .notice.cleared .spacer{color:#bfe3d6}
.mdb-app .notice.blank button,.mdb-app .notice.cleared button{color:#1d7a5a}
.mdb-app .content{flex:1;overflow:auto;position:relative;scroll-behavior:smooth}
.mdb-app .pad{padding:18px 20px 28px}
.mdb-app .statusbar{flex:none;height:44px;background:var(--panel);border-top:1px solid var(--line);display:flex;align-items:center;gap:12px;padding:0 20px;font-size:12px;color:var(--text-2)}
.mdb-app .statusbar .sb-spacer{flex:1}
.mdb-app .pager{display:flex;align-items:center;gap:3px}
.mdb-app .pager button{min-width:28px;height:27px;border-radius:6px;border:1px solid var(--line);background:#fff;color:var(--text-2);font-size:12px}
.mdb-app .pager button:hover:not([disabled]){border-color:var(--brand);color:var(--brand)}
.mdb-app .pager button.cur{background:var(--brand);color:#fff;border-color:var(--brand)}
.mdb-app .pager button[disabled]{opacity:.4;cursor:not-allowed}
.mdb-app .pager select{height:27px;border:1px solid var(--line);border-radius:6px;background:#fff;padding:0 5px;font-size:12px}
.mdb-app /* ---------------- 表格 ---------------- */ .grid-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;box-shadow:0 1px 2px rgba(16,40,60,.03)}
.mdb-app .grid-scroll{overflow:auto;max-height:calc(100vh - 250px)}
.mdb-app table.grid{border-collapse:separate;border-spacing:0;width:max-content;min-width:100%;font-size:12.5px}
.mdb-app table.grid th{position:sticky;top:0;z-index:3;background:var(--panel-2);border-bottom:1px solid var(--line-2);border-right:1px solid var(--line);padding:0 11px;height:39px;text-align:left;font-weight:600;color:var(--text-2);white-space:nowrap;user-select:none}
.mdb-app table.grid th:hover{background:var(--panel-3)}
.mdb-app table.grid th .th-in{display:flex;align-items:center;gap:5px;cursor:pointer}
.mdb-app table.grid th .th-type{font-size:9.5px;color:var(--text-3);font-weight:500;opacity:.75}
.mdb-app table.grid th .sort-ind{color:var(--brand);font-size:10px}
.mdb-app table.grid td{border-bottom:1px solid var(--line);border-right:1px solid #f0f3f5;padding:0 11px;height:38px;white-space:nowrap;max-width:340px;overflow:hidden;text-overflow:ellipsis;vertical-align:middle}
.mdb-app table.grid tr:last-child td{border-bottom:none}
.mdb-app table.grid tbody tr:hover td{background:#f5fbfa}
.mdb-app table.grid tbody tr.sel td{background:var(--brand-soft)}
.mdb-app table.grid th.gutter,.mdb-app table.grid td.gutter{position:sticky;left:0;z-index:2;background:var(--panel-2);width:44px;min-width:44px;text-align:center;padding:0;color:var(--text-3);border-right:1px solid var(--line-2)}
.mdb-app table.grid th.gutter{z-index:4}
.mdb-app table.grid tbody tr:hover td.gutter{background:#edf7f5}
.mdb-app table.grid th.rowact,.mdb-app table.grid td.rowact{position:sticky;right:0;z-index:2;background:var(--panel-2);border-left:1px solid var(--line-2);text-align:center;padding:0 8px}
.mdb-app table.grid th.rowact{z-index:4}
.mdb-app table.grid tbody tr:hover td.rowact{background:#edf7f5}
.mdb-app .rowact-in{display:flex;gap:2px;opacity:.35;transition:.15s}
.mdb-app tr:hover .rowact-in{opacity:1}
.mdb-app .iconbtn{width:24px;height:24px;border-radius:5px;display:inline-flex;align-items:center;justify-content:center;color:var(--text-2)}
.mdb-app .iconbtn:hover{background:var(--brand-soft);color:var(--brand-d)}
.mdb-app .iconbtn.del:hover{background:var(--danger-soft);color:var(--danger)}
.mdb-app .cell-money{text-align:right;font-variant-numeric:tabular-nums;font-weight:500;color:#25405a}
.mdb-app .cell-num{text-align:right;font-variant-numeric:tabular-nums}
.mdb-app .cell-date{color:var(--text-2);font-variant-numeric:tabular-nums}
.mdb-app .cell-empty{color:var(--text-3)}
.mdb-app .cell-pk{font-weight:600;color:var(--brand-d)}
.mdb-app .cell-link{color:var(--accent);cursor:pointer;border-bottom:1px dashed rgba(47,111,237,.4)}
.mdb-app .cell-link:hover{background:var(--accent-soft)}
.mdb-app .chip{display:inline-flex;align-items:center;gap:4px;max-width:100%;padding:1px 8px;border-radius:5px;font-size:11.5px;font-weight:500;line-height:19px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mdb-app .chip:before{content:"";width:5px;height:5px;border-radius:50%;background:currentColor;flex:none;opacity:.8}
.mdb-app .chip.n{background:var(--panel-3);color:var(--text-2)}
.mdb-app .chip.ok{background:var(--ok-soft);color:var(--ok)}
.mdb-app .chip.warn{background:var(--warn-soft);color:var(--warn)}
.mdb-app .chip.danger{background:var(--danger-soft);color:var(--danger)}
.mdb-app .chip.info{background:var(--accent-soft);color:var(--accent)}
.mdb-app .chip.purple{background:var(--purple-soft);color:var(--purple)}
.mdb-app .chip.pink{background:var(--pink-soft);color:var(--pink)}
.mdb-app .chip.teal{background:var(--brand-soft);color:var(--brand-d)}
.mdb-app .group-row td{background:#eef5f7 !important;border-bottom:1px solid var(--line-2);font-weight:600;color:var(--text);height:34px;position:sticky;left:0}
.mdb-app .group-toggle{cursor:pointer;display:inline-flex;align-items:center;gap:7px}
.mdb-app .group-toggle .gt-arrow{transition:.15s;color:var(--text-3)}
.mdb-app .group-toggle.closed .gt-arrow{transform:rotate(-90deg)}
.mdb-app .group-count{font-size:11px;font-weight:500;color:var(--text-3);background:#fff;padding:1px 7px;border-radius:10px}
.mdb-app .group-sum{margin-left:auto;color:var(--text-2);font-weight:500;font-size:12px}
.mdb-app .empty{padding:64px 20px;text-align:center;color:var(--text-3)}
.mdb-app .empty .e-icon{width:52px;height:52px;border-radius:14px;background:var(--panel-3);display:flex;align-items:center;justify-content:center;margin:0 auto 14px;color:var(--text-3)}
.mdb-app .empty h3{margin:0 0 6px;font-size:14px;color:var(--text-2)}
.mdb-app .empty p{margin:0 0 16px;font-size:12.5px}
.mdb-app /* ---------------- 看板 ---------------- */ .board{display:flex;gap:14px;align-items:flex-start;overflow-x:auto;padding-bottom:12px;min-height:420px}
.mdb-app .board-col{width:272px;flex:none;background:var(--panel-2);border:1px solid var(--line);border-radius:10px;display:flex;flex-direction:column;max-height:calc(100vh - 250px)}
.mdb-app .board-col.dragover{background:var(--brand-soft);border-color:var(--brand)}
.mdb-app .bc-head{padding:11px 13px 9px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:8px;flex:none}
.mdb-app .bc-dot{width:8px;height:8px;border-radius:50%;flex:none}
.mdb-app .bc-name{font-weight:650;font-size:12.5px;flex:1}
.mdb-app .bc-count{font-size:11px;color:var(--text-2);background:#fff;border:1px solid var(--line);padding:1px 7px;border-radius:10px}
.bc-.mdb-app{padding:9px;overflow-y:auto;display:flex;flex-direction:column;gap:8px;min-height:70px}
.mdb-app .bc-card{background:#fff;border:1px solid var(--line);border-radius:8px;padding:10px 11px;cursor:grab;box-shadow:0 1px 2px rgba(16,40,60,.04);transition:.13s}
.mdb-app .bc-card:hover{border-color:var(--brand);box-shadow:var(--shadow);transform:translateY(-1px)}
.mdb-app .bc-card.dragging{opacity:.4}
.mdb-app .bc-title{font-weight:650;font-size:12.5px;margin-bottom:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mdb-app .bc-code{font-size:10.5px;color:var(--text-3);margin-bottom:8px}
.mdb-app .bc-meta{display:flex;flex-wrap:wrap;gap:5px 10px;font-size:11px;color:var(--text-2)}
.mdb-app .bc-meta span{display:inline-flex;align-items:center;gap:3px}
.mdb-app .bc-foot{display:flex;justify-content:space-between;align-items:center;margin-top:9px;padding-top:8px;border-top:1px dashed var(--line);font-size:11px;color:var(--text-3)}
.mdb-app .bc-money{font-weight:650;color:var(--brand-d);font-size:12px}
.mdb-app /* ---------------- 卡片 / 图表 ---------------- */ .card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 1px 2px rgba(16,40,60,.03)}
.mdb-app .card-h{padding:13px 16px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:9px}
.mdb-app .card-h h3{margin:0;font-size:13.5px;font-weight:650}
.mdb-app .card-h .ch-sub{font-size:11.5px;color:var(--text-3)}
.mdb-app .card-h .spacer{flex:1}
.mdb-app .card-b{padding:16px}
.mdb-app .kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(186px,1fr));gap:12px;margin-bottom:16px}
.mdb-app .kpi{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:14px 16px;position:relative;overflow:hidden}
.mdb-app .kpi:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--brand)}
.mdb-app .kpi.k2:before{background:var(--accent)}
.mdb-app .kpi.k3:before{background:var(--warn)}
.mdb-app .kpi.k4:before{background:var(--purple)}
.mdb-app .kpi.k5:before{background:var(--pink)}
.mdb-app .kpi.k6:before{background:var(--ok)}
.mdb-app .kpi-lab{font-size:11.5px;color:var(--text-2);display:flex;align-items:center;gap:6px}
.mdb-app .kpi-val{font-size:23px;font-weight:700;letter-spacing:-.5px;margin:5px 0 2px;font-variant-numeric:tabular-nums}
.mdb-app .kpi-val small{font-size:12px;font-weight:500;color:var(--text-3);margin-left:3px}
.mdb-app .kpi-sub{font-size:11px;color:var(--text-3)}
.mdb-app .dash-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:14px;margin-bottom:14px}
.mdb-app .dash-grid.cols3{grid-template-columns:1fr 1fr 1fr}
@media (max-width:1250px){
.mdb-app .dash-grid,.mdb-app .dash-grid.cols3{grid-template-columns:1fr}
}
.mdb-app .bar-row{display:flex;align-items:center;gap:9px;margin-bottom:9px;font-size:12px}
.mdb-app .bar-row .bl{width:130px;flex:none;color:var(--text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mdb-app .bar-row .bt{flex:1;height:8px;background:var(--panel-3);border-radius:5px;overflow:hidden}
.mdb-app .bar-row .bf{height:100%;border-radius:5px;background:linear-gradient(90deg,#12a394,#0d8c80)}
.mdb-app .bar-row .bv{width:72px;text-align:right;flex:none;font-variant-numeric:tabular-nums;color:var(--text);font-weight:600}
.mdb-app .legend{display:flex;flex-wrap:wrap;gap:8px 16px;margin-top:10px;font-size:11.5px;color:var(--text-2)}
.mdb-app .legend i{width:9px;height:9px;border-radius:3px;display:inline-block;margin-right:5px}
.mdb-app .timeline{position:relative;padding-left:18px}
.mdb-app .timeline:before{content:"";position:absolute;left:5px;top:5px;bottom:5px;width:1px;background:var(--line)}
.mdb-app .tl-item{position:relative;padding-bottom:13px;font-size:12px}
.mdb-app .tl-item:last-child{padding-bottom:0}
.mdb-app .tl-item:before{content:"";position:absolute;left:-16px;top:5px;width:7px;height:7px;border-radius:50%;background:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}
.mdb-app .tl-item .tl-t{color:var(--text-3);font-size:11px;margin-top:2px}
.mdb-app /* ---------------- 统计视图 ---------------- */ .stat-dim{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:14px}
.mdb-app .stat-dim label{font-size:12px;color:var(--text-2)}
.mdb-app .sel{height:32px;border:1px solid var(--line-2);border-radius:7px;background:#fff;padding:0 9px;font-size:12.5px;outline:none}
.mdb-app .sel:focus{border-color:var(--brand)}
.mdb-app .chart-wrap{width:100%;overflow-x:auto}
.mdb-app .chart-wrap svg{max-width:100%;height:auto}
.mdb-app .stat-table{width:100%;border-collapse:collapse;font-size:12.5px;margin-top:6px}
.mdb-app .stat-table th{text-align:left;padding:8px 10px;border-bottom:1px solid var(--line-2);color:var(--text-2);font-weight:600;background:var(--panel-2)}
.mdb-app .stat-table td{padding:8px 10px;border-bottom:1px solid var(--line)}
.mdb-app .stat-table tr:last-child td{border-bottom:none}
.mdb-app .stat-table .st-num{text-align:right;font-variant-numeric:tabular-nums}
.mdb-app .stat-table .st-bar{display:inline-block;height:6px;border-radius:3px;background:var(--brand);vertical-align:middle;margin-right:7px}
.mdb-app /* ---------------- 抽屉 / 弹窗 ---------------- */ .overlay{position:fixed;inset:0;background:rgba(18,36,48,.28);z-index:20;opacity:0;pointer-events:none;transition:.2s}
.mdb-app .overlay.show{opacity:1;pointer-events:auto}
.mdb-app .drawer{position:fixed;right:0;top:0;bottom:0;width:474px;max-width:94vw;background:#fff;z-index:21;box-shadow:-8px 0 32px rgba(16,40,60,.14);transform:translateX(100%);transition:.24s cubic-bezier(.2,.8,.3,1);display:flex;flex-direction:column}
.mdb-app .drawer.show{transform:none}
.mdb-app .dr-head{padding:16px 18px;border-bottom:1px solid var(--line);display:flex;align-items:flex-start;gap:10px;flex:none}
.mdb-app .dr-head h3{margin:0;font-size:15px;font-weight:700}
.mdb-app .dr-head .dr-sub{font-size:11.5px;color:var(--text-3);margin-top:2px}
.dr-.mdb-app{flex:1;overflow-y:auto;padding:6px 18px 18px}
.mdb-app .dr-sec{font-size:10.5px;font-weight:700;letter-spacing:1px;color:var(--text-3);text-transform:uppercase;padding:15px 0 8px;border-bottom:1px solid var(--line);margin-bottom:2px}
.mdb-app .dr-field{display:grid;grid-template-columns:132px 1fr;gap:10px;padding:7px 0;border-bottom:1px solid #f1f4f6;align-items:start;font-size:12.5px}
.mdb-app .dr-field .df-k{color:var(--text-2)}
.mdb-app .dr-field .df-v{word-break:break-word;min-height:19px}
.mdb-app .dr-foot{flex:none;padding:12px 18px;border-top:1px solid var(--line);display:flex;gap:8px;justify-content:flex-end;background:var(--panel-2)}
.mdb-app .modal{position:fixed;left:50%;top:50%;transform:translate(-50%,-48%);width:740px;max-width:94vw;max-height:86vh;background:#fff;border-radius:12px;z-index:22;box-shadow:0 20px 60px rgba(16,40,60,.22);opacity:0;pointer-events:none;transition:.2s;display:flex;flex-direction:column}
.mdb-app .modal.show{opacity:1;pointer-events:auto;transform:translate(-50%,-50%)}
.mdb-app .modal.sm{width:460px}
.mdb-app .md-head{padding:16px 20px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:10px;flex:none}
.mdb-app .md-head h3{margin:0;font-size:15px;font-weight:700;flex:1}
.md-.mdb-app{flex:1;overflow-y:auto;padding:18px 20px}
.mdb-app .md-foot{flex:none;padding:12px 20px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:9px;background:var(--panel-2);border-radius:0 0 12px 12px}
.mdb-app .form-grid{display:grid;grid-template-columns:1fr 1fr;gap:13px 16px}
.mdb-app .form-item.full{grid-column:1/-1}
.mdb-app .form-item label{display:block;font-size:12px;color:var(--text-2);margin-bottom:5px;font-weight:500}
.mdb-app .form-item label .req{color:var(--danger);margin-left:2px}
.mdb-app .form-item input,.mdb-app .form-item select,.mdb-app .form-item textarea{width:100%;height:34px;border:1px solid var(--line-2);border-radius:7px;padding:0 9px;outline:none;background:#fff;font-size:12.5px;transition:.13s}
.mdb-app .form-item textarea{height:64px;padding:8px 9px;resize:vertical;line-height:1.5}
.mdb-app .form-item input:focus,.mdb-app .form-item select:focus,.mdb-app .form-item textarea:focus{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}
.mdb-app .form-item .hint{font-size:10.5px;color:var(--text-3);margin-top:3px}
.mdb-app .form-item .formula-tag{font-size:10px;background:var(--purple-soft);color:var(--purple);padding:1px 6px;border-radius:4px;margin-left:5px}
.mdb-app .radio-row{display:flex;gap:8px;flex-wrap:wrap}
.mdb-app .radio-pill{padding:5px 12px;border:1px solid var(--line-2);border-radius:7px;font-size:12px;cursor:pointer;color:var(--text-2)}
.mdb-app .radio-pill.active{border-color:var(--brand);background:var(--brand-soft);color:var(--brand-d);font-weight:600}
.mdb-app .dropzone{border:2px dashed var(--line-2);border-radius:10px;padding:26px;text-align:center;color:var(--text-2);background:var(--panel-2);cursor:pointer;transition:.15s}
.mdb-app .dropzone:hover,.mdb-app .dropzone.over{border-color:var(--brand);background:var(--brand-soft)}
.mdb-app .dropzone .dz-icon{width:40px;height:40px;margin:0 auto 10px;color:var(--brand)}
.mdb-app .dropzone b{color:var(--brand-d)}
.mdb-app /* ---------------- 数据字典 ---------------- */ .dict-hero{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-bottom:16px}
.mdb-app .dict-hero .dh{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:14px 16px}
.mdb-app .dict-hero .dh-v{font-size:22px;font-weight:700;color:var(--brand-d);font-variant-numeric:tabular-nums}
.mdb-app .dict-hero .dh-l{font-size:11.5px;color:var(--text-2);margin-top:2px}
.mdb-app .dict-table{width:100%;border-collapse:collapse;font-size:12.5px}
.mdb-app .dict-table th{background:var(--panel-2);text-align:left;padding:9px 12px;border-bottom:1px solid var(--line-2);color:var(--text-2);font-weight:600;white-space:nowrap}
.mdb-app .dict-table td{padding:9px 12px;border-bottom:1px solid var(--line);vertical-align:top}
.mdb-app .dict-table tr:hover td{background:#f7fbfa}
.mdb-app .dict-table .dt-note{color:var(--text-2);font-size:11.5px;line-height:1.5}
.mdb-app .field-tags{display:flex;flex-wrap:wrap;gap:4px}
.mdb-app .ftag{font-size:10.5px;padding:1px 7px;border-radius:4px;background:var(--panel-3);color:var(--text-2);white-space:nowrap}
.mdb-app .ftag.t-select{background:var(--accent-soft);color:var(--accent)}
.mdb-app .ftag.t-relation{background:var(--purple-soft);color:var(--purple)}
.mdb-app .ftag.t-money{background:var(--warn-soft);color:var(--warn)}
.mdb-app .ftag.t-date{background:var(--brand-soft);color:var(--brand-d)}
.mdb-app .ftag.t-added{background:var(--ok-soft);color:var(--ok)}
.mdb-app .ftag.t-req{background:var(--danger-soft);color:var(--danger)}
.mdb-app .rule-box{background:var(--panel-2);border:1px solid var(--line);border-left:3px solid var(--brand);border-radius:7px;padding:10px 13px;font-size:12px;color:var(--text-2);margin-bottom:9px}
.mdb-app .rule-box b{color:var(--text)}
.mdb-app .flow{display:flex;align-items:center;gap:5px;flex-wrap:wrap}
.mdb-app .flow-step{background:var(--brand-soft);color:var(--brand-d);padding:3px 9px;border-radius:5px;font-size:11.5px;font-weight:600}
.mdb-app .flow-arrow{color:var(--text-3)}
.mdb-app .toast{position:fixed;bottom:26px;left:50%;transform:translate(-50%,16px);background:#1d3442;color:#fff;padding:10px 18px;border-radius:9px;font-size:12.5px;z-index:40;opacity:0;pointer-events:none;transition:.22s;box-shadow:0 10px 30px rgba(16,40,60,.25);display:flex;align-items:center;gap:8px}
.mdb-app .toast.show{opacity:1;transform:translate(-50%,0)}
.mdb-app .toast.err{background:#a83c38}
.mdb-app /* 滚动条 */ ::-webkit-scrollbar{width:9px;height:9px}
.mdb-app ::-webkit-scrollbar-track{background:transparent}
.mdb-app ::-webkit-scrollbar-thumb{background:#cfdade;border-radius:6px;border:2px solid transparent;background-clip:padding-box}
.mdb-app ::-webkit-scrollbar-thumb:hover{background:#aabcc5;background-clip:padding-box;border:2px solid transparent}
.mdb-app[data-theme="dark"] /* ==================== 深色主题 ==================== */{
  --bg:#0e161c; --panel:#15212b; --panel-2:#1b2832; --panel-3:#223040;
  --line:#243240; --line-2:#2f4151;
  --text:#e7eef3; --text-2:#9fb1bf; --text-3:#6c7f8d;
  --brand:#1fb9a6; --brand-d:#37d6c3; --brand-soft:#10302d; --brand-soft2:#15413b;
  --accent:#5d8cff; --accent-soft:#14233d;
  --ok:#22b078; --ok-soft:#10302a;
  --warn:#e3a02c; --warn-soft:#322611;
  --danger:#e06b66; --danger-soft:#3a1f1e;
  --purple:#9b7ff0; --purple-soft:#241d39;
  --pink:#dd6fa0; --pink-soft:#361f2c;
  --shadow:0 1px 2px rgba(0,0,0,.45),0 8px 28px rgba(0,0,0,.5);
}
.mdb-app[data-theme="dark"]{background:var(--bg)}
.mdb-app[data-theme="dark"] .group-row td{background:#13202a !important}
.mdb-app[data-theme="dark"] .notice{background:linear-gradient(90deg,#14302b,#102a26);border-bottom-color:#1f4a40;color:#7fded0}
.mdb-app[data-theme="dark"] .notice.blank,.mdb-app[data-theme="dark"] .notice.cleared{background:#12302b;border-bottom-color:#1f4a40;color:#7fded0}
.mdb-app[data-theme="dark"] .notice.blank button,.mdb-app[data-theme="dark"] .notice.cleared button,.mdb-app[data-theme="dark"] .notice button{color:#7fded0}
.mdb-app[data-theme="dark"] .toast{background:#0b141a;color:#e7eef3}
.mdb-app[data-theme="dark"] ::-webkit-scrollbar-thumb{background:#33475a}
.mdb-app[data-theme="dark"] ::-webkit-scrollbar-thumb:hover{background:#47627a}
.mdb-app /* ==================== 侧边栏折叠 / 移动端 ==================== */ .sb-toggle{display:inline-flex}
.mdb-app .sidebar{transition:transform .22s ease, margin-left .22s ease;}
.mdb-app.sb-closed .sidebar{margin-left:-246px}
.mdb-app .sb-backdrop{position:fixed;inset:0;background:rgba(8,16,22,.42);z-index:24;opacity:0;pointer-events:none;transition:.2s}
.mdb-app.sb-open .sb-backdrop{opacity:1;pointer-events:auto}
.mdb-app /* ==================== 行密度 ==================== */ .grid-card.compact table.grid th{height:31px}
.mdb-app .grid-card.compact table.grid td{height:30px;font-size:12px}
.mdb-app .grid-card.compact table.grid tbody tr{ }
.mdb-app /* ==================== 键盘选中行 ==================== */ table.grid tbody tr.kb-sel td{background:#eafaf8 !important}
.mdb-app[data-theme="dark"] table.grid tbody tr.kb-sel td{background:#103530 !important}
.mdb-app table.grid tbody tr.kb-sel td.gutter{box-shadow:inset 3px 0 0 var(--brand)}
.mdb-app /* ==================== HRP 模块 ==================== */ .hrp-wrap{max-width:980px;margin:0 auto}
.mdb-app .hrp-status{display:inline-flex;align-items:center;gap:7px;font-size:12px;font-weight:600;padding:3px 11px;border-radius:20px}
.mdb-app .hrp-status .dot{width:8px;height:8px;border-radius:50%;background:var(--text-3)}
.mdb-app .hrp-status.ok{background:var(--ok-soft);color:var(--ok)}
.mdb-app .hrp-status.ok .dot{background:var(--ok)}
.mdb-app .hrp-status.warn{background:var(--warn-soft);color:var(--warn)}
.mdb-app .hrp-status.warn .dot{background:var(--warn)}
.mdb-app .hrp-status.err{background:var(--danger-soft);color:var(--danger)}
.mdb-app .hrp-status.err .dot{background:var(--danger)}
.mdb-app .hrp-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:14px}
@media (max-width:980px){
.mdb-app .hrp-grid{grid-template-columns:1fr}
}
.mdb-app .hrp-scope{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px}
.mdb-app .hrp-scope .pill{padding:6px 12px;border:1px solid var(--line-2);border-radius:8px;font-size:12px;cursor:pointer;color:var(--text-2);user-select:none;display:inline-flex;align-items:center;gap:7px}
.mdb-app .hrp-scope .pill .bx{width:15px;height:15px;border:1.5px solid var(--line-2);border-radius:4px;display:inline-flex;align-items:center;justify-content:center;color:#fff}
.mdb-app .hrp-scope .pill.on{border-color:var(--brand);background:var(--brand-soft);color:var(--brand-d);font-weight:600}
.mdb-app .hrp-scope .pill.on .bx{background:var(--brand);border-color:var(--brand)}
.mdb-app .hrp-log{max-height:240px;overflow:auto;font-size:12px;font-family:"SFMono-Regular",Consolas,monospace;background:var(--panel-2);border:1px solid var(--line);border-radius:8px;padding:8px 10px}
.mdb-app .hrp-log .li{padding:4px 0;border-bottom:1px dashed var(--line);display:flex;gap:8px}
.mdb-app .hrp-log .li:last-child{border-bottom:none}
.mdb-app .hrp-log .t{color:var(--text-3);flex:none}
.mdb-app .hrp-log .ok{color:var(--ok)}
.mdb-app .hrp-log .err{color:var(--danger)}
.mdb-app .hrp-log .info{color:var(--accent)}
.mdb-app .hrp-note{font-size:11.5px;color:var(--text-3);line-height:1.7;background:var(--accent-soft);border:1px solid var(--line-2);border-left:3px solid var(--accent);border-radius:7px;padding:9px 12px;margin-top:12px}
.mdb-app /* ==================== 响应式 ==================== */ @media (max-width:1024px){
  .sidebar{position:fixed;left:0;top:0;bottom:0;z-index:26;transform:translateX(-100%);box-shadow:var(--shadow);margin-left:0 !important}
  .sidebar.open{transform:none}
  body.sb-closed .sidebar{margin-left:0}
  .sb-toggle{display:inline-flex}
  .sb-backdrop{display:block}
  .search-box{width:170px}
  .topbar{gap:10px;padding:0 12px}
  .crumb .c-main{font-size:14.5px}
  .dash-grid,.dash-grid.cols3{grid-template-columns:1fr}
  .kpi-grid{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}
  .drawer{width:100%;max-width:100vw}
  .modal{width:96vw}
}
@media (max-width:680px){
.mdb-app .search-box{display:none}
.mdb-app .top-actions{gap:6px}
.mdb-app .viewtabs .viewtab{padding:0 8px}
.mdb-app .toolbar{padding:9px 12px;gap:7px}
.mdb-app .kpi-grid{grid-template-columns:1fr 1fr}
.mdb-app .crumb .c-sub{display:none}
.mdb-app .pad{padding:14px 12px 24px}
.mdb-app .brand-sub{display:none}
}
.mdb-app /* ---- 预算执行联动 / 角色审批中心（追加样式） ---- */ .ap-wrap{max-width:1200px;margin:0 auto}
.mdb-app .ap-rolebar{display:flex;align-items:center;gap:11px;flex-wrap:wrap;padding:12px 14px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:13px}
.mdb-app .ap-rolebar .sel{height:30px;min-width:150px}
.mdb-app .ap-scope{display:inline-flex;align-items:center;gap:4px;font-size:11px;padding:3px 9px;border-radius:20px;background:var(--brand-soft);color:var(--brand-d);font-weight:600}
.mdb-app .ap-scope.off{background:var(--panel-3);color:var(--text-3);font-weight:400}
.mdb-app .ap-flow{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.mdb-app .ap-flow .step{display:inline-flex;align-items:center;gap:4px;font-size:11.5px;padding:5px 9px;border-radius:6px;background:var(--panel-2);border:1px solid var(--line);color:var(--text-2)}
.mdb-app .ap-flow .step.auto{background:var(--brand-soft);border-color:var(--brand-soft2);color:var(--brand-d);font-weight:600}
.mdb-app .ap-flow .arw{color:var(--text-3);font-size:12px}
.mdb-app .ap-todo{min-width:760px}
.mdb-app .ap-todo td{vertical-align:middle}
.mdb-app .ap-todo .acts{display:flex;gap:6px;align-items:center;justify-content:flex-end;flex-wrap:wrap}
.mdb-app .ap-todo .btn.sm[disabled]{opacity:.42;cursor:not-allowed}
.mdb-app .ap-note{width:140px;height:28px;padding:4px 8px;border:1px solid var(--line);border-radius:6px;background:var(--panel);color:var(--text);font-size:11.5px}
.mdb-app .ap-note::placeholder{color:var(--text-3)}
.mdb-app .ap-noperm{font-size:10.5px;color:var(--danger);text-align:right;margin-top:3px}
.mdb-app .ap-log{max-height:280px;overflow:auto}
.mdb-app .ap-log .li{display:flex;align-items:center;gap:9px;padding:7px 0;border-bottom:1px dashed var(--line);font-size:11.5px}
.mdb-app .ap-log .t{color:var(--text-3);white-space:nowrap;font-variant-numeric:tabular-nums}
.mdb-app .ap-log .chip{flex:none}
@media (max-width:760px){
.mdb-app .ap-note{width:100%}
.mdb-app .ap-rolebar .sel{width:100%}
}
.mdb-app /* ---- 合同管理（追加样式） ---- */ .ct-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:9px;margin:10px 0 4px}
.mdb-app .ct-stat{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:10px 12px}
.mdb-app .ct-stat .ct-lab{font-size:11px;color:var(--text-3);font-weight:600;display:flex;align-items:center;gap:4px}
.mdb-app .ct-stat .ct-val{font-size:19px;font-weight:750;color:var(--text);margin:5px 0 2px;letter-spacing:-.3px}
.mdb-app .ct-stat .ct-val small{font-size:11px;font-weight:500;color:var(--text-3);margin-left:3px}
.mdb-app .ct-stat .ct-sub{font-size:10.5px;color:var(--text-3)}
.mdb-app .ct-stat.ok .ct-val{color:var(--ok)}
.mdb-app .ct-stat.warn .ct-val{color:var(--warn)}
.mdb-app .ct-alert{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin:9px 0 2px;padding:9px 12px;border-radius:8px;background:var(--warn-soft);border:1px solid var(--warn);color:var(--text-2);font-size:11.5px}
.mdb-app .ct-alert b{color:var(--text)}
@media (max-width:768px){
.mdb-app .ct-stats{grid-template-columns:1fr 1fr}
}
.mdb-app /* ===== 用户与权限模块 ===== */ .pm-note{display:flex;align-items:center;flex-wrap:wrap;gap:9px;padding:11px 14px;margin-bottom:14px;border:1px solid var(--line);border-radius:10px;background:var(--panel);box-shadow:var(--shadow);color:var(--brand-d)}
.mdb-app .pm-id{display:flex;align-items:center;gap:7px;font-weight:700;font-size:13px;color:var(--text)}
.mdb-app .pm-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:10px}
.mdb-app .pm-card{border:1px solid var(--line);border-radius:9px;background:var(--panel-2);padding:10px 12px}
.mdb-app .pm-card.off{opacity:.55}
.mdb-app .pm-card-h{display:flex;align-items:center;gap:7px;margin-bottom:8px;font-size:12.5px}
.mdb-app .pm-line{display:flex;gap:8px;padding:5px 0;border-top:1px dashed var(--line);font-size:11.5px}
.mdb-app .pm-k{flex:none;width:62px;color:var(--text-3)}
.mdb-app .pm-v{flex:1;display:flex;flex-wrap:wrap;gap:4px}
.mdb-app .pm-v .chip{font-size:10.5px;padding:1px 6px}
.mdb-app .pm-tip{display:flex;gap:8px;align-items:flex-start;padding:10px 13px;margin-bottom:14px;border:1px solid var(--brand-soft2);border-radius:9px;background:var(--brand-soft);font-size:11.5px;color:var(--text-2);line-height:1.7}
.mdb-app .pm-tip svg{flex:none;margin-top:2px;color:var(--brand-d)}
.mdb-app .pm-cfg-note{font-size:12px;color:var(--text-2);line-height:1.75;margin-bottom:12px;padding:9px 11px;border-radius:8px;background:var(--panel-2);border:1px solid var(--line)}
.mdb-app .pm-cfg-card{border:1px solid var(--line);border-radius:9px;padding:10px 12px;margin-bottom:10px;background:var(--panel)}
.mdb-app .pm-cfg-h{display:flex;align-items:center;flex-wrap:wrap;gap:10px;padding-bottom:8px;border-bottom:1px solid var(--line)}
.mdb-app .pm-cfg-name{font-size:12px;color:var(--text-2)}
.mdb-app .pm-cfg-sec{font-size:11.5px;font-weight:700;color:var(--brand-d);margin:9px 0 5px}
.mdb-app .pm-checks{display:flex;flex-wrap:wrap;gap:5px 12px}
.mdb-app .pm-cb{display:inline-flex;align-items:center;gap:4px;font-size:11.5px;color:var(--text-2);cursor:pointer}
.mdb-app .pm-cb input{accent-color:var(--brand);cursor:pointer}
.mdb-app .ov-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(215px,1fr));gap:5px 10px}
.mdb-app .ov-row{display:flex;align-items:center;justify-content:space-between;gap:6px;padding:5px 8px;border:1px solid var(--line);border-radius:7px;font-size:11.5px;background:var(--panel-2)}
.mdb-app .ov-row>span{display:flex;flex-direction:column;min-width:0}
.mdb-app .ov-row i{font-style:normal;font-size:10px;color:var(--text-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mdb-app .ov-sel{width:92px;flex:none;height:26px;font-size:11px}
.mdb-app .ov-scroll{max-height:210px;overflow-y:auto;padding:2px;border:1px dashed var(--line);border-radius:8px}
.mdb-app .deny-page{display:flex;flex-direction:column;align-items:center;text-align:center;gap:10px;padding:60px 24px;border:1px dashed var(--line-2);border-radius:12px;background:var(--panel);color:var(--text-2)}
.mdb-app .deny-page svg{color:var(--warn)}
.mdb-app .deny-page h3{margin:0;color:var(--text);font-size:17px}
.mdb-app .deny-page p{margin:0;font-size:12.5px}
.mdb-app .deny-act{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin-top:6px}
.mdb-app .deny-sub{max-width:520px;font-size:11.5px;color:var(--text-3);line-height:1.7}
@media (max-width:760px){
.mdb-app .pm-note{gap:7px}
.mdb-app .pm-grid{grid-template-columns:1fr}
.mdb-app .ov-grid{grid-template-columns:1fr 1fr}
}
.mdb-app /* ===== 云端同步状态（三端一致） ===== */ .cloud-chip{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 10px;border-radius:999px;border:1px solid var(--line);background:var(--panel-2);color:var(--text-2);font-size:12px;cursor:pointer;white-space:nowrap;flex:none}
.mdb-app .cloud-chip:hover{border-color:var(--brand,#2f6fed);color:var(--text)}
.mdb-app .cloud-chip .dot{width:7px;height:7px;border-radius:50%;background:var(--text-3);flex:none}
.mdb-app .cloud-chip.on .dot{background:var(--ok,#18a96e);box-shadow:0 0 0 3px rgba(24,169,110,.14)}
.mdb-app .cloud-chip.offline .dot{background:var(--warn,#e3a02c)}
.mdb-app .cloud-chip.err .dot{background:var(--danger,#e05a5a)}
.mdb-app .cloud-chip.busy .dot{animation:mdb-cloudPulse 1s infinite}
@keyframes mdb-cloudPulse{
50%{opacity:.2}}
.mdb-app .cloud-panel .cloud-kv{display:flex;justify-content:space-between;gap:12px;padding:7px 0;border-bottom:1px dashed var(--line);font-size:13px}
.mdb-app .cloud-panel .cloud-kv span{color:var(--text-2);flex:none}
.mdb-app .cloud-panel .cloud-kv b{font-weight:600;text-align:right;word-break:break-all}
.mdb-app .cloud-btns{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}
.mdb-app .cloud-form label{display:block;font-size:12px;color:var(--text-2);margin:10px 0}
.mdb-app .cloud-form input{display:block;width:100%;margin-top:6px;padding:9px 10px;border:1px solid var(--line);border-radius:8px;background:var(--panel);color:var(--text);font-size:14px;box-sizing:border-box}
@media (max-width:900px){
.mdb-app #cloudChipTxt{display:none}
}

/* ---- 嵌入模式挂载根：替代原 .app 容器 ---- */
.mdb-app{display:flex;flex-direction:column;height:100%;width:100%;min-height:0;overflow:hidden;box-sizing:border-box;background:var(--bg);color:var(--text);font-family:inherit}
.mdb-app *{box-sizing:border-box}
.mdb-sb-toggle,.mdb-app .sb-toggle{display:none !important}
