:root{--bg: #f6f7f9;--panel: #ffffff;--panel-2: #fbfcfd;--line: #e6e8ec;--line-2: #d5d9e0;--ink: #101828;--ink-2: #475467;--ink-3: #8a94a6;--ink-4: #b4bcc9;--brand: #1d4ed8;--brand-2: #1a45bd;--brand-bg: #eef3ff;--brand-line: #c9d8fb;--green: #15803d;--green-bg: #eaf7ef;--amber: #b45309;--amber-bg: #fdf5e6;--red: #b42318;--red-bg: #fdf0ef;--violet: #6d28d9;--violet-bg: #f3eeff;--cyan: #0e7490;--cyan-bg: #e9f6f9;--gray-bg: #f2f4f7;--r: 10px;--r-sm: 7px;--shadow-1: 0 1px 2px rgba(16, 24, 40, .06);--shadow-2: 0 8px 24px -6px rgba(16, 24, 40, .14), 0 2px 6px rgba(16, 24, 40, .06);--shadow-3: 0 24px 48px -12px rgba(16, 24, 40, .24);--side-w: 226px;--top-h: 56px}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;font-size:13px;line-height:1.6;color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased}button,input,select,textarea{font:inherit;color:inherit}a{color:var(--brand);text-decoration:none}h1,h2,h3,h4{font-weight:600;letter-spacing:-.01em}.num,.money,td.num,td.money{font-variant-numeric:tabular-nums}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:#d3d8e0;border-radius:6px;border:3px solid transparent;background-clip:content-box}::-webkit-scrollbar-thumb:hover{background:#b9c1cd;background-clip:content-box;border:3px solid transparent}::-webkit-scrollbar-track{background:transparent}.app{display:flex;height:100%;overflow:hidden}.side{width:var(--side-w);flex:none;background:var(--panel);border-right:1px solid var(--line);display:flex;flex-direction:column}.brand{height:var(--top-h);display:flex;align-items:center;gap:9px;padding:0 16px;border-bottom:1px solid var(--line);flex:none}.brand-mark{width:26px;height:26px;border-radius:7px;flex:none;background:linear-gradient(140deg,#2f6bff,#1a3fc4);color:#fff;font-size:13px;font-weight:700;display:grid;place-items:center;letter-spacing:-.03em}.brand-name{font-size:14px;font-weight:600;letter-spacing:-.01em}.brand-sub{font-size:10.5px;color:var(--ink-3);line-height:1.1;margin-top:1px}.nav{flex:1;overflow-y:auto;padding:10px 8px 20px}.nav-group{margin-bottom:14px}.nav-title{font-size:10.5px;letter-spacing:.08em;color:var(--ink-4);padding:6px 10px 5px;text-transform:uppercase;font-weight:600}.nav-item{display:flex;align-items:center;gap:9px;width:100%;padding:7px 10px;border:0;background:none;cursor:pointer;border-radius:var(--r-sm);color:var(--ink-2);font-size:13px;text-align:left;transition:background .12s,color .12s}.nav-item:hover{background:var(--gray-bg);color:var(--ink)}.nav-item.active{background:var(--brand-bg);color:var(--brand);font-weight:500}.nav-item.active svg{color:var(--brand)}.nav-item svg{width:15px;height:15px;color:var(--ink-3);flex:none}.nav-badge{margin-left:auto;font-size:10.5px;padding:0 5px;min-width:18px;height:17px;border-radius:9px;background:var(--red-bg);color:var(--red);display:grid;place-items:center;font-weight:600}.side-foot{padding:10px;border-top:1px solid var(--line)}.user-chip{display:flex;align-items:center;gap:9px;padding:6px;border-radius:var(--r-sm);cursor:pointer}.user-chip:hover{background:var(--gray-bg)}.avatar{width:28px;height:28px;border-radius:50%;flex:none;background:var(--brand-bg);color:var(--brand);font-weight:600;font-size:12px;display:grid;place-items:center}.user-name{font-size:12.5px;font-weight:500;line-height:1.25}.user-role{font-size:10.5px;color:var(--ink-3)}.main{flex:1;display:flex;flex-direction:column;min-width:0}.topbar{height:var(--top-h);flex:none;background:var(--panel);border-bottom:1px solid var(--line);display:flex;align-items:center;gap:14px;padding:0 20px}.topbar-title{font-size:14.5px;font-weight:600}.topbar-crumb{color:var(--ink-3);font-weight:400;font-size:13px}.searchbox{flex:1;max-width:380px;margin-left:8px;position:relative}.searchbox input{width:100%;height:32px;border:1px solid var(--line);background:var(--panel-2);border-radius:8px;padding:0 10px 0 30px;font-size:12.5px;outline:none}.searchbox input:focus{border-color:var(--brand-line);background:#fff;box-shadow:0 0 0 3px #1d4ed814}.searchbox svg{position:absolute;left:9px;top:9px;width:14px;height:14px;color:var(--ink-3)}.searchbox kbd{position:absolute;right:7px;top:7px;font-size:10px;color:var(--ink-3);border:1px solid var(--line);border-radius:4px;padding:0 4px;background:#fff}.top-actions{margin-left:auto;display:flex;align-items:center;gap:6px}.icon-btn{width:32px;height:32px;border:1px solid transparent;background:none;border-radius:8px;display:grid;place-items:center;cursor:pointer;color:var(--ink-2);position:relative}.icon-btn:hover{background:var(--gray-bg)}.icon-btn svg{width:17px;height:17px}.dot{position:absolute;top:6px;right:6px;width:6px;height:6px;background:var(--red);border-radius:50%;border:1.5px solid #fff}.content{flex:1;overflow-y:auto;padding:18px 22px 48px}.page-head{display:flex;align-items:flex-start;gap:12px;margin-bottom:16px;flex-wrap:wrap}.page-title{font-size:19px;font-weight:600;letter-spacing:-.02em}.page-desc{font-size:12.5px;color:var(--ink-3);margin-top:3px}.page-head .grow{flex:1}.btn{height:32px;padding:0 12px;border-radius:8px;border:1px solid var(--line-2);background:var(--panel);color:var(--ink);font-size:12.5px;font-weight:500;display:inline-flex;align-items:center;gap:5px;cursor:pointer;white-space:nowrap;transition:all .12s}.btn:hover{background:var(--panel-2);border-color:var(--ink-4)}.btn:active{transform:translateY(.5px)}.btn svg{width:14px;height:14px}.btn.primary{background:var(--brand);border-color:var(--brand);color:#fff}.btn.primary:hover{background:var(--brand-2);border-color:var(--brand-2)}.btn.ghost{border-color:transparent;background:none;color:var(--ink-2)}.btn.ghost:hover{background:var(--gray-bg);border-color:transparent;color:var(--ink)}.btn.danger{color:var(--red);border-color:#f0d3d0;background:#fff}.btn.danger:hover{background:var(--red-bg)}.btn.sm{height:26px;padding:0 8px;font-size:11.5px;border-radius:6px}.btn:disabled{opacity:.5;cursor:not-allowed}.input,.select,.textarea{width:100%;height:32px;border:1px solid var(--line-2);border-radius:8px;padding:0 9px;background:#fff;font-size:12.5px;outline:none;transition:border-color .12s,box-shadow .12s}.textarea{height:auto;padding:7px 9px;resize:vertical;min-height:62px;line-height:1.55}.input:focus,.select:focus,.textarea:focus{border-color:var(--brand-line);box-shadow:0 0 0 3px #1d4ed814}.input::placeholder,.textarea::placeholder{color:var(--ink-4)}.select{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='%238a94a6' stroke-width='2.5'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 8px center;padding-right:26px}.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow-1)}.card-head{padding:12px 14px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:8px}.card-title{font-size:13px;font-weight:600}.card-sub{font-size:11.5px;color:var(--ink-3)}.card-body{padding:14px}.card-body.tight{padding:0}.grid{display:grid;gap:12px}.row{display:flex;align-items:center;gap:8px}.wrap{flex-wrap:wrap}.grow{flex:1;min-width:0}.muted{color:var(--ink-3)}.small{font-size:11.5px}.mono{font-variant-numeric:tabular-nums}.tr{text-align:right}.nowrap{white-space:nowrap}.ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.kpi{padding:14px 16px}.kpi-label{font-size:11.5px;color:var(--ink-3);display:flex;align-items:center;gap:5px}.kpi-value{font-size:24px;font-weight:600;letter-spacing:-.03em;margin-top:5px;font-variant-numeric:tabular-nums;line-height:1.2}.kpi-value.sm{font-size:19px}.kpi-foot{font-size:11.5px;color:var(--ink-3);margin-top:6px;display:flex;gap:8px;align-items:center}.kpi-cur{font-size:13px;font-weight:500;color:var(--ink-3);margin-right:1px}.trend-up{color:var(--green)}.trend-down{color:var(--red)}.pill{display:inline-flex;align-items:center;gap:4px;height:20px;padding:0 7px;border-radius:5px;font-size:11px;font-weight:500;white-space:nowrap;background:var(--gray-bg);color:var(--ink-2)}.pill[data-tone=green]{background:var(--green-bg);color:var(--green)}.pill[data-tone=red]{background:var(--red-bg);color:var(--red)}.pill[data-tone=amber]{background:var(--amber-bg);color:var(--amber)}.pill[data-tone=blue]{background:var(--brand-bg);color:var(--brand)}.pill[data-tone=violet]{background:var(--violet-bg);color:var(--violet)}.pill[data-tone=cyan]{background:var(--cyan-bg);color:var(--cyan)}.pill[data-tone=gray]{background:var(--gray-bg);color:var(--ink-2)}.pill .dotmark{width:5px;height:5px;border-radius:50%;background:currentColor}.table-wrap{overflow:auto}.table{width:100%;border-collapse:separate;border-spacing:0;font-size:12.5px}.table th{position:sticky;top:0;z-index:2;background:var(--panel-2);text-align:left;font-weight:500;color:var(--ink-3);font-size:11.5px;padding:9px 12px;border-bottom:1px solid var(--line);white-space:nowrap}.table th.sortable{cursor:pointer;user-select:none}.table th.sortable:hover{color:var(--ink)}.table td{padding:9px 12px;border-bottom:1px solid var(--line);vertical-align:middle;color:var(--ink-2)}.table tbody tr:hover td{background:#fafbfc}.table tbody tr.clickable{cursor:pointer}.table tbody tr:last-child td{border-bottom:0}.table td.strong,.table td .strong{color:var(--ink);font-weight:500}.table .cell-sub{font-size:11px;color:var(--ink-3);margin-top:1px}.table-foot{display:flex;align-items:center;gap:10px;padding:10px 12px;border-top:1px solid var(--line);font-size:12px;color:var(--ink-3)}.table-toolbar{display:flex;align-items:center;gap:8px;padding:10px 12px;border-bottom:1px solid var(--line);flex-wrap:wrap}.table-toolbar .input{height:30px}.table-toolbar .select{height:30px;width:auto;min-width:96px}.table-toolbar .search{position:relative;width:220px}.table-toolbar .search input{padding-left:28px}.table-toolbar .search svg{position:absolute;left:8px;top:8px;width:14px;height:14px;color:var(--ink-3)}.pager{display:flex;align-items:center;gap:4px;margin-left:auto}.pager button{min-width:26px;height:26px;border:1px solid var(--line);background:#fff;border-radius:6px;font-size:11.5px;cursor:pointer;color:var(--ink-2)}.pager button:hover:not(:disabled){border-color:var(--line-2);background:var(--panel-2)}.pager button.on{background:var(--brand-bg);border-color:var(--brand-line);color:var(--brand);font-weight:600}.pager button:disabled{opacity:.4;cursor:not-allowed}.empty{padding:40px 20px;text-align:center;color:var(--ink-3);font-size:12.5px}.empty svg{width:30px;height:30px;color:var(--ink-4);margin-bottom:8px}.skeleton{background:linear-gradient(90deg,#eef0f4 25%,#f6f7f9 37%,#eef0f4 63%);background-size:400% 100%;animation:sk 1.2s ease infinite;border-radius:6px}@keyframes sk{0%{background-position:100% 50%}to{background-position:0 50%}}.mask{position:fixed;inset:0;background:#10182852;z-index:60;animation:fade .16s ease}@keyframes fade{0%{opacity:0}}.drawer{position:fixed;top:0;right:0;bottom:0;width:520px;max-width:94vw;background:var(--panel);z-index:61;display:flex;flex-direction:column;box-shadow:var(--shadow-3);animation:slidein .2s cubic-bezier(.2,.8,.2,1)}@keyframes slidein{0%{transform:translate(24px);opacity:.6}}.drawer-head{padding:14px 18px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:10px}.drawer-title{font-size:14.5px;font-weight:600;flex:1}.drawer-body{flex:1;overflow-y:auto;padding:16px 18px 20px}.drawer-foot{padding:12px 18px;border-top:1px solid var(--line);display:flex;gap:8px;justify-content:flex-end;background:var(--panel-2)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px 14px}.field{display:flex;flex-direction:column;gap:4px;min-width:0}.field.full{grid-column:1 / -1}.field label{font-size:11.5px;color:var(--ink-2);font-weight:500}.field label .req{color:var(--red);margin-left:2px}.field .hint{font-size:10.5px;color:var(--ink-3)}.field .err{font-size:11px;color:var(--red)}.form-section{grid-column:1 / -1;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-4);font-weight:600;padding-top:6px;border-top:1px dashed var(--line);margin-top:2px}.form-section:first-child{border:0;padding-top:0;margin-top:0}.modal{position:fixed;z-index:61;top:50%;left:50%;transform:translate(-50%,-50%);width:560px;max-width:92vw;max-height:86vh;background:#fff;border-radius:12px;box-shadow:var(--shadow-3);display:flex;flex-direction:column;animation:pop .16s ease}@keyframes pop{0%{transform:translate(-50%,-48%) scale(.98);opacity:0}}.modal.wide{width:760px}.toast-wrap{position:fixed;bottom:20px;left:50%;transform:translate(-50%);z-index:99;display:flex;flex-direction:column;gap:8px;align-items:center}.toast{background:#101828;color:#fff;padding:8px 14px;border-radius:8px;font-size:12.5px;box-shadow:var(--shadow-2);animation:toastin .2s ease;display:flex;align-items:center;gap:7px;max-width:80vw}.toast.err{background:#7a1d15}.toast.ok{background:#0f5132}@keyframes toastin{0%{transform:translateY(8px);opacity:0}}.board{display:flex;gap:10px;overflow-x:auto;padding-bottom:8px;align-items:flex-start}.board-col{flex:1 1 168px;min-width:168px;max-width:320px;background:#f2f4f7;border-radius:10px;border:1px solid var(--line);display:flex;flex-direction:column;max-height:calc(100vh - 230px)}.board-col.over{background:var(--brand-bg);border-color:var(--brand-line)}.board-head{padding:9px 11px;display:flex;align-items:center;gap:6px;font-size:12px;font-weight:600;border-bottom:1px solid var(--line)}.board-count{font-size:11px;color:var(--ink-3);font-weight:500;margin-left:auto}.board-list{padding:7px;display:flex;flex-direction:column;gap:6px;overflow-y:auto}.opp-card{background:#fff;border:1px solid var(--line);border-radius:8px;padding:9px 10px;cursor:grab;box-shadow:var(--shadow-1);transition:border-color .12s,box-shadow .12s}.opp-card:hover{border-color:var(--brand-line);box-shadow:var(--shadow-2)}.opp-card:active{cursor:grabbing}.opp-name{font-size:12.5px;font-weight:500;color:var(--ink);line-height:1.4}.opp-meta{display:flex;align-items:center;gap:6px;margin-top:5px;font-size:11px;color:var(--ink-3)}.opp-amount{font-size:13px;font-weight:600;color:var(--ink);font-variant-numeric:tabular-nums;margin-top:4px}.detail-head{display:flex;align-items:flex-start;gap:14px;margin-bottom:16px}.detail-title{font-size:18px;font-weight:600;letter-spacing:-.02em}.detail-sub{font-size:12px;color:var(--ink-3);margin-top:3px;display:flex;gap:10px;flex-wrap:wrap;align-items:center}.tabs{display:flex;gap:2px;border-bottom:1px solid var(--line);margin-bottom:14px}.tab{padding:8px 12px;border:0;background:none;cursor:pointer;font-size:12.5px;color:var(--ink-3);border-bottom:2px solid transparent;margin-bottom:-1px}.tab:hover{color:var(--ink)}.tab.on{color:var(--brand);border-bottom-color:var(--brand);font-weight:500}.tab .cnt{font-size:10.5px;background:var(--gray-bg);padding:0 4px;border-radius:4px;margin-left:4px;color:var(--ink-3)}.kv{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px 18px}.kv-item{min-width:0}.kv-k{font-size:11px;color:var(--ink-3);margin-bottom:2px}.kv-v{font-size:12.5px;color:var(--ink);word-break:break-all}.progress{height:6px;border-radius:3px;background:#eef0f4;overflow:hidden}.progress>i{display:block;height:100%;background:var(--brand);border-radius:3px}.progress.green>i{background:var(--green)}.progress.red>i{background:var(--red)}.progress.amber>i{background:var(--amber)}.alert-item{display:flex;gap:10px;padding:10px 12px;border-bottom:1px solid var(--line)}.alert-item:last-child{border-bottom:0}.alert-bar{width:3px;border-radius:2px;flex:none;background:var(--ink-4)}.alert-bar.danger{background:var(--red)}.alert-bar.warn{background:var(--amber)}.alert-bar.info{background:var(--brand)}.alert-title{font-size:12.5px;font-weight:500}.alert-desc{font-size:11px;color:var(--ink-3);margin-top:1px}.chart{width:100%}.login-wrap{min-height:100%;display:grid;place-items:center;background:radial-gradient(1200px 600px at 50% -10%,#e8efff,#f6f7f9 55%);padding:24px}.login-card{width:380px;background:#fff;border:1px solid var(--line);border-radius:14px;padding:28px;box-shadow:0 20px 48px -24px #10182847}.login-card h1{font-size:20px;margin-bottom:4px}.login-tip{font-size:12px;color:var(--ink-3);margin-bottom:20px}.login-demo{margin-top:16px;padding:10px 12px;background:var(--panel-2);border:1px dashed var(--line-2);border-radius:8px;font-size:11.5px;color:var(--ink-2);line-height:1.9}.login-demo b{color:var(--ink);font-weight:600}.login-demo .acct{cursor:pointer;color:var(--brand)}.login-err{background:var(--red-bg);color:var(--red);font-size:12px;padding:7px 10px;border-radius:7px;margin-bottom:12px}.pop{position:absolute;top:38px;left:0;right:0;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow-3);z-index:40;overflow:hidden;max-height:420px;overflow-y:auto}.pop-group{padding:5px 0;border-bottom:1px solid var(--line)}.pop-group:last-child{border-bottom:0}.pop-label{font-size:10.5px;color:var(--ink-4);padding:4px 12px;text-transform:uppercase;letter-spacing:.06em}.pop-item{padding:6px 12px;cursor:pointer}.pop-item:hover{background:var(--brand-bg)}.pop-item .t{font-size:12.5px;color:var(--ink)}.pop-item .s{font-size:11px;color:var(--ink-3)}@media (max-width: 1080px){:root{--side-w: 64px}.brand-name,.brand-sub,.nav-title,.nav-item span,.user-name,.user-role,.nav-badge{display:none}.brand{justify-content:center;padding:0}.nav-item{justify-content:center;padding:9px 0}.searchbox{max-width:none}}@media (max-width: 720px){.content{padding:14px 12px 40px}.form-grid{grid-template-columns:1fr}.topbar{padding:0 12px;gap:8px}.searchbox kbd{display:none}}.strip{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;border-bottom:1px solid var(--line)}.strip-cell{padding:14px 16px;border-left:1px solid var(--line);min-width:0}.strip-cell:first-child{border-left:0}.strip-k{font-size:11.5px;color:var(--ink-3)}.strip-v{font-size:19px;font-weight:600;letter-spacing:-.02em;margin-top:3px;font-variant-numeric:tabular-nums;line-height:1.25}.strip-v.sm{font-size:15px;font-weight:500}.strip-v .unit{font-size:12px;font-weight:500;color:var(--ink-3);margin-left:2px}.strip-foot{font-size:11px;color:var(--ink-3);margin-top:3px}.sheet{background:#fff;border:1px solid var(--line);border-radius:8px;padding:26px 30px 20px;max-width:880px;margin:0 auto}.sheet-title{text-align:center;font-size:17px;font-weight:600;letter-spacing:.12em}.sheet-sub{text-align:center;font-size:11.5px;color:var(--ink-3);margin-top:5px}.sheet table{width:100%;border-collapse:collapse;margin-top:16px;font-size:12.5px}.sheet th{border-bottom:1px solid var(--ink-2);padding:7px 6px;font-size:11.5px;color:var(--ink-2);font-weight:500;text-align:left}.sheet td{padding:7px 6px;border-bottom:1px dashed var(--line);color:var(--ink-2)}.sheet td.num{text-align:right;font-variant-numeric:tabular-nums}.sheet tr.bold td{font-weight:600;color:var(--ink)}.sheet tr.accent td{color:var(--brand);font-weight:600}.sheet tr.total td{border-top:1px solid var(--ink-2);border-bottom:1px solid var(--ink-2);font-weight:600;color:var(--ink)}.sheet-note{font-size:11px;color:var(--ink-3);text-align:right}.sheet-sign{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:22px;padding-top:10px;border-top:1px solid var(--line);font-size:11.5px;color:var(--ink-3)}@media print{.side,.topbar,.page-head,.tabs,.table-toolbar,.btn,.no-print{display:none!important}.content{padding:0;overflow:visible}.card{border:0;box-shadow:none}.sheet{border:0;box-shadow:none;max-width:none;padding:0}}.appr-steps{display:block}.appr-step{display:flex;gap:10px;padding-bottom:14px;position:relative}.appr-step:last-child{padding-bottom:0}.appr-step:before{content:"";position:absolute;left:10px;top:22px;bottom:0;width:1px;background:var(--line)}.appr-step:last-child:before{display:none}.appr-dot{width:21px;height:21px;border-radius:50%;flex:none;display:grid;place-items:center;font-size:11px;font-weight:600;background:var(--gray-bg);color:var(--ink-3);border:1px solid var(--line);position:relative;z-index:1}.appr-dot.approved{background:var(--green-bg);color:var(--green);border-color:#bfe3cc}.appr-dot.pending{background:var(--amber-bg);color:var(--amber);border-color:#f0dcb4}.appr-dot.rejected{background:var(--red-bg);color:var(--red);border-color:#f3c9c5}.appr-body{min-width:0;padding-top:1px}.upload-zone{border:1px dashed var(--line);border-radius:10px;padding:18px 14px;text-align:center;cursor:pointer;color:var(--ink-2);background:#fbfcfd;transition:border-color .15s,background .15s}.upload-zone:hover,.upload-zone.over{border-color:var(--brand);background:var(--brand-bg, #f4f8ff);color:var(--brand)}.upload-title{font-size:12.5px;font-weight:500;margin-top:6px}.upload-sub{font-size:11px;color:var(--ink-3);margin-top:3px}.att-list{display:flex;flex-direction:column;gap:6px}.att-row{display:flex;align-items:center;gap:9px;border:1px solid var(--line);border-radius:9px;padding:7px 9px;background:#fff}.att-icon{width:26px;height:26px;border-radius:7px;flex:none;display:grid;place-items:center;background:var(--gray-bg);color:var(--ink-2)}.att-main{min-width:0;flex:1}.att-name{font-size:12.5px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.att-meta{font-size:11px;color:var(--ink-3);margin-top:1px}.att-row .btn.sm{padding:3px 8px}.multi-ref{display:flex;flex-direction:column;gap:6px}.mr-chips{display:flex;flex-wrap:wrap;gap:5px;align-items:center;min-height:22px}.mr-chip{display:inline-flex;align-items:center;gap:3px;background:var(--brand-bg, #f4f8ff);color:var(--brand);border:1px solid rgba(37,99,235,.18);border-radius:999px;padding:2px 4px 2px 9px;font-size:11.5px;line-height:1.6}.mr-chip button{border:0;background:none;cursor:pointer;color:inherit;opacity:.65;display:inline-grid;place-items:center;padding:0 2px}.mr-chip button:hover{opacity:1}.mr-list{border:1px solid var(--line);border-radius:9px;background:#fff;max-height:168px;overflow:auto;padding:3px}.mr-item{display:flex;align-items:center;gap:7px;padding:5px 7px;border-radius:7px;cursor:pointer;font-size:12.5px}.mr-item:hover{background:var(--gray-bg)}.mr-item.on{background:var(--brand-bg, #f4f8ff)}.mr-name{flex:none}.role-card{display:block;width:100%;text-align:left;cursor:pointer;border:1px solid var(--line);background:#fff;border-radius:9px;padding:9px 11px;transition:border-color .12s,background .12s}.role-card:hover{border-color:var(--brand);background:#fafcff}.role-card.on{border-color:var(--brand);background:var(--brand-bg, #f4f8ff);box-shadow:0 0 0 1px var(--brand) inset}.role-desc{font-size:11.5px;color:var(--ink-3);margin-top:5px;line-height:1.55}.role-super{font-size:10px;line-height:1.5;padding:1px 5px;border-radius:4px;background:#fde9e9;color:#c0392b;border:1px solid #f6d5d5}.perm-scope{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:10px 12px;border:1px solid var(--line);border-radius:9px;background:var(--gray-bg);margin-bottom:4px}.perm-label{font-size:12.5px;font-weight:600;margin-bottom:2px}.perm-wrap{max-height:520px;overflow:auto;padding:0 4px}.perm-table{width:100%;border-collapse:collapse;font-size:12.5px}.perm-table thead th{position:sticky;top:0;z-index:2;background:#fff;font-size:11px;font-weight:600;color:var(--ink-3);text-align:left;padding:9px 12px;border-bottom:1px solid var(--line);letter-spacing:.02em}.perm-table thead th.c{text-align:center;width:96px}.perm-table td{padding:2px 12px;border-bottom:1px solid #f4f5f7}.perm-table tbody tr:hover td{background:#fafbfc}.perm-table tr.off .perm-name{color:var(--ink-3)}.perm-group td{padding:12px 12px 5px;background:#fff;font-size:11px;font-weight:700;color:var(--ink-2);letter-spacing:.04em}.perm-group td span:first-child{margin-right:8px}.perm-group td .muted{font-weight:400;letter-spacing:0}.perm-name{padding:7px 12px!important}.perm-table td.c{text-align:center}.chk{display:inline-flex;align-items:center;gap:5px;cursor:pointer;padding:3px 9px;border-radius:999px;border:1px solid var(--line);color:var(--ink-3);font-size:11.5px;user-select:none;background:#fff}.chk input{display:none}.chk.on{border-color:#2563eb59;background:var(--brand-bg, #f4f8ff);color:var(--brand)}.chk.dis{cursor:not-allowed;opacity:.55}.perm-foot{display:flex;align-items:center;gap:10px;padding:12px 14px;border-top:1px solid var(--line);background:#fff;border-radius:0 0 10px 10px}.link-btn{border:0;background:none;padding:0;cursor:pointer;color:var(--brand);font-size:12px;text-decoration:underline;text-decoration-color:#2563eb59;text-underline-offset:2px}.link-btn:hover{text-decoration-color:var(--brand)}
