:root{font-size:16px;font-family:HarmonyOS Sans SC,PingFang SC,Microsoft YaHei,Noto Sans SC,sans-serif;line-height:1.6;font-weight:400;color:#111827;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--bg-canvas: #f4f6f8;--bg-surface: #ffffff;--bg-soft: #f7f8fa;--bg-elevated: #ffffff;--bg-glass: rgba(255, 255, 255, .96);--bg-overlay: rgba(11, 22, 46, .08);--border-soft: #e5e7eb;--border-strong: #d1d5db;--text-primary: #0f172a;--text-secondary: #334155;--text-muted: #64748b;--text-main: var(--text-primary);--brand: #315f8c;--brand-strong: #24496d;--brand-soft: rgba(49, 95, 140, .1);--brand-glow: rgba(49, 95, 140, .16);--accent: #4f7f76;--primary: var(--brand);--success: #16a34a;--warning: #b7791f;--danger: #c24141;--chart-blue: #2f6bff;--chart-green: #22c55e;--chart-orange: #f59e0b;--chart-purple: #6366f1;--chart-red: #ef4444;--shadow-soft: 0 1px 3px rgba(15, 23, 42, .06);--shadow-card: 0 2px 8px rgba(15, 23, 42, .06);--shadow-strong: 0 12px 28px rgba(15, 23, 42, .14);--radius-xl: 8px;--radius-lg: 8px;--radius-md: 6px;--radius-sm: 6px;--page-max: 1400px;--page-gap: 20px;--card-padding: 20px;--grid-gap: 18px;--dialog-sm: 520px;--dialog-md: 640px;--dialog-lg: 760px;--control-height: 38px;--font-xxs: 12px;--font-xs: 13px;--font-sm: 14px;--el-color-primary: var(--brand);--el-font-size-base: 15px;--el-border-color-lighter: var(--border-soft);--el-border-color: var(--border-strong);--el-text-color-primary: var(--text-primary);--el-text-color-regular: var(--text-secondary);--el-text-color-secondary: var(--text-muted)}*{box-sizing:border-box}html,body{margin:0;min-width:320px;min-height:100vh}body{background-color:var(--bg-canvas);color:var(--text-primary)}a{color:inherit;text-decoration:none}img{max-width:100%;display:block}#app{min-height:100vh}.page{display:flex;flex-direction:column;gap:var(--page-gap);max-width:var(--page-max);margin:0 auto}.page-header{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:16px}.page-header h2{margin:0;font-size:23px;font-weight:700;letter-spacing:0;color:var(--text-primary)}.page-header p{margin:6px 0 0;color:var(--text-muted)}.header-actions{display:flex;gap:10px;flex-wrap:wrap;justify-content:flex-end}.card-title{display:flex;align-items:center;justify-content:space-between;gap:12px;font-weight:600;margin-bottom:12px}.section-card,.filter-card,.table-card,.list-card,.chart-card,.matrix-card,.case-card,.sync-card,.source-card,.policy-list-card{border-radius:var(--radius-lg);border:1px solid var(--border-soft);background:var(--bg-surface);box-shadow:var(--shadow-card)}.panel-grid{display:grid;gap:var(--grid-gap)}.stat-chip{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:6px;background:var(--bg-soft);color:var(--text-secondary);font-size:13px}.filter-bar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:12px;border-radius:var(--radius-md);background:var(--bg-soft);border:1px solid var(--border-soft)}.filters{display:flex;flex-wrap:wrap;gap:10px}.filters>*{flex:1 1 150px;min-width:130px}.filters .filter-action-btn,.filters>.actions{flex:0 0 auto}.muted{color:var(--text-muted)}.font-xxs,.font-xs,.font-sm{line-height:1.5}.font-xxs{font-size:var(--font-xs)}.font-xs{font-size:var(--font-sm)}.font-sm{font-size:15px}.el-card{border-radius:var(--radius-lg);border:1px solid var(--border-soft);box-shadow:var(--shadow-card);background:var(--bg-surface)}.el-card__body{padding:var(--card-padding)}.el-input__wrapper,.el-select__wrapper,.el-textarea__inner,.el-date-editor.el-input,.el-date-editor.el-input__wrapper{border-radius:var(--radius-sm);transition:box-shadow .2s ease,border-color .2s ease,transform .2s ease}.el-input__wrapper,.el-select__wrapper,.el-date-editor.el-input__wrapper{min-height:var(--control-height)}.el-input__wrapper.is-focus,.el-select__wrapper.is-focused,.el-textarea__inner:focus,.el-date-editor.el-input__wrapper.is-focus{box-shadow:0 0 0 3px var(--brand-soft)}.el-button{border-radius:6px;font-weight:600;letter-spacing:0;transition:background-color .18s ease,border-color .18s ease}.el-button:not(.is-disabled):not(.is-text):hover{box-shadow:none}.el-button.is-text{font-weight:600}.el-table{width:100%!important;border-radius:var(--radius-md)}.el-table__inner-wrapper,.el-table__header,.el-table__body{width:100%!important}.el-table__body-wrapper{width:100%!important;overflow-x:auto}.el-table th.el-table__cell{background:#f7f8fa;color:var(--text-secondary);font-weight:600;text-align:center}.el-table th.el-table__cell .cell,.el-table td.el-table__cell,.el-table td.el-table__cell .cell{text-align:center}.el-table td.col-name,.el-table td.col-name .cell,.el-table th.col-name__header,.el-table th.col-name__header .cell{text-align:left}.el-table td.col-name .person-cell{justify-content:flex-start}.el-table .person-cell,.el-table .match-progress,.el-table .action-group,.el-table .action-tags,.el-table .op-actions{justify-content:center}.el-table__cell .cell{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.el-table--enable-row-hover .el-table__body tr:hover>td.el-table__cell{background:#f6f8fa}.el-table-filter,.role-filter-panel{min-width:168px;max-width:min(360px,calc(100vw - 32px));border:1px solid rgba(148,163,184,.22)!important;border-radius:8px!important;box-shadow:0 8px 22px #0f172a1f!important}.el-table-filter .el-table-filter__content,.role-filter-panel .el-table-filter__content{padding:8px 10px 6px}.el-table-filter .el-table-filter__wrap,.role-filter-panel .el-table-filter__wrap{max-width:100%;max-height:220px}.el-table-filter .el-checkbox,.role-filter-panel .el-checkbox{width:100%;min-height:28px;height:auto;margin-right:0;padding:0 4px;border-radius:6px;align-items:flex-start;white-space:normal}.el-table-filter .el-checkbox__input,.role-filter-panel .el-checkbox__input{margin-top:6px}.el-table-filter .el-checkbox__label,.role-filter-panel .el-checkbox__label{flex:1;min-width:0;padding-left:8px;line-height:20px;white-space:normal;overflow-wrap:anywhere;word-break:break-word}.el-table-filter .el-checkbox:hover,.role-filter-panel .el-checkbox:hover{background:#f5f8ff}.el-table-filter .el-table-filter__bottom,.role-filter-panel .el-table-filter__bottom{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:10px;border-top:1px solid rgba(226,232,240,.9)}.el-table-filter .el-table-filter__bottom button,.role-filter-panel .el-table-filter__bottom button{height:30px;margin:0;border:1px solid rgba(37,99,235,.18);border-radius:8px;background:#fff;color:var(--brand);font-size:13px;font-weight:600;cursor:pointer}.el-table-filter .el-table-filter__bottom button:first-child,.role-filter-panel .el-table-filter__bottom button:first-child{background:var(--brand);border-color:var(--brand);color:#fff}.el-table-filter .el-table-filter__bottom button.is-disabled,.role-filter-panel .el-table-filter__bottom button.is-disabled{background:#f1f5f9;border-color:#e2e8f0;color:#94a3b8;cursor:not-allowed}.app-dialog.el-dialog{width:min(92vw,var(--dialog-size, var(--dialog-md)));max-width:min(92vw,var(--dialog-size, var(--dialog-md)));max-height:calc(100vh - 32px);border-radius:var(--radius-lg);box-shadow:var(--shadow-strong);display:flex;flex-direction:column;overflow:hidden}.app-dialog .el-dialog__header{flex:0 0 auto;padding:18px 22px 0}.app-dialog .el-dialog__body{flex:1 1 auto;min-height:0;overflow-y:auto;padding:14px 22px 22px}.app-dialog .el-dialog__footer{flex:0 0 auto;padding:0 22px 18px}.app-dialog--sm{--dialog-size: var(--dialog-sm)}.app-dialog--md{--dialog-size: var(--dialog-md)}.app-dialog--lg{--dialog-size: var(--dialog-lg)}.project-large-dialog.el-dialog{width:min(980px,calc(100vw - 28px))!important;max-width:min(980px,calc(100vw - 28px))!important;height:calc(100vh - 48px)!important;max-height:calc(100vh - 48px)!important;margin:24px auto!important;border-radius:8px!important;display:flex;flex-direction:column;overflow:hidden}.project-large-dialog.el-dialog .el-dialog__header,.project-large-dialog.el-dialog .el-dialog__footer{flex:0 0 auto}.project-large-dialog.el-dialog .el-dialog__body{flex:1 1 auto;min-height:0;overflow-y:auto;padding-top:12px}:is(.app-dialog,.project-large-dialog) .el-input,:is(.app-dialog,.project-large-dialog) .el-input-number,:is(.app-dialog,.project-large-dialog) .el-select,:is(.app-dialog,.project-large-dialog) .el-cascader,:is(.app-dialog,.project-large-dialog) .el-date-editor,:is(.app-dialog,.project-large-dialog) .el-textarea{width:100%;min-width:0}:is(.app-dialog,.project-large-dialog) .el-form-item__content{min-width:0}:is(.app-dialog,.project-large-dialog) .el-input-number .el-input__wrapper{width:100%}.page :is(.stat-card,.kpi-card,.chart-card,.list-card,.table-card,.filter-card,.role-card,.matrix-card,.sync-card,.source-card,.config-card,.case-card,.policy-list-card,.upgrade-card,.feedback-card,.thanks-card){border:1px solid var(--border-soft)!important;background:#fff!important;box-shadow:var(--shadow-card)!important;transition:border-color .2s ease,box-shadow .2s ease}.page :is(.stat-card,.kpi-card,.chart-card,.list-card,.table-card,.role-card,.matrix-card,.source-card,.policy-list-card):hover{border-color:#cbd5e1!important;box-shadow:0 3px 10px #0f172a12!important}.page :is(.stat-card,.kpi-card,.chart-card){overflow:hidden}.page :is(.filter-card,.filter-row,.policy-filter-row){background:#f7f8fa!important;border-color:#94a3b852!important}.page :is(.table-card,.list-card,.matrix-card,.source-card,.policy-list-card) :is(.el-card__body){padding:clamp(14px,1.1vw,20px)}.page :is(.table-card,.list-card,.matrix-card,.source-card,.policy-list-card) .el-table{width:100%}.page :is(.table-card,.list-card,.matrix-card,.source-card,.policy-list-card) .el-table :is(th,td).el-table__cell{vertical-align:middle}.page :is(.table-card,.list-card,.matrix-card,.source-card,.policy-list-card) .el-table :is(th,td).el-table__cell .cell{min-width:0}.page :is(.table-card,.list-card,.matrix-card,.source-card,.policy-list-card) :is(.op-actions,.action-group,.action-tags,.policy-row-actions,.monitor-actions){display:inline-flex;align-items:center;justify-content:center;gap:2px 6px;flex-wrap:wrap;white-space:normal}.page :is(.table-card,.list-card,.matrix-card,.source-card,.policy-list-card) :is(.op-sep,.action-divider,.action-sep){color:var(--text-muted);opacity:.8}.page :is(.table-card,.list-card,.matrix-card,.source-card,.policy-list-card) .el-table th.el-table__cell{background:#f7f8fa}.page :is(.table-card,.list-card,.matrix-card,.source-card,.policy-list-card) .el-pagination{margin-top:14px;justify-content:flex-end}.page :is(.stat-label,.kpi-label){color:#42546d;font-weight:600}.page :is(.stat-value,.kpi-value){letter-spacing:0}.page .empty-state{border-radius:8px;border:1px dashed rgba(148,163,184,.5);background:#f8fbff}:focus-visible{outline:2px solid var(--brand);outline-offset:2px}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:#94a3b81f;border-radius:8px}::-webkit-scrollbar-thumb{background:#47556957;border-radius:8px}::-webkit-scrollbar-thumb:hover{background:#1e40af6b}@keyframes pageIn{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes riseIn{0%{opacity:0;transform:translateY(16px) scale(.985)}to{opacity:1;transform:translateY(0) scale(1)}}@media(max-width:900px){.page-header{grid-template-columns:1fr}.header-actions{justify-content:flex-start}.page :is(.stat-card,.kpi-card,.chart-card,.list-card,.table-card,.filter-card,.role-card,.matrix-card,.sync-card,.source-card,.policy-list-card){border-radius:8px!important}.page :is(.table-card,.list-card,.matrix-card,.source-card,.policy-list-card) :is(.el-card__body){padding:12px}.page :is(.table-card,.list-card,.matrix-card,.source-card,.policy-list-card) .el-table{font-size:13px}.page :is(.table-card,.list-card,.matrix-card,.source-card,.policy-list-card) .el-table :is(th,td).el-table__cell{padding:8px}.page :is(.table-card,.list-card,.matrix-card,.source-card,.policy-list-card) :is(.op-actions,.action-group,.action-tags,.policy-row-actions,.monitor-actions){gap:2px 4px}}@media(max-width:600px){:root{--page-gap: 14px;--card-padding: 14px;--grid-gap: 12px;--control-height: 36px}.page-header h2{font-size:20px}.page-header p{font-size:13px}.card-title{font-size:14px}.filters{gap:8px}.filters>*{flex:1 1 160px;min-width:138px}.el-table th.el-table__cell,.el-table td.el-table__cell{padding:8px 10px}.page :is(.table-card,.list-card,.matrix-card,.source-card,.policy-list-card) .el-table__body-wrapper{overflow-x:auto}.page :is(.table-card,.list-card,.matrix-card,.source-card,.policy-list-card) :is(.op-actions,.action-group,.action-tags,.policy-row-actions,.monitor-actions){justify-content:center}}@media(prefers-reduced-motion:reduce){.page,.page>*,.el-button{animation:none;transition:none;transform:none}}.page>.page-header{min-height:58px;padding-bottom:2px}.page>.page-header .header-actions{align-items:center}.page :is(.summary-card,.stat-card,.kpi-card,.chart-card,.filter-card,.table-card,.list-card,.role-card,.matrix-card,.policy-list-card,.source-card,.sync-card,.upgrade-card){border:1px solid #e1e6ec!important;border-radius:8px!important;background-color:#fff!important;background-image:none!important;box-shadow:0 1px 4px #0f172a0d!important}.page :is(.summary-card,.stat-card,.kpi-card){position:relative}.page :is(.summary-card,.stat-card,.kpi-card):before{content:"";position:absolute;inset:0 auto 0 0;width:3px;border-radius:8px 0 0 8px;background:#7594b2}.page :is(.stat-card.green,.summary-card:has(.is-green)):before{background:#6f9b89}.page :is(.stat-card.orange,.summary-card:has(.is-orange)):before{background:#b69768}.page :is(.stat-card.red,.summary-card:has(.is-red)):before{background:#b77a7a}.page :is(.filter-card,.filter-row,.policy-filter-row,.inline-filter-card){background:#f7f8fa!important;background-image:none!important;box-shadow:none!important}.page :is(.table-title-row,.table-head,.matrix-head,.card-section-head){gap:12px}.page :is(.table-title-row,.table-head,.matrix-head) h3,.page :is(.card-section-head__title,.industry-title,.section-title){color:#172033;letter-spacing:0}.page :is(.card-section-head__desc,.card-subtitle,.summary-card__hint){color:#6b778c}.page .el-table{--el-table-header-bg-color: #f5f7f9;--el-table-row-hover-bg-color: #f7f9fb;--el-table-border-color: #e5e9ef}.page .el-table th.el-table__cell{color:#3e4c61;font-weight:600}.page :is(.role-icon,.stat-icon,.kpi-icon){box-shadow:none!important;filter:saturate(.72)}.page :is(.role-actions,.permission-item-actions,.op-actions,.policy-row-actions){letter-spacing:0}.page .el-dialog,.app-dialog{border-radius:8px!important}.page :is(.map-overview-strip,.industry-panel,.map-project-summary){background:#f7f9fb!important;background-image:none!important;border-color:#e1e6ec!important;box-shadow:none!important}.page .industry-bar{background:#e6ebf0!important}.page .industry-bar>span{background:#6487a8!important;box-shadow:none!important}@media(max-width:900px){.page>.page-header{align-items:start}.page>.page-header .header-actions{width:100%}.page>.page-header .header-actions>*{max-width:100%}}@media(max-width:600px){.page :is(.summary-card,.stat-card,.kpi-card) .el-card__body{padding:14px 14px 14px 16px}.page :is(.table-title-row,.table-head,.matrix-head,.card-section-head){align-items:flex-start;flex-wrap:wrap}.page :is(.table-title-row,.table-head,.matrix-head,.card-section-head)>*{min-width:0}}.chart-shell[data-v-7f0966ab]{position:relative;width:100%;height:100%;min-width:0}.chart-core[data-v-7f0966ab]{display:block}.chart-loading[data-v-7f0966ab]{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;border-radius:inherit;background:linear-gradient(180deg,#ffffffb8,#f8fafce6);-webkit-backdrop-filter:blur(1.5px);backdrop-filter:blur(1.5px)}.chart-loading__dot[data-v-7f0966ab]{width:12px;height:12px;border-radius:999px;background:linear-gradient(180deg,#2563eb,#7dd3fc);box-shadow:0 0 0 6px #2563eb1f;animation:chart-pulse-7f0966ab 1.2s ease-in-out infinite}.chart-loading__text[data-v-7f0966ab]{font-size:12px;color:#64748b;letter-spacing:.2px}@keyframes chart-pulse-7f0966ab{0%,to{transform:scale(.92);opacity:.88}50%{transform:scale(1.06);opacity:1}}
