.page-enter-active{transition:opacity .28s ease,transform .28s ease}.page-leave-active{transition:opacity .18s ease}.page-enter-from{opacity:0;transform:translateY(14px)}.page-leave-to{opacity:0}:root{--bg: #eceef2;--card: #ffffff;--block: #f4f6fa;--hover: #f0f5fc;--border: #e5e8ef;--border-2: #d5dae3;--text: #2b2f36;--text-2: #5b6472;--text-3: #98a1b0;--blue: #1556a0;--blue-bg: #e8f1fb;--green: #157a5a;--green-bg: #e6f4ee;--orange: #c47020;--orange-bg: #fdf0e0;--red: #c43d3d;--red-bg: #fbe9e9;--gray: #777;--gray-bg: #eceef1;--purple: #6b4fa0;--purple-bg: #f0ebfa;--cyan: #0e7c86;--cyan-bg: #e3f4f5;--teal: #0d7a5f;--teal-bg: #e2f5ef;--sidebar-w: 232px;--sidebar-top: #1e3d63;--sidebar-bottom: #14304f;--topbar-h: 60px;--radius: 3px}*{margin:0;padding:0;box-sizing:border-box}html{font-size:15px}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif;font-size:15px;color:var(--text);background:var(--bg);line-height:1.55;min-width:1200px}a{color:var(--blue);text-decoration:none}a:hover{text-decoration:underline}ul,ol{list-style:none}button{font-family:inherit}svg:not([width]):not([height]){width:16px;height:16px}input,select,textarea{font-family:inherit;font-size:14px;color:var(--text)}::placeholder{color:#a9b2c0}.layout{display:flex;min-height:100vh}.sidebar{width:var(--sidebar-w);flex-shrink:0;background:linear-gradient(180deg,var(--sidebar-top) 0%,var(--sidebar-bottom) 100%);color:#c9d6e6;display:flex;flex-direction:column;position:sticky;top:0;height:100vh;overflow-y:auto}.sidebar::-webkit-scrollbar{width:4px}.sidebar::-webkit-scrollbar-thumb{background:#ffffff2e;border-radius:2px}.sidebar-logo{height:var(--topbar-h);display:flex;align-items:center;gap:10px;padding:0 18px;border-bottom:1px solid rgba(255,255,255,.08);flex-shrink:0}.sidebar-logo .logo-icon{width:34px;height:34px;display:flex;align-items:center;justify-content:center}.sidebar-logo .logo-icon img{width:34px;height:auto;display:block}.sidebar-logo .logo-name{font-size:17px;font-weight:700;color:#fff;letter-spacing:.5px}.sidebar-logo .logo-sub{font-size:11px;color:#7f97b4;margin-top:1px}.sidebar-group{padding:14px 12px 4px;font-size:11px;color:#6e88a8;letter-spacing:2px;font-weight:600}.sidebar-menu{flex:1;padding:4px 10px 12px}.sidebar-menu .menu-item{display:flex;align-items:center;gap:10px;padding:9px 12px;margin:2px 0;border-radius:var(--radius);color:#b9c8da;font-size:14px;cursor:pointer;position:relative;transition:background .15s}.sidebar-menu .menu-item svg{width:16px;height:16px;stroke:currentColor;stroke-width:2.2;flex-shrink:0}.sidebar-menu .menu-item:hover{background:#ffffff12;color:#fff}.sidebar-menu .menu-item.active{background:#ffffff21;color:#fff;font-weight:600}.sidebar-menu .menu-item.active:before{content:"";position:absolute;left:0;top:8px;bottom:8px;width:3px;background:#4da3ff;border-radius:0 2px 2px 0}.sidebar-menu .menu-item .badge-count{margin-left:auto;font-size:12px;background:#ffffff24;border-radius:var(--radius);padding:0 7px;color:#fff;font-weight:600}.sidebar-menu .menu-item .badge-count.warn{background:#d98a3d}.sidebar-foot{padding:12px 16px;border-top:1px solid rgba(255,255,255,.08);font-size:12px;color:#6e88a8;flex-shrink:0}.main{flex:1;min-width:0;display:flex;flex-direction:column}.topbar{height:var(--topbar-h);background:var(--card);border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:0 24px;position:sticky;top:0;z-index:50}.breadcrumb{display:flex;align-items:center;gap:8px;font-size:14px;color:var(--text-3)}.breadcrumb a{color:var(--text-3)}.breadcrumb a:hover{color:var(--blue);text-decoration:none}.breadcrumb .sep{color:#c3cad6}.breadcrumb .current{color:var(--text);font-weight:600}.topbar-right{display:flex;align-items:center;gap:14px}.entity-switch{display:flex;align-items:center;gap:6px;padding:4px 8px;background:var(--bg-2, #f0f3f8);border:1px solid var(--border, #e0e4ea);border-radius:3px;color:var(--text-2, #5a6472)}.entity-switch svg{width:14px;height:14px;stroke:currentColor;flex-shrink:0}.entity-switch select{height:26px;border:none;background:transparent;font-size:13px;font-weight:600;color:var(--text-1, #2b3442);cursor:pointer;font-family:inherit}.entity-switch select:focus{outline:none}.entity-tag{display:inline-block;padding:1px 7px;border-radius:3px;font-size:12px;font-weight:600;line-height:18px;white-space:nowrap}.et-c1{background:#e9f0fb;color:#1556a0}.et-c2{background:#e8f4ec;color:#157a5a}.et-c3{background:#fdf0e3;color:#c47020}.et-c4{background:#f0eafa;color:#6b46b8}.et-c5{background:#e2f3f6;color:#0e7490}.et-c6,.entity-tag.et-c6{background:#f0f1f3;color:#777}.et-fullname{font-size:12px;color:var(--text-3);margin-left:6px}body.single-entity .col-entity{display:none}.entity-inline{margin-right:6px}.topbar-time{font-size:13px;color:var(--text-3);display:flex;align-items:center;gap:6px}.topbar-time svg{width:14px;height:14px;stroke:var(--text-3);stroke-width:2.2}.user-chip{display:flex;align-items:center;gap:8px;cursor:pointer;padding:5px 10px;border-radius:var(--radius);border:1px solid var(--border);background:var(--block)}.user-chip:hover{border-color:var(--border-2)}.user-chip .avatar{width:26px;height:26px;border-radius:var(--radius);background:linear-gradient(135deg,#2a5d9e,#1e3d63);color:#fff;font-size:12px;font-weight:600;display:flex;align-items:center;justify-content:center}.user-chip .u-name{font-size:13px;font-weight:600;color:var(--text)}.user-chip svg{width:12px;height:12px;stroke:var(--text-3);stroke-width:2.2}.content{padding:20px 24px 40px;flex:1}.page-head{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:16px;gap:16px;flex-wrap:wrap}.page-title{font-size:24px;font-weight:700;color:var(--text);letter-spacing:-.3px}.page-desc{font-size:13px;color:var(--text-3);margin-top:3px}.page-actions{display:flex;gap:10px;align-items:center}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius)}.card-pad{padding:18px 20px}.card-head{display:flex;align-items:center;justify-content:space-between;padding:13px 20px;border-bottom:1px solid var(--border)}.card-title{font-size:16px;font-weight:700;color:var(--text);display:flex;align-items:center;gap:8px}.card-title svg{width:16px;height:16px;stroke:var(--blue);stroke-width:2.4}.card-title .count-tag{font-size:12px;font-weight:600;color:var(--blue);background:var(--blue-bg);border-radius:var(--radius);padding:1px 8px}.card-body{padding:16px 20px}.stat-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:14px;margin-bottom:16px}.stat-grid.cols-4{grid-template-columns:repeat(4,1fr)}.stat-grid.cols-6{grid-template-columns:repeat(6,1fr)}.stat-card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:16px 18px 14px;position:relative;overflow:hidden;cursor:pointer;transition:box-shadow .15s,transform .1s}.stat-card:hover{box-shadow:0 3px 10px #14284614;transform:translateY(-1px)}.stat-card:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--sc, var(--blue))}.stat-card .sc-icon{position:absolute;right:14px;top:14px;width:34px;height:34px;border-radius:var(--radius);background:var(--sc-bg, var(--blue-bg));display:flex;align-items:center;justify-content:center}.stat-card .sc-icon svg{width:17px;height:17px;stroke:var(--sc, var(--blue));stroke-width:2.4}.stat-card .sc-label{font-size:13px;color:var(--text-2)}.stat-card .sc-value{font-size:32px;font-weight:700;color:var(--sc, var(--blue));font-family:SF Mono,Roboto Mono,Consolas,monospace;line-height:1.2;margin-top:4px;font-variant-numeric:tabular-nums}.stat-card .sc-value .unit{font-size:14px;font-weight:600;color:var(--text-2);margin-left:2px;font-family:inherit}.stat-card .sc-foot{font-size:12px;color:var(--text-3);margin-top:6px;display:flex;align-items:center;gap:6px}.stat-card .sc-foot .trend-up{color:var(--red);font-weight:600}.stat-card .sc-foot .trend-down{color:var(--green);font-weight:600}.stat-card .sc-foot svg{width:13px;height:13px;stroke-width:2.4}.badge,.status-tag{display:inline-flex;align-items:center;gap:5px;padding:2px 10px;border-radius:var(--radius);font-size:13px;font-weight:600;line-height:1.7;white-space:nowrap;border:1px solid transparent}.badge .dot,.status-tag .dot{width:6px;height:6px;border-radius:50%;background:currentColor;flex-shrink:0}.badge.blue{color:var(--blue);background:var(--blue-bg);border-color:#c9ddf3}.badge.green{color:var(--green);background:var(--green-bg);border-color:#c4e2d4}.badge.orange{color:var(--orange);background:var(--orange-bg);border-color:#f0d6b4}.badge.red{color:var(--red);background:var(--red-bg);border-color:#ecc9c9}.badge.gray{color:var(--gray);background:var(--gray-bg);border-color:#d9dde3}.badge.purple{color:var(--purple);background:var(--purple-bg);border-color:#d9ccf0}.badge.cyan{color:var(--cyan);background:var(--cyan-bg);border-color:#bfe3e5}.badge.solid.blue{color:#fff;background:var(--blue);border-color:var(--blue)}.badge.solid.green{color:#fff;background:var(--green);border-color:var(--green)}.badge.solid.orange{color:#fff;background:var(--orange);border-color:var(--orange)}.badge.solid.red{color:#fff;background:var(--red);border-color:var(--red)}.badge.solid.gray{color:#fff;background:var(--gray);border-color:var(--gray)}.badge.solid.purple{color:#fff;background:var(--purple);border-color:var(--purple)}.mask{color:var(--text-3);letter-spacing:1px;font-family:SF Mono,Consolas,monospace;font-size:13px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:7px 16px;font-size:14px;font-weight:600;border-radius:var(--radius);border:1px solid var(--border-2);background:#fff;color:var(--text);cursor:pointer;transition:all .15s;white-space:nowrap;line-height:1.4}.btn svg{width:14px;height:14px;stroke-width:2.4}.btn:hover{border-color:var(--blue);color:var(--blue)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.primary{background:var(--blue);border-color:var(--blue);color:#fff}.btn.primary:hover{background:#124a89;border-color:#124a89;color:#fff}.btn.success{background:var(--green);border-color:var(--green);color:#fff}.btn.success:hover{background:#11684d;border-color:#11684d;color:#fff}.btn.warning{background:var(--orange);border-color:var(--orange);color:#fff}.btn.warning:hover{background:#a85f18;border-color:#a85f18;color:#fff}.btn.danger{background:var(--red);border-color:var(--red);color:#fff}.btn.danger:hover{background:#a83232;border-color:#a83232;color:#fff}.btn.gray{background:var(--gray);border-color:var(--gray);color:#fff}.btn.gray:hover{background:#636c78;border-color:#636c78;color:#fff}.btn.link{border-color:transparent;background:transparent;color:var(--blue);padding:4px 10px;font-size:13px;font-weight:600}.btn.link:hover{background:var(--blue-bg);color:var(--blue)}.btn.link.warning{color:var(--orange)}.btn.link.warning:hover{background:var(--orange-bg)}.btn.link.danger{color:var(--red)}.btn.link.danger:hover{background:var(--red-bg)}.btn.link.success{color:var(--green)}.btn.link.success:hover{background:var(--green-bg)}.btn.link.gray{color:var(--gray)}.btn.link.gray:hover{background:var(--gray-bg)}.btn.soft{background:var(--blue-bg);border-color:#c9ddf3;color:var(--blue)}.btn.soft:hover{background:var(--blue);border-color:var(--blue);color:#fff}.btn.soft.warning{background:var(--orange-bg);border-color:#f0d6b4;color:var(--orange)}.btn.soft.warning:hover{background:var(--orange);border-color:var(--orange);color:#fff}.btn.soft.danger{background:var(--red-bg);border-color:#ecc9c9;color:var(--red)}.btn.soft.danger:hover{background:var(--red);border-color:var(--red);color:#fff}.btn.soft.success{background:var(--green-bg);border-color:#c4e2d4;color:var(--green)}.btn.soft.success:hover{background:var(--green);border-color:var(--green);color:#fff}.btn.soft.gray{background:var(--gray-bg);border-color:#d9dde3;color:var(--gray)}.btn.soft.gray:hover{background:var(--gray);border-color:var(--gray);color:#fff}.btn.sm{padding:3px 9px;font-size:13px}.btn.sm svg{width:13px;height:13px}.btn.lg{padding:9px 24px;font-size:15px}.table-wrap{overflow-x:auto}.table{width:100%;border-collapse:collapse;font-size:15px}.table thead th{background:var(--block);color:var(--text-2);font-weight:600;font-size:13px;text-align:left;padding:10px 14px;border-bottom:1px solid var(--border);white-space:nowrap}.table tbody td{padding:10px 14px;border-bottom:1px solid #f0f2f6;color:var(--text);vertical-align:middle}.table tbody tr{transition:background .1s}.table tbody tr:hover{background:var(--hover)}.table tbody tr:last-child td{border-bottom:none}.table .num,.table td.num{font-variant-numeric:tabular-nums}.table thead th.th-index,.table tbody td.td-index{width:50px;text-align:center;font-variant-numeric:tabular-nums;color:var(--text-3);font-size:13px}.table thead th.th-center,.table tbody td.td-center{text-align:center}.table .td-actions{display:flex;gap:4px;white-space:nowrap;align-items:center}.table .td-primary{font-weight:600;color:var(--text)}.table .td-link{color:var(--blue);font-weight:600;cursor:pointer}.table .td-link:hover{text-decoration:underline}.table .td-sub{font-size:13px;color:var(--text-3)}.cell-pair{display:flex;flex-direction:column}.cell-pair .k{font-size:12px;color:var(--text-3)}.cell-pair .v{font-size:14px;font-weight:600;color:var(--text);margin-top:1px}.empty{text-align:center;padding:48px 20px;color:var(--text-3)}.empty svg{width:44px;height:44px;stroke:#c3cad6;stroke-width:1.8;margin-bottom:10px}.empty .e-title{font-size:15px;font-weight:600;color:var(--text-2)}.empty .e-sub{font-size:13px;margin-top:4px}.filter-bar{display:flex;align-items:center;gap:10px;padding:14px 20px;border-bottom:1px solid var(--border);background:var(--block);flex-wrap:wrap}.filter-bar .f-label{font-size:13px;color:var(--text-2);font-weight:600;white-space:nowrap}.filter-bar select,.filter-bar input[type=text],.filter-bar input[type=search]{height:32px;border:1px solid var(--border-2);border-radius:var(--radius);padding:0 10px;background:#fff;outline:none;min-width:120px}.filter-bar select{width:140px;cursor:pointer}.filter-bar select:focus,.filter-bar input:focus{border-color:var(--blue)}.filter-bar input[type=text]{width:200px}.filter-bar input[type=search]{width:220px}.batch-bar{display:flex;align-items:center;gap:10px;padding:10px 20px;border-bottom:1px solid var(--border);font-size:13px;color:var(--text-2)}.pagination{display:flex;align-items:center;justify-content:flex-end;gap:6px;padding:14px 20px;border-top:1px solid var(--border)}.pagination .pg-info{font-size:13px;color:var(--text-3);margin-right:auto}.pagination .pg-info b{color:var(--blue);font-weight:700}.pagination button{min-width:30px;height:30px;padding:0 8px;border:1px solid var(--border-2);background:#fff;border-radius:var(--radius);font-size:13px;color:var(--text-2);cursor:pointer;display:inline-flex;align-items:center;justify-content:center}.pagination button:hover:not(:disabled):not(.active){border-color:var(--blue);color:var(--blue)}.pagination button.active{background:var(--blue);border-color:var(--blue);color:#fff;font-weight:600}.pagination button:disabled{opacity:.45;cursor:not-allowed}.modal-mask{position:fixed;top:0;right:0;bottom:0;left:0;background:#17233773;z-index:1000;display:flex;align-items:center;justify-content:center;animation:fadeIn .15s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal{background:#fff;border-radius:var(--radius);box-shadow:0 12px 40px #0f1e3738;width:560px;max-width:94vw;max-height:90vh;display:flex;flex-direction:column;animation:popIn .18s ease}@keyframes popIn{0%{transform:scale(.96);opacity:0}to{transform:scale(1);opacity:1}}.modal.w-lg{width:800px}.modal.w-xl{width:1080px}.modal.w-max{width:1320px}.modal-header{display:flex;align-items:center;gap:10px;padding:14px 20px;border-bottom:1px solid var(--border);cursor:grab;-webkit-user-select:none;user-select:none}.modal-header:active{cursor:grabbing}.modal-header .m-title{font-size:16px;font-weight:700;color:var(--text);flex:1}.modal-header .m-close{width:26px;height:26px;border:none;background:transparent;border-radius:var(--radius);cursor:pointer;color:var(--text-3);display:flex;align-items:center;justify-content:center}.modal-header .m-close:hover{background:var(--gray-bg);color:var(--text)}.modal-header .m-close svg{width:14px;height:14px;stroke-width:2.4}.modal-body{padding:18px 20px;overflow-y:auto;flex:1}.modal-footer{display:flex;justify-content:flex-end;gap:10px;padding:13px 20px;border-top:1px solid var(--border);background:var(--block);border-radius:0 0 var(--radius) var(--radius)}.modal-footer.center{justify-content:center}.confirm-body{display:flex;gap:14px;padding:6px 2px}.confirm-body .c-icon{width:46px;height:46px;border-radius:var(--radius);flex-shrink:0;display:flex;align-items:center;justify-content:center;background:var(--ic-bg, var(--blue-bg))}.confirm-body .c-icon svg{width:22px;height:22px;stroke:var(--ic, var(--blue));stroke-width:2.2}.confirm-body .c-main{flex:1}.confirm-body .c-title{font-size:16px;font-weight:700;color:var(--text)}.confirm-body .c-desc{font-size:13.5px;color:var(--text-2);margin-top:6px;line-height:1.7}.confirm-body .c-desc b{color:var(--text);font-weight:700}.confirm-body .c-desc .kv-line{display:flex;justify-content:space-between;padding:3px 0;border-bottom:1px dashed #eef1f5}.confirm-body .c-desc .kv-line:last-child{border-bottom:none}.confirm-body .c-desc .kv-line .k{color:var(--text-3)}.confirm-body .c-desc .kv-line .v{font-weight:600;color:var(--text)}.alert{display:flex;gap:8px;padding:10px 14px;border-radius:var(--radius);font-size:13.5px;line-height:1.6;margin-bottom:12px;border:1px solid}.alert svg{width:15px;height:15px;stroke-width:2.2;flex-shrink:0;margin-top:1px}.alert.warn{background:var(--orange-bg);border-color:#f0d6b4;color:#8a5412}.alert.warn svg{stroke:var(--orange)}.alert.danger{background:var(--red-bg);border-color:#ecc9c9;color:#922f2f}.alert.danger svg{stroke:var(--red)}.alert.info{background:var(--blue-bg);border-color:#c9ddf3;color:#124a89}.alert.info svg{stroke:var(--blue)}.alert.success{background:var(--green-bg);border-color:#b8e0c8;color:#157a5a}.alert.success svg{stroke:var(--green)}.toast{position:fixed;top:72px;left:50%;transform:translate(-50%) translateY(-8px);background:#fff;border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 6px 24px #0f1e3724;padding:10px 18px;font-size:14px;font-weight:600;color:var(--text);display:flex;align-items:center;gap:8px;z-index:2000;opacity:0;pointer-events:none;transition:all .25s ease}.toast.show{opacity:1;transform:translate(-50%) translateY(0)}.toast svg{width:16px;height:16px;stroke-width:2.4}.toast.success svg{stroke:var(--green)}.toast.error svg{stroke:var(--red)}.toast.info svg{stroke:var(--blue)}[data-tooltip]{position:relative}[data-tooltip]:after{content:attr(data-tooltip);position:absolute;left:50%;bottom:calc(100% + 8px);transform:translate(-50%);background:#1e2a3cf2;color:#fff;font-size:12px;font-weight:400;line-height:1.5;padding:5px 10px;border-radius:var(--radius);white-space:nowrap;pointer-events:none;opacity:0;transition:opacity .15s .05s;z-index:999;box-shadow:0 3px 10px #0000002e;letter-spacing:normal}[data-tooltip]:hover:after{opacity:1}.timeline{position:relative;padding-left:22px}.timeline:before{content:"";position:absolute;left:6px;top:6px;bottom:6px;width:2px;background:#e3e8f0}.timeline .tl-item{position:relative;padding-bottom:18px}.timeline .tl-item:last-child{padding-bottom:0}.timeline .tl-dot{position:absolute;left:-22px;top:3px;width:14px;height:14px;border-radius:var(--radius);border:3px solid #fff;box-shadow:0 0 0 2px var(--dot, var(--blue));background:var(--dot-bg, var(--blue))}.timeline .tl-dot.blue{--dot: var(--blue);--dot-bg: var(--blue-bg)}.timeline .tl-dot.green{--dot: var(--green);--dot-bg: var(--green-bg)}.timeline .tl-dot.orange{--dot: var(--orange);--dot-bg: var(--orange-bg)}.timeline .tl-dot.red{--dot: var(--red);--dot-bg: var(--red-bg)}.timeline .tl-dot.gray{--dot: var(--gray);--dot-bg: var(--gray-bg)}.timeline .tl-dot.purple{--dot: var(--purple);--dot-bg: var(--purple-bg)}.timeline .tl-time{font-size:12.5px;color:var(--text-3);font-variant-numeric:tabular-nums}.timeline .tl-title{font-size:14px;font-weight:600;color:var(--text);margin-top:2px}.timeline .tl-desc{font-size:13.5px;color:var(--text-2);margin-top:3px;line-height:1.6}.info-group{border-left:3px solid var(--ig, var(--blue));padding:2px 0 2px 12px;margin-bottom:14px}.info-group.blue{--ig: var(--blue)}.info-group.green{--ig: var(--green)}.info-group.orange{--ig: var(--orange)}.info-group.purple{--ig: var(--purple)}.info-group.gray{--ig: var(--gray)}.info-group.red{--ig: var(--red)}.info-group.cyan{--ig: var(--cyan)}.info-group .ig-title{font-size:14px;font-weight:700;color:var(--text);margin-bottom:8px;display:flex;align-items:center;gap:6px}.info-group .ig-title svg{width:14px;height:14px;stroke-width:2.4}.info-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px 24px}.info-grid .ig-item .k{font-size:12.5px;color:var(--text-3)}.info-grid .ig-item .v{font-size:14.5px;color:var(--text);font-weight:600;margin-top:2px}.info-grid .ig-item .v.mask{font-weight:400}.info-grid.cols-3{grid-template-columns:repeat(3,1fr)}.info-grid.cols-2{grid-template-columns:repeat(2,1fr)}.key-box{background:linear-gradient(135deg,#eef5fc,#f6faff);border:1px solid #cfe2f5;border-radius:var(--radius);padding:12px 16px;display:flex;align-items:center;gap:14px}.key-box .kb-label{font-size:12.5px;color:var(--blue);font-weight:600}.key-box .kb-value{font-size:20px;font-weight:700;color:var(--blue);font-variant-numeric:tabular-nums;line-height:1.2}.key-box .kb-sub{font-size:12px;color:var(--text-3)}.form-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px 24px}.form-grid.cols-3{grid-template-columns:repeat(3,1fr)}.form-grid .span-full{grid-column:1 / -1}.form-grid .span-2{grid-column:span 2}.form-grid .form-field .f-input,.form-grid .form-field select,.form-grid .form-field textarea{max-width:100%}.form-flow{display:flex;flex-wrap:wrap;gap:14px 20px;align-items:flex-end}.form-flow .form-field{flex:0 0 auto}.form-flow .span-full{flex-basis:100%}.form-field{display:flex;flex-direction:column;gap:5px}.form-field label{font-size:13px;font-weight:600;color:var(--text-2)}.form-field label .req{color:var(--red);margin-left:2px}.form-field .f-input,.form-field select,.form-field textarea{width:100%;height:34px;border:1px solid var(--border-2);border-radius:var(--radius);padding:0 10px;background:#fff;outline:none;transition:border-color .15s}.form-field select{cursor:pointer;min-width:70px;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2398a1b0' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 8px center;padding-right:26px}.form-field .f-input{max-width:320px}.f-input.xs,select.xs{max-width:80px}.f-input.sm,select.sm{max-width:140px}.f-input.md,select.md{max-width:180px}.f-input.lg,select.lg{max-width:260px}.f-input.xl,select.xl{max-width:320px}.f-input.full,select.full{max-width:100%}.form-field textarea{height:76px;padding:8px 10px;resize:vertical;line-height:1.6;max-width:500px}.form-field .f-input:focus,.form-field select:focus,.form-field textarea:focus{border-color:var(--blue)}.form-field .f-help{font-size:12px;color:var(--text-3)}.form-field .f-input.readonly,.form-field .f-input[readonly]{background:var(--block);color:var(--text-2)}.form-field .f-input[disabled]{background:var(--block);color:var(--text-3);cursor:not-allowed}.addr-cascade{display:flex;gap:8px;align-items:center;width:100%;max-width:100%}.addr-cascade select{flex-shrink:0;width:auto;min-width:90px}.addr-cascade .f-input{flex:1;min-width:180px;max-width:none}.addr-cascade .ac-sep{color:var(--text-3);font-size:13px;flex-shrink:0}.secret-box{display:inline-flex;align-items:center;gap:8px;background:var(--block);border:1px solid var(--border);border-radius:var(--radius);padding:4px 10px;font-family:SF Mono,Consolas,monospace;font-size:13.5px;color:var(--text-2)}.secret-box .btn{padding:1px 6px;font-size:12px}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--border);background:#fff;padding:0 16px}.tabs .tab-item{padding:11px 18px;font-size:14px;font-weight:600;color:var(--text-2);cursor:pointer;border:none;background:transparent;border-bottom:3px solid transparent;border-radius:var(--radius) var(--radius) 0 0;display:inline-flex;align-items:center;gap:7px;position:relative;top:1px}.tabs .tab-item svg{width:14px;height:14px;stroke-width:2.2}.tabs .tab-item:hover{color:var(--blue)}.tabs .tab-item.active{color:var(--blue);border-bottom-color:var(--blue);background:var(--hover)}.tabs .tab-item .tab-count{font-size:12px;background:var(--gray-bg);color:var(--text-2);border-radius:var(--radius);padding:0 7px;font-weight:600}.tab-panel{display:none}.tab-panel.active{display:block}.file-item{display:inline-flex;align-items:center;gap:8px;padding:6px 12px;border:1px solid var(--border);border-radius:var(--radius);background:var(--block);margin:3px 0}.file-item .file-icon{width:10px;height:12px;background:var(--red);border-radius:2px;position:relative;flex-shrink:0}.file-item .file-icon:after{content:"";position:absolute;right:-1px;top:-1px;border:3px solid transparent;border-top-color:#fff;border-right-color:#fff;border-radius:0 2px 0 0}.file-item .f-name{font-size:13px;color:var(--text)}.file-item .btn{padding:1px 8px;font-size:12px}.file-item .uc-hint{font-size:12px;color:var(--text-3);margin-left:4px}.upload-box{border:1px dashed var(--border-2);border-radius:var(--radius);text-align:center;cursor:pointer;transition:border-color .15s,background .15s;background:var(--block);display:flex;flex-direction:column;align-items:center;justify-content:center;padding:20px}.upload-box:hover{border-color:var(--blue);background:var(--hover)}.upload-box svg{width:28px;height:28px;stroke:var(--text-3);stroke-width:1.8}.upload-box .ub-text{font-size:14px;color:var(--text-2);margin-top:6px}.upload-box .ub-hint{font-size:12px;color:var(--text-3);margin-top:2px}.upload-row{display:flex;gap:12px;flex-wrap:wrap}.upload-box.card-shape{width:260px;aspect-ratio:1.586 / 1;padding:0;flex:none}.upload-box.card-shape svg{width:24px;height:24px}.upload-box.card-shape .ub-text{font-size:13px;margin-top:4px}.upload-box.card-shape .ub-hint{font-size:11px}.upload-box.doc-shape{width:180px;aspect-ratio:.707 / 1;padding:0}.upload-box.doc-shape svg{width:24px;height:24px}.upload-box.doc-shape .ub-text{font-size:13px;margin-top:4px}.upload-box.doc-shape .ub-hint{font-size:11px}.upload-box.uniform{width:200px;height:140px;padding:0;flex:none}.upload-box.uniform svg{width:24px;height:24px}.upload-box.uniform .ub-text{font-size:13px;margin-top:4px}.upload-box.uniform .ub-hint{font-size:11px}.money{font-variant-numeric:tabular-nums;font-weight:600;letter-spacing:-.02em;color:var(--text)}.amt-pending{color:var(--orange)}.amt-paid{color:var(--green)}.amt-overdue{color:var(--red)}.amt-settled{color:var(--gray)}.staff-mini{display:inline-flex;align-items:center;gap:8px}.staff-mini .st-avatar{width:28px;height:28px;border-radius:var(--radius);background:linear-gradient(135deg,#3a6cb5,#25507f);color:#fff;font-size:12px;font-weight:600;display:flex;align-items:center;justify-content:center;flex-shrink:0}.staff-mini .st-name{font-weight:600;color:var(--text)}.staff-mini .st-sub{font-size:12px;color:var(--text-3);display:block}.flex{display:flex;align-items:center}.flex-between{display:flex;align-items:center;justify-content:space-between}.flex-1{flex:1}.gap-6{gap:6px}.gap-8{gap:8px}.gap-10{gap:10px}.gap-12{gap:12px}.gap-16{gap:16px}.mt-8{margin-top:8px}.mt-12{margin-top:12px}.mt-16{margin-top:16px}.mt-20{margin-top:20px}.mb-12{margin-bottom:12px}.mb-16{margin-bottom:16px}.text-2{color:var(--text-2)}.text-3{color:var(--text-3)}.text-13{font-size:13px}.text-14{font-size:14px}.bold{font-weight:700}.hidden{display:none!important}.mono{font-family:SF Mono,Consolas,monospace;font-variant-numeric:tabular-nums}.warn-item{display:flex;align-items:flex-start;gap:10px;padding:11px 14px;border-bottom:1px solid #f0f2f6}.warn-item:last-child{border-bottom:none}.warn-item .w-icon{width:28px;height:28px;border-radius:var(--radius);background:var(--wbg, var(--orange-bg));display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:1px}.warn-item .w-icon svg{width:14px;height:14px;stroke:var(--wc, var(--orange));stroke-width:2.4}.warn-item .w-main{flex:1;min-width:0}.warn-item .w-title{font-size:14px;font-weight:600;color:var(--text)}.warn-item .w-desc{font-size:12.5px;color:var(--text-3);margin-top:2px}.warn-item .w-time{font-size:12px;color:var(--text-3);white-space:nowrap}.check-list{display:flex;flex-direction:column;gap:4px}.check-list .cl-item{display:flex;align-items:center;gap:10px;padding:8px 12px;border:1px solid var(--border);border-radius:var(--radius);background:var(--block);cursor:pointer}.check-list .cl-item:hover{border-color:var(--blue)}.check-list .cl-item.checked{border-color:var(--blue);background:var(--blue-bg)}.check-list .cl-item input[type=checkbox]{accent-color:var(--blue);width:15px;height:15px}.check-list .cl-item .cl-name{font-size:14px;font-weight:600;color:var(--text);flex:1}.check-list .cl-item .cl-desc{font-size:12px;color:var(--text-3)}.loading-mask{position:absolute;top:0;right:0;bottom:0;left:0;background:#ffffffb3;display:flex;align-items:center;justify-content:center;z-index:10;border-radius:var(--radius)}.spinner{width:26px;height:26px;border:3px solid var(--blue-bg);border-top-color:var(--blue);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.flash-up{animation:flashUp .8s ease}@keyframes flashUp{0%{background:#fff3d6}to{background:transparent}}.cascade-group{border:1px solid var(--border);border-radius:var(--radius);margin-bottom:12px;overflow:hidden}.cascade-group .cg-head{display:flex;align-items:center;gap:8px;padding:10px 14px;background:var(--block);border-bottom:1px solid var(--border);font-size:14px;font-weight:700;color:var(--text)}.cascade-group .cg-head .cg-dot{width:8px;height:8px;border-radius:var(--radius);flex-shrink:0}.cascade-group .cg-head .cg-count{margin-left:auto;font-size:12px;color:var(--text-3)}.cascade-group .cg-body{padding:6px 0}.cascade-group .cg-task{display:flex;align-items:center;gap:10px;padding:8px 14px;border-bottom:1px solid #f5f7fa;font-size:14px}.cascade-group .cg-task:last-child{border-bottom:none}.cascade-group .cg-task .ct-check{width:16px;height:16px;border:2px solid var(--border-2);border-radius:var(--radius);flex-shrink:0;cursor:pointer;display:flex;align-items:center;justify-content:center}.cascade-group .cg-task .ct-check.done{background:var(--green);border-color:var(--green)}.cascade-group .cg-task .ct-check.done:after{content:"";width:6px;height:3px;border-left:2px solid #fff;border-bottom:2px solid #fff;transform:rotate(-45deg);margin-top:-2px}.cascade-group .cg-task .ct-name{font-weight:600;color:var(--text);flex:1}.cascade-group .cg-task .ct-desc{font-size:12px;color:var(--text-3)}.cascade-group .cg-task .ct-status{font-size:12px;font-weight:600;white-space:nowrap}.check-item{display:flex;align-items:flex-start;gap:12px;padding:12px 16px;border:1px solid var(--border-2, #e0e0e0);border-radius:var(--radius);margin-bottom:8px}.check-item.passed{border-left:3px solid var(--green)}.check-item.failed{border-left:3px solid var(--red)}.check-item .ci-icon{flex-shrink:0;width:28px;height:28px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius)}.check-item.passed .ci-icon{background:var(--green-bg)}.check-item.failed .ci-icon{background:var(--red-bg)}.check-item .ci-icon svg{width:20px;height:20px;stroke-width:2.5}.check-item.passed .ci-icon svg{stroke:var(--green)}.check-item.failed .ci-icon svg{stroke:var(--red)}.check-item .ci-body{flex:1;min-width:0}.check-item .ci-head{display:flex;align-items:center;gap:8px;margin-bottom:4px}.check-item .ci-name{font-size:15px;font-weight:600;color:var(--text)}.check-item .ci-desc{font-size:13px;color:var(--text-3);margin-bottom:4px}.check-item .ci-detail{font-size:13px;font-weight:500}.check-item.passed .ci-detail{color:var(--green)}.check-item.failed .ci-detail{color:var(--red)}.check-actions{margin-top:20px;padding-top:16px;border-top:1px solid var(--border-2, #e0e0e0);display:flex;justify-content:flex-end;gap:8px}.card-body.flush{padding:0}.clip-line{display:inline-block;max-width:300px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:bottom}.clip-line.sub{max-width:260px;font-size:12.5px}.clip-line.wide{max-width:420px}
