:root{--blue-900: #0648a0;--blue-800: #0a59c4;--blue-700: #1f6bdb;--blue-100: #eaf2ff;--page: #f3f7fc;--panel: #ffffff;--line: #d7e2f1;--text-900: #10213a;--text-700: #334155;--text-500: #64748b;--green: #16a34a;--amber: #f59e0b;--red: #dc2626;--shadow: 0 14px 34px rgba(15, 48, 92, .12);font-family:Microsoft YaHei,PingFang SC,Segoe UI,Arial,sans-serif;color:var(--text-900)}*{box-sizing:border-box}html,body,#root{min-height:100%}body{margin:0;min-width:1280px;background:var(--page)}button,input,select{font:inherit}button{cursor:pointer}.app-shell{min-height:100vh;background:var(--page)}.app-topbar{position:sticky;top:0;z-index:20;height:60px;display:grid;grid-template-columns:380px 40px minmax(420px,1fr) 330px 340px;align-items:center;gap:18px;padding:0 24px;background:linear-gradient(90deg,#1f8df8,#1984f3);color:#fff}.brand-block{display:flex;align-items:center;gap:12px;min-width:0}.brand-logo{width:40px;height:40px;border-radius:12px;display:grid;place-items:center;background:#fff3}.brand-block strong{display:block;font-size:18px;white-space:nowrap}.brand-block span{display:block;font-size:12px;opacity:.88;white-space:nowrap}.icon-button{border:0;width:36px;height:36px;border-radius:10px;color:inherit;background:#ffffff1f}.top-module-nav{display:flex;gap:10px;overflow:visible;min-width:0}.top-group-wrap{position:relative;z-index:30}.top-module{height:36px;padding:0 14px;border:0;border-radius:10px;color:#fff;background:#ffffff24;display:inline-flex;align-items:center;gap:8px}.top-module.active{background:#ffffff3d}.top-dropdown{position:absolute;top:44px;left:0;z-index:80;min-width:220px;max-height:min(70vh,520px);overflow-y:auto;scrollbar-gutter:stable;padding:8px;border-radius:12px;background:#fff;box-shadow:var(--shadow)}.top-dropdown button{width:100%;border:0;height:38px;padding:0 12px;text-align:left;background:transparent;color:var(--text-900);border-radius:8px}.top-dropdown button.active{background:var(--blue-100);color:var(--blue-700)}.global-search{position:relative;height:40px;display:flex;align-items:center;gap:10px;padding:0 16px;border-radius:999px;background:#ffffff2e}.global-search input{width:100%;min-width:0;border:0;outline:0;color:#fff;background:transparent}.global-search input::placeholder{color:#ffffffe6}.global-search-panel{position:absolute;top:48px;left:0;z-index:90;width:100%;min-width:330px;max-height:min(68vh,460px);overflow-y:auto;scrollbar-gutter:stable;padding:10px;border-radius:14px;background:#fff;color:var(--text-900);box-shadow:var(--shadow)}.search-panel-title{padding:2px 8px 8px;font-size:12px;color:var(--text-500)}.global-search-panel button{width:100%;border:0;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;min-height:40px;padding:8px 10px;border-radius:10px;color:var(--text-900);background:transparent;text-align:left}.global-search-panel button:hover{background:var(--blue-100)}.global-search-panel button span{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.global-search-panel button small{color:var(--text-500);white-space:nowrap}.search-empty{padding:18px 10px;color:var(--text-500)}.top-actions{display:flex;align-items:center;justify-content:flex-end;gap:10px}.user-menu{display:inline-flex;align-items:center;gap:8px;white-space:nowrap}.notify-dot:after{content:"";position:absolute}.app-main{padding:18px 18px 32px 226px}.left-rail{position:fixed;left:0;top:60px;width:208px;height:calc(100vh - 60px);padding:14px 10px;background:#20252d;overflow:auto}.left-rail button{width:100%;min-height:48px;margin-bottom:8px;padding:0 14px;border:0;border-radius:8px;color:#e5eefb;background:transparent;text-align:left}.left-rail button.active{background:#1f8df8}.watermark{position:fixed;right:18px;bottom:14px;color:#10213a3d;font-size:12px;pointer-events:none}.toast,.inline-toast{position:fixed;right:24px;bottom:24px;z-index:30;padding:12px 16px;border-radius:10px;background:#10213a;color:#fff}.inline-toast{position:static;margin:14px 0 0;display:inline-block}.login-page{min-height:100vh;overflow:hidden;background:linear-gradient(90deg,#f6faffd1,#eff7ffeb),url(/login-scene-bg.png) center/cover no-repeat}.login-header{height:76px;display:flex;align-items:center;gap:18px;padding:0 64px;color:#1f3b65;border-bottom:1px solid rgba(148,163,184,.24);background:#ffffffc2}.brand-mark{width:44px;height:44px;display:grid;place-items:center;color:#fff;border-radius:14px;background:linear-gradient(145deg,#2377ea,#064aa9)}.login-header strong{font-size:28px;color:#123e87}.header-separator{width:1px;height:34px;background:#aebfd8}.login-main{min-height:calc(100vh - 76px);display:grid;grid-template-columns:minmax(500px,1fr) 620px;align-items:center;gap:72px;padding:58px 9vw 54px 10vw}.login-intro h1{margin:0 0 18px;color:#0b4299;font-size:56px;line-height:1.12}.login-intro>p{margin:0;color:#51627d;font-size:24px;font-weight:700}.intro-line{display:block;width:56px;height:4px;margin:28px 0 38px;background:#1f6bdb}.value-list{display:grid;gap:24px}.value-item{display:flex;gap:20px;align-items:center}.value-item>span{width:58px;height:58px;display:grid;place-items:center;color:#fff;border-radius:50%;background:linear-gradient(145deg,#3682ef,#0756bd)}.value-item strong{display:block;margin-bottom:6px;color:#0b4299;font-size:18px}.value-item p{margin:0;color:#51627d;font-size:16px}.login-card{width:100%;padding:44px 48px 40px;border:1px solid #ccdaf1;border-radius:22px;background:#fffffff5;box-shadow:0 24px 70px #143d7424}.login-card-title{display:flex;align-items:center;gap:18px;margin-bottom:28px}.login-card-title>span{width:64px;height:64px;display:grid;place-items:center;color:#1f6bdb;border-radius:50%;background:#e8f1ff}.login-card-title h2{margin:0 0 4px;font-size:28px}.login-card-title p,.login-alert{margin:0;color:#718096}.login-alert{min-height:52px;display:flex;align-items:center;gap:12px;margin-bottom:20px;padding:0 16px;color:#dc2626;border:1px solid #fecdd3;border-radius:8px;background:#fff1f2}.login-alert button{margin-left:auto;border:0;color:inherit;background:transparent}.login-field{display:block;margin-bottom:20px;font-weight:700}.login-field>span{display:block;margin-bottom:10px}.login-field>div:not(.captcha-row),.captcha-row>input{height:58px;display:flex;align-items:center;gap:14px;padding:0 18px;border:1px solid #d5e0f2;border-radius:7px;background:#fff}.login-field input{width:100%;border:0;outline:0;background:transparent}.captcha-row{display:grid;grid-template-columns:1fr 176px;gap:12px}.captcha-wrap{display:flex;gap:10px;align-items:center}.captcha-canvas{border-radius:10px;border:1px solid #d9e6f6}.captcha-refresh{border:0;padding:0 12px;height:54px;border-radius:10px;background:#eaf2ff;color:#1f6bdb;display:inline-flex;align-items:center;gap:8px}.login-submit{width:100%;height:54px;border:0;border-radius:10px;color:#fff;background:linear-gradient(145deg,#2679eb,#0a59c4);font-size:18px;font-weight:700}.page-title{display:flex;align-items:end;justify-content:space-between;gap:16px;margin-bottom:16px}.page-title h1{margin:6px 0 10px;font-size:28px}.kicker{display:inline-flex;padding:4px 10px;border-radius:999px;background:var(--blue-100);color:var(--blue-700);font-size:12px}.page-title p{margin:0;color:var(--text-500)}.page-title-actions,.filter-bar{display:flex;gap:10px;align-items:center}.page-title-actions button,.filter-bar button{height:38px;padding:0 14px;border:1px solid var(--line);border-radius:8px;background:#fff;display:inline-flex;align-items:center;gap:8px}.filter-bar{padding:14px;margin-bottom:16px;border:1px solid var(--line);border-radius:12px;background:#fff;box-shadow:var(--shadow)}.filter-bar label{flex:1;height:38px;display:flex;align-items:center;gap:8px;padding:0 12px;border:1px solid var(--line);border-radius:8px}.filter-bar input,.filter-bar select{flex:1;border:0;outline:0;background:transparent}.table-panel,.panel,.login-card,.modal{border:1px solid var(--line);border-radius:12px;background:#fff;box-shadow:var(--shadow)}.table-head,.panel-head{display:flex;justify-content:space-between;align-items:center;padding:16px 18px 0}.table-head strong,.panel-head h2{font-size:18px}.table-wrap{overflow:auto;max-height:620px;margin:12px 0 0}table{width:100%;border-collapse:collapse;min-width:1180px}th,td{padding:12px 14px;border-bottom:1px solid #edf2f8;white-space:nowrap}th{position:sticky;top:0;background:#f8fbff;color:var(--text-700);text-align:left}tbody tr:hover{background:#f8fbff}.status{padding:4px 10px;border-radius:999px;font-size:12px}.status.在用{background:#eaf7ee;color:#15803d}.status.待维修{background:#fff7e6;color:#b45309}.status.停用{background:#fef2f2;color:#dc2626}.status.待领用{background:#edf4ff;color:#1d4ed8}.dashboard-page{display:grid;gap:16px}.metric-strip{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.metric-tile{padding:18px;border-radius:12px;color:#fff}.metric-tile span{display:block;font-size:14px;opacity:.95}.metric-tile strong{display:block;margin:10px 0 6px;font-size:40px}.metric-tile em{font-style:normal;font-size:12px;opacity:.85}.metric-tile.blue{background:linear-gradient(145deg,#2791ff,#1674ef)}.metric-tile.green{background:linear-gradient(145deg,#16a34a,#15803d)}.metric-tile.amber{background:linear-gradient(145deg,#f59e0b,#ea8a00)}.metric-tile.red{background:linear-gradient(145deg,#ef4444,#dc2626)}.dashboard-grid{display:grid;grid-template-columns:1.35fr 1fr 1fr;gap:16px}.panel{padding-bottom:16px}.panel-large{grid-column:span 2;min-height:280px}.panel-medium{min-height:280px}.panel-actions{grid-column:span 3}.progress-list,.warning-list{display:grid;gap:16px;padding:18px}.progress-row{display:grid;grid-template-columns:1fr 70px;gap:14px;align-items:center}.progress-row div{display:flex;flex-direction:column;gap:4px}.progress-row i{grid-column:1 / span 2;display:block;height:10px;border-radius:999px;background:#e6eef8;overflow:hidden}.progress-row u{display:block;height:100%;background:linear-gradient(90deg,#2f8dfd,#1368df);border-radius:inherit}.bar-chart{height:240px;display:grid;grid-template-columns:repeat(7,minmax(0,1fr));align-items:end;gap:10px;padding:18px}.bar-column{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:end;gap:8px}.bar-column span{width:24px;border-radius:999px 999px 4px 4px;background:linear-gradient(180deg,#3fa0ff,#1674ef)}.bar-column small{color:var(--text-500)}.warning-list button{width:100%;border:0;background:transparent;display:grid;grid-template-columns:14px 84px 1fr;gap:10px;align-items:center;text-align:left;padding:0}.warning-list .dot{width:10px;height:10px;border-radius:50%}.warning-list .dot.red{background:var(--red)}.warning-list .dot.amber{background:var(--amber)}.quick-entry-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;padding:18px}.quick-entry-grid button{min-height:112px;border:1px solid var(--line);border-radius:10px;background:#f8fbff;text-align:left;padding:16px;display:flex;flex-direction:column;gap:8px}.note-rail{display:grid;gap:10px;grid-template-columns:repeat(3,minmax(0,1fr))}.note-rail article{padding:14px 16px;border:1px solid var(--line);border-radius:10px;background:#fff}.modal-mask{position:fixed;inset:0;z-index:40;background:#0f172a7a;display:grid;place-items:center;padding:24px}.modal{width:min(860px,100%);max-height:84vh;overflow:auto}.modal-head{display:flex;justify-content:space-between;align-items:center;padding:16px 18px;border-bottom:1px solid var(--line)}.modal-body,.modal-form,.detail-card{padding:18px;display:grid;gap:12px}.modal-form label{display:grid;gap:6px}.modal-form input{height:40px;border:1px solid var(--line);border-radius:8px;padding:0 12px}.modal-actions{display:flex;gap:10px;justify-content:flex-end}.modal-actions button,.modal-body button{height:38px;border-radius:8px;border:1px solid var(--line);background:#fff;padding:0 14px;display:inline-flex;align-items:center;gap:8px}.history-list{display:grid;gap:8px;padding-top:8px;color:var(--text-700)}.ledger-page,.labor-worker-page{display:grid;gap:16px}.labor-metric-strip .metric-tile{min-height:128px}.labor-tone-1{background:linear-gradient(145deg,#2f8dfd,#196cdb)}.labor-tone-2{background:linear-gradient(145deg,#0ea5e9,#1674ef)}.labor-tone-3{background:linear-gradient(145deg,#16a34a,#15803d)}.labor-tone-4{background:linear-gradient(145deg,#f59e0b,#ea8a00)}.labor-overview-grid{display:grid;grid-template-columns:1.1fr 1fr .95fr;gap:16px;align-items:stretch}.labor-summary-panel,.labor-lane-panel,.labor-workbench-panel{min-height:260px}.labor-summary-copy{padding:18px;display:grid;gap:18px}.labor-summary-copy p{margin:0;color:var(--text-700);line-height:1.7}.labor-inline-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.labor-inline-stats div{padding:16px;border-radius:10px;background:#f7fbff;border:1px solid #e6eef8}.labor-inline-stats strong{display:block;font-size:28px;color:var(--blue-700)}.labor-inline-stats span{color:var(--text-500);font-size:12px}.labor-lane-list{display:grid;gap:14px;padding:18px}.labor-lane-row{display:grid;grid-template-columns:1fr 62px;gap:12px;align-items:center}.labor-lane-row div{display:flex;flex-direction:column;gap:4px}.labor-lane-row i{grid-column:1 / span 2;display:block;height:10px;border-radius:999px;background:#e8eef7;overflow:hidden}.labor-lane-row u{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#2f8dfd,#1674ef)}.labor-workbench-panel .panel-head button{white-space:nowrap}.labor-reminder-list{display:grid;gap:12px;padding:18px}.labor-reminder-list button{width:100%;border:1px solid #dbe7f6;background:#f8fbff;border-radius:10px;padding:14px;display:grid;grid-template-columns:14px 78px 1fr;gap:10px;align-items:center;text-align:left}.labor-reminder-list .dot{width:10px;height:10px;border-radius:50%}.labor-reminder-list .dot.red{background:var(--red)}.labor-reminder-list .dot.amber{background:var(--amber)}.labor-filter-bar{flex-wrap:wrap}.labor-table-wrap{max-height:580px}.labor-status.在场{background:#eaf7ee;color:#15803d}.labor-status.待进场{background:#edf4ff;color:#1d4ed8}.labor-status.请假{background:#fff7e6;color:#b45309}.labor-status.待复核{background:#eef2ff;color:#4338ca}.labor-status.已退场{background:#fef2f2;color:#dc2626}.labor-details-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.labor-detail-card{min-height:220px}.labor-log-list{display:grid;gap:12px;padding:18px}.labor-log-item{padding:14px;border-radius:10px;border:1px solid #e4edf8;background:#f9fcff;display:grid;gap:6px}.labor-log-item strong{font-size:15px}.labor-log-item span{color:var(--text-500);font-size:12px}.labor-log-item p{margin:0;color:var(--text-700)}.labor-attendance-page{display:grid;gap:16px}.attendance-metric-grid{display:grid;grid-template-columns:1.35fr repeat(3,minmax(0,1fr));gap:14px}.attendance-metric-grid article{min-height:126px;padding:18px;border-radius:12px;border:1px solid #d7e2f1;background:#fff;box-shadow:var(--shadow)}.attendance-metric-grid article span{display:block;color:var(--text-500)}.attendance-metric-grid article strong{display:block;margin:10px 0 6px;color:var(--blue-700);font-size:38px}.attendance-metric-grid article em{font-style:normal;color:var(--text-500);font-size:12px}.attendance-metric-grid .attendance-hero-metric{color:#fff;background:linear-gradient(145deg,#2d8bfd,#1767da);border:0}.attendance-metric-grid .attendance-hero-metric span,.attendance-metric-grid .attendance-hero-metric em{color:#ffffffdb}.attendance-metric-grid .attendance-hero-metric strong{color:#fff;font-size:48px}.attendance-work-grid{display:grid;grid-template-columns:1.4fr .9fr .95fr;gap:16px;align-items:stretch}.attendance-chart-panel,.attendance-exception-panel,.attendance-flow-panel{min-height:310px}.attendance-trend-chart{height:250px;display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:12px;align-items:end;padding:18px}.attendance-trend-chart button{height:100%;border:0;background:transparent;display:flex;flex-direction:column;justify-content:end;align-items:center;gap:8px}.attendance-trend-chart b{color:var(--text-700);font-size:13px}.attendance-trend-chart span{width:28px;min-height:38px;border-radius:999px 999px 4px 4px;background:linear-gradient(180deg,#2f8dfd,#1767da)}.attendance-trend-chart small{color:var(--text-500);font-size:12px}.attendance-exception-list,.attendance-flow-list{display:grid;gap:12px;padding:18px;max-height:252px;overflow-y:auto;scrollbar-gutter:stable}.attendance-exception-list button{border:1px solid #dfe9f7;border-radius:10px;background:#f8fbff;padding:13px 14px;display:grid;grid-template-columns:12px 80px 1fr;gap:10px;align-items:center;text-align:left}.attendance-exception-list .dot{width:10px;height:10px;border-radius:50%;background:var(--amber)}.attendance-dot-迟到,.attendance-dot-早退{background:var(--amber)!important}.attendance-dot-缺卡,.attendance-dot-请假{background:var(--red)!important}.attendance-dot-待补录{background:var(--blue-700)!important}.attendance-flow-card{padding:13px;border:1px solid #dfe9f7;border-radius:10px;background:#fff;display:grid;gap:8px}.attendance-flow-card span{color:var(--text-500);font-size:13px}.attendance-flow-card button{width:82px;height:32px;border:1px solid var(--line);border-radius:8px;background:#f8fbff;color:var(--blue-700)}.attendance-filter-bar{flex-wrap:wrap}.attendance-table-wrap{max-height:560px}.attendance-status.正常{background:#eaf7ee;color:#15803d}.attendance-status.迟到,.attendance-status.早退{background:#fff7e6;color:#b45309}.attendance-status.缺卡,.attendance-status.请假{background:#fef2f2;color:#dc2626}.attendance-status.待补录{background:#edf4ff;color:#1d4ed8}.attendance-log-grid{display:grid;grid-template-columns:.9fr 1.1fr;gap:16px}.attendance-copy{padding:18px;display:grid;gap:12px;color:var(--text-700);line-height:1.7}.attendance-copy p{margin:0}.attendance-process-list{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;padding:18px}.attendance-process-list div{min-height:112px;padding:14px;border:1px solid #e4edf8;border-radius:10px;background:#f9fcff;display:grid;gap:6px}.attendance-process-list span{color:var(--text-500);font-size:12px}.attendance-process-list p{margin:0;color:var(--text-700);font-size:13px}.labor-settlement-page{display:grid;gap:16px}.settlement-command-grid{display:grid;grid-template-columns:1.35fr repeat(3,minmax(0,1fr));gap:14px}.settlement-command-grid article{min-height:126px;padding:18px;border-radius:12px;border:1px solid var(--line);background:#fff;box-shadow:var(--shadow)}.settlement-command-grid article span{display:block;color:var(--text-500)}.settlement-command-grid article strong{display:block;margin:10px 0 6px;color:var(--blue-700);font-size:34px}.settlement-command-grid article em{font-style:normal;color:var(--text-500);font-size:12px}.settlement-command-grid .settlement-command-card{color:#fff;border:0;background:linear-gradient(145deg,#257dea,#0d5fca)}.settlement-command-grid .settlement-command-card span,.settlement-command-grid .settlement-command-card em{color:#ffffffe0}.settlement-command-grid .settlement-command-card strong{color:#fff;font-size:42px}.settlement-flow-grid{display:grid;grid-template-columns:1.2fr .95fr .95fr;gap:16px;align-items:stretch}.settlement-flow-panel,.settlement-ledger-panel,.settlement-action-panel{min-height:322px}.settlement-flow-rail{display:grid;gap:12px;padding:18px}.settlement-flow-rail button{min-height:58px;border:1px solid #dfe9f7;border-radius:12px;background:#f8fbff;padding:12px;display:grid;grid-template-columns:38px 1fr 48px;gap:12px;align-items:center;text-align:left}.settlement-flow-rail button>span{width:34px;height:34px;border-radius:50%;background:var(--blue-700);color:#fff;display:grid;place-items:center;font-weight:700}.settlement-flow-rail div{display:grid;gap:4px}.settlement-flow-rail em{font-style:normal;color:var(--text-500);font-size:12px}.settlement-flow-rail b{color:var(--blue-700);font-size:20px}.settlement-ledger-list,.settlement-action-list{display:grid;gap:12px;padding:18px;max-height:260px;overflow-y:auto;scrollbar-gutter:stable}.settlement-ledger-list button{border:1px solid #dfe9f7;border-radius:10px;background:#fff;padding:13px;display:grid;grid-template-columns:1fr 1fr 74px;gap:10px;align-items:center;text-align:left}.settlement-ledger-list span{color:var(--text-500);font-size:13px}.settlement-ledger-list em{font-style:normal;text-align:center;padding:4px 8px;border-radius:999px;background:#edf4ff;color:#1d4ed8;font-size:12px}.settlement-action-list div{padding:13px;border:1px solid #dfe9f7;border-radius:10px;background:#f9fcff;display:grid;gap:8px}.settlement-action-list span{color:var(--text-500);font-size:13px}.settlement-action-list button{width:82px;height:32px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--blue-700)}.settlement-filter-bar{flex-wrap:wrap}.settlement-table-wrap{max-height:560px}.settlement-status.待生成{background:#edf4ff;color:#1d4ed8}.settlement-status.待确认{background:#eef2ff;color:#4338ca}.settlement-status.审批中{background:#fff7e6;color:#b45309}.settlement-status.待发放{background:#ecfeff;color:#0e7490}.settlement-status.已发放{background:#eaf7ee;color:#15803d}.settlement-status.已驳回{background:#fef2f2;color:#dc2626}.settlement-bottom-grid{display:grid;grid-template-columns:.88fr 1.12fr;gap:16px}.settlement-copy{padding:18px;display:grid;gap:12px;color:var(--text-700);line-height:1.7}.settlement-copy p{margin:0}.settlement-log-list{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;padding:18px}.settlement-log-list div{min-height:112px;padding:14px;border:1px solid #e4edf8;border-radius:10px;background:#f9fcff;display:grid;gap:6px}.settlement-log-list span{color:var(--text-500);font-size:12px}.settlement-log-list p{margin:0;color:var(--text-700);font-size:13px}.project-management-page{display:grid;gap:16px}.project-command-grid{display:grid;grid-template-columns:1.25fr repeat(3,minmax(0,1fr));gap:14px}.project-command-grid article{min-height:126px;padding:18px;border:1px solid var(--line);border-radius:12px;background:#fff;box-shadow:var(--shadow)}.project-command-grid article span{display:block;color:var(--text-500)}.project-command-grid article strong{display:block;margin:10px 0 6px;color:var(--blue-700);font-size:36px}.project-command-grid article em{font-style:normal;color:var(--text-500);font-size:12px}.project-command-grid .project-command-card{color:#fff;border:0;background:linear-gradient(145deg,#2f8dfd,#1767da)}.project-command-grid .project-command-card span,.project-command-grid .project-command-card em{color:#ffffffe0}.project-command-grid .project-command-card strong{color:#fff;font-size:46px}.project-work-grid{display:grid;grid-template-columns:1.25fr .95fr .85fr;gap:16px;align-items:stretch}.project-portfolio-panel,.project-risk-panel,.project-stage-panel{min-height:330px}.project-portfolio-map{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;padding:18px}.project-portfolio-map button{min-height:112px;border:1px solid #dfe9f7;border-radius:12px;background:#f8fbff;padding:14px;display:grid;gap:8px;text-align:left}.project-portfolio-map button.risk-高{border-color:#fecdd3;background:#fff8f8}.project-portfolio-map button.risk-中{border-color:#fde7b3;background:#fffaf0}.project-portfolio-map span{color:var(--text-500);font-size:12px}.project-portfolio-map i{display:block;height:8px;border-radius:999px;background:#e8eef7;overflow:hidden}.project-portfolio-map u{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#2f8dfd,#1674ef)}.project-portfolio-map em{font-style:normal;color:var(--blue-700);font-weight:700}.project-risk-list{display:grid;gap:12px;padding:18px;max-height:268px;overflow-y:auto;scrollbar-gutter:stable}.project-risk-list button{border:1px solid #dfe9f7;border-radius:10px;background:#fff;padding:13px;display:grid;grid-template-columns:12px 96px 1fr;gap:10px;align-items:center;text-align:left}.project-risk-list .dot{width:10px;height:10px;border-radius:50%}.risk-dot-高{background:var(--red)}.risk-dot-中{background:var(--amber)}.risk-dot-低{background:var(--green)}.project-risk-list em{font-style:normal;color:var(--text-500);font-size:13px}.project-stage-list{display:grid;gap:12px;padding:18px}.project-stage-list button{height:44px;border:1px solid #dfe9f7;border-radius:10px;background:#f8fbff;padding:0 14px;display:flex;align-items:center;justify-content:space-between}.project-filter-bar{flex-wrap:wrap}.project-table-wrap{max-height:560px}.project-status.筹备中{background:#edf4ff;color:#1d4ed8}.project-status.施工中{background:#eaf7ee;color:#15803d}.project-status.验收中{background:#fff7e6;color:#b45309}.project-status.暂停{background:#fef2f2;color:#dc2626}.project-status.已完工{background:#eef2ff;color:#4338ca}.project-risk-tag{display:inline-flex;padding:4px 10px;border-radius:999px;font-size:12px}.project-risk-tag.risk-低{background:#eaf7ee;color:#15803d}.project-risk-tag.risk-中{background:#fff7e6;color:#b45309}.project-risk-tag.risk-高{background:#fef2f2;color:#dc2626}.project-bottom-grid{display:grid;grid-template-columns:.88fr 1.12fr;gap:16px}.project-copy{padding:18px;display:grid;gap:12px;color:var(--text-700);line-height:1.7}.project-copy p{margin:0}.project-log-list{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;padding:18px}.project-log-list div{min-height:112px;padding:14px;border:1px solid #e4edf8;border-radius:10px;background:#f9fcff;display:grid;gap:6px}.project-log-list span{color:var(--text-500);font-size:12px}.project-log-list p{margin:0;color:var(--text-700);font-size:13px}.project-progress-page{display:grid;gap:16px}.progress-command-grid{display:grid;grid-template-columns:1.25fr repeat(3,minmax(0,1fr));gap:14px}.progress-command-grid article{min-height:126px;padding:18px;border:1px solid var(--line);border-radius:12px;background:#fff;box-shadow:var(--shadow)}.progress-command-grid article span{display:block;color:var(--text-500)}.progress-command-grid article strong{display:block;margin:10px 0 6px;color:var(--blue-700);font-size:38px}.progress-command-grid article em{font-style:normal;color:var(--text-500);font-size:12px}.progress-command-grid .progress-command-card{color:#fff;border:0;background:linear-gradient(145deg,#2f8dfd,#1260d0)}.progress-command-grid .progress-command-card span,.progress-command-grid .progress-command-card em{color:#ffffffe0}.progress-command-grid .progress-command-card strong{color:#fff;font-size:48px}.progress-work-grid{display:grid;grid-template-columns:1.18fr .95fr .9fr;gap:16px;align-items:stretch}.progress-timeline-panel,.progress-warning-panel,.progress-action-panel{min-height:330px}.progress-timeline{display:grid;gap:12px;padding:18px}.progress-timeline button{min-height:56px;border:1px solid #dfe9f7;border-radius:12px;background:#f8fbff;padding:12px;display:grid;grid-template-columns:36px 1fr 58px;gap:12px;align-items:center;text-align:left}.progress-timeline button>span{width:32px;height:32px;border-radius:50%;background:var(--blue-700);color:#fff;display:grid;place-items:center;font-weight:700}.progress-timeline div{display:grid;gap:5px}.progress-timeline em{font-style:normal;color:var(--text-500);font-size:12px}.progress-timeline i{display:block;height:8px;border-radius:999px;background:#e6eef8;overflow:hidden}.progress-timeline u{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#2f8dfd,#1674ef)}.progress-timeline b{color:var(--blue-700);font-size:18px}.progress-warning-list,.progress-action-list{display:grid;gap:12px;padding:18px;max-height:270px;overflow-y:auto;scrollbar-gutter:stable}.progress-warning-list button{border:1px solid #dfe9f7;border-radius:10px;background:#fff;padding:13px;display:grid;grid-template-columns:12px 96px 1fr;gap:10px;align-items:center;text-align:left}.progress-warning-list .dot{width:10px;height:10px;border-radius:50%}.progress-risk-高{background:var(--red)}.progress-risk-中{background:var(--amber)}.progress-risk-低{background:var(--green)}.progress-warning-list em{font-style:normal;color:var(--text-500);font-size:13px}.progress-action-list div{padding:13px;border:1px solid #dfe9f7;border-radius:10px;background:#f9fcff;display:grid;gap:8px}.progress-action-list span{color:var(--text-500);font-size:13px}.progress-action-list button{width:82px;height:32px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--blue-700)}.progress-filter-bar{flex-wrap:wrap}.progress-table-wrap{max-height:560px}.progress-status.按期推进{background:#eaf7ee;color:#15803d}.progress-status.存在延期{background:#fff7e6;color:#b45309}.progress-status.等待验收{background:#edf4ff;color:#1d4ed8}.progress-status.已完成{background:#eef2ff;color:#4338ca}.progress-status.暂停整改{background:#fef2f2;color:#dc2626}.progress-bottom-grid{display:grid;grid-template-columns:.88fr 1.12fr;gap:16px}.progress-copy{padding:18px;display:grid;gap:12px;color:var(--text-700);line-height:1.7}.progress-copy p{margin:0}.progress-log-list{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;padding:18px}.progress-log-list div{min-height:112px;padding:14px;border:1px solid #e4edf8;border-radius:10px;background:#f9fcff;display:grid;gap:6px}.progress-log-list span{color:var(--text-500);font-size:12px}.progress-log-list p{margin:0;color:var(--text-700);font-size:13px}.procurement-page{display:grid;gap:16px}.procurement-command-grid{display:grid;grid-template-columns:1.28fr repeat(3,minmax(0,1fr));gap:14px}.procurement-command-grid article{min-height:126px;padding:18px;border:1px solid var(--line);border-radius:12px;background:#fff;box-shadow:var(--shadow)}.procurement-command-grid article span{display:block;color:var(--text-500)}.procurement-command-grid article strong{display:block;margin:10px 0 6px;color:var(--blue-700);font-size:34px}.procurement-command-grid article em{font-style:normal;color:var(--text-500);font-size:12px}.procurement-command-grid .procurement-command-card{color:#fff;border:0;background:linear-gradient(145deg,#2f8dfd,#1468d9)}.procurement-command-grid .procurement-command-card span,.procurement-command-grid .procurement-command-card em{color:#ffffffe0}.procurement-command-grid .procurement-command-card strong{color:#fff;font-size:42px}.procurement-work-grid{display:grid;grid-template-columns:1.18fr .95fr .9fr;gap:16px;align-items:stretch}.procurement-pipeline-panel,.procurement-queue-panel,.procurement-arrival-panel{min-height:330px}.procurement-pipeline{display:grid;gap:12px;padding:18px}.procurement-pipeline button{min-height:58px;border:1px solid #dfe9f7;border-radius:12px;background:#f8fbff;padding:12px;display:grid;grid-template-columns:36px 1fr 50px;gap:12px;align-items:center;text-align:left}.procurement-pipeline button>span{width:32px;height:32px;border-radius:50%;background:var(--blue-700);color:#fff;display:grid;place-items:center;font-weight:700}.procurement-pipeline div{display:grid;gap:4px}.procurement-pipeline em{font-style:normal;color:var(--text-500);font-size:12px}.procurement-pipeline b{color:var(--blue-700);font-size:20px}.procurement-queue-list,.procurement-arrival-list{display:grid;gap:12px;padding:18px;max-height:270px;overflow-y:auto;scrollbar-gutter:stable}.procurement-queue-list button{border:1px solid #dfe9f7;border-radius:10px;background:#fff;padding:13px;display:grid;grid-template-columns:102px 1fr 82px;gap:10px;align-items:center;text-align:left}.procurement-queue-list span,.procurement-arrival-list span{color:var(--text-500);font-size:13px}.procurement-queue-list em{font-style:normal;color:var(--blue-700);font-size:13px;text-align:right}.procurement-arrival-list div{padding:13px;border:1px solid #dfe9f7;border-radius:10px;background:#f9fcff;display:grid;gap:8px}.procurement-arrival-list button{width:82px;height:32px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--blue-700)}.procurement-filter-bar{flex-wrap:wrap}.procurement-table-wrap{max-height:560px}.procurement-status.待提交{background:#edf4ff;color:#1d4ed8}.procurement-status.待审批{background:#eef2ff;color:#4338ca}.procurement-status.采购中{background:#fff7e6;color:#b45309}.procurement-status.待到货{background:#ecfeff;color:#0e7490}.procurement-status.已到货{background:#eaf7ee;color:#15803d}.procurement-status.已驳回{background:#fef2f2;color:#dc2626}.procurement-bottom-grid{display:grid;grid-template-columns:.88fr 1.12fr;gap:16px}.procurement-copy{padding:18px;display:grid;gap:12px;color:var(--text-700);line-height:1.7}.procurement-copy p{margin:0}.procurement-log-list{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;padding:18px}.procurement-log-list div{min-height:112px;padding:14px;border:1px solid #e4edf8;border-radius:10px;background:#f9fcff;display:grid;gap:6px}.procurement-log-list span{color:var(--text-500);font-size:12px}.procurement-log-list p{margin:0;color:var(--text-700);font-size:13px}.inventory-page{display:grid;gap:16px}.inventory-command-grid{display:grid;grid-template-columns:1.25fr repeat(3,minmax(0,1fr));gap:14px}.inventory-command-grid article{min-height:126px;padding:18px;border:1px solid var(--line);border-radius:12px;background:#fff;box-shadow:var(--shadow)}.inventory-command-grid article span{display:block;color:var(--text-500)}.inventory-command-grid article strong{display:block;margin:10px 0 6px;color:var(--blue-700);font-size:36px}.inventory-command-grid article em{font-style:normal;color:var(--text-500);font-size:12px}.inventory-command-grid .inventory-command-card{color:#fff;border:0;background:linear-gradient(145deg,#2f8dfd,#1767da)}.inventory-command-grid .inventory-command-card span,.inventory-command-grid .inventory-command-card em{color:#ffffffe0}.inventory-command-grid .inventory-command-card strong{color:#fff;font-size:46px}.inventory-work-grid{display:grid;grid-template-columns:1.18fr .95fr .9fr;gap:16px;align-items:stretch}.inventory-matrix-panel,.inventory-warning-panel,.inventory-ledger-panel{min-height:330px}.inventory-matrix{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;padding:18px}.inventory-matrix button{min-height:128px;border:1px solid #dfe9f7;border-radius:12px;background:#f8fbff;padding:14px;display:grid;gap:8px;text-align:left}.inventory-matrix span{color:var(--text-500);font-size:13px}.inventory-matrix i{display:block;height:9px;border-radius:999px;background:#e6eef8;overflow:hidden}.inventory-matrix u{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#2f8dfd,#1674ef)}.inventory-matrix em{font-style:normal;color:var(--blue-700);font-weight:700}.inventory-warning-list,.inventory-ledger-list{display:grid;gap:12px;padding:18px;max-height:270px;overflow-y:auto;scrollbar-gutter:stable}.inventory-warning-list button{border:1px solid #dfe9f7;border-radius:10px;background:#fff;padding:13px;display:grid;grid-template-columns:12px 96px 1fr;gap:10px;align-items:center;text-align:left}.inventory-warning-list .dot{width:10px;height:10px;border-radius:50%}.inventory-dot-低库存,.inventory-dot-待补货{background:var(--amber)}.inventory-dot-已耗尽{background:var(--red)}.inventory-warning-list em{font-style:normal;color:var(--text-500);font-size:13px}.inventory-ledger-list div{padding:13px;border:1px solid #dfe9f7;border-radius:10px;background:#f9fcff;display:grid;gap:8px}.inventory-ledger-list span{color:var(--text-500);font-size:13px}.inventory-ledger-list button{width:82px;height:32px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--blue-700)}.inventory-filter-bar{flex-wrap:wrap}.inventory-table-wrap{max-height:560px}.inventory-status.库存正常{background:#eaf7ee;color:#15803d}.inventory-status.低库存,.inventory-status.待补货{background:#fff7e6;color:#b45309}.inventory-status.冻结{background:#eef2ff;color:#4338ca}.inventory-status.已耗尽{background:#fef2f2;color:#dc2626}.inventory-bottom-grid{display:grid;grid-template-columns:.88fr 1.12fr;gap:16px}.inventory-copy{padding:18px;display:grid;gap:12px;color:var(--text-700);line-height:1.7}.inventory-copy p{margin:0}.inventory-log-list{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;padding:18px}.inventory-log-list div{min-height:112px;padding:14px;border:1px solid #e4edf8;border-radius:10px;background:#f9fcff;display:grid;gap:6px}.inventory-log-list span{color:var(--text-500);font-size:12px}.inventory-log-list p{margin:0;color:var(--text-700);font-size:13px}.approval-page{display:grid;gap:16px}.approval-command-grid{display:grid;grid-template-columns:1.25fr repeat(3,minmax(0,1fr));gap:14px}.approval-command-grid article{min-height:126px;padding:18px;border:1px solid var(--line);border-radius:12px;background:#fff;box-shadow:var(--shadow)}.approval-command-grid article span{display:block;color:var(--text-500)}.approval-command-grid article strong{display:block;margin:10px 0 6px;color:var(--blue-700);font-size:34px}.approval-command-grid article em{font-style:normal;color:var(--text-500);font-size:12px}.approval-command-grid .approval-command-card{color:#fff;border:0;background:linear-gradient(145deg,#2f8dfd,#1767da)}.approval-command-grid .approval-command-card span,.approval-command-grid .approval-command-card em{color:#ffffffe0}.approval-command-grid .approval-command-card strong{color:#fff;font-size:46px}.approval-work-grid{display:grid;grid-template-columns:1.18fr .95fr .9fr;gap:16px;align-items:stretch}.approval-node-panel,.approval-queue-panel,.approval-risk-panel{min-height:330px}.approval-node-rail{display:grid;gap:12px;padding:18px}.approval-node-rail button{min-height:58px;border:1px solid #dfe9f7;border-radius:12px;background:#f8fbff;padding:12px;display:grid;grid-template-columns:36px 1fr 50px;gap:12px;align-items:center;text-align:left}.approval-node-rail button>span{width:32px;height:32px;border-radius:50%;background:var(--blue-700);color:#fff;display:grid;place-items:center;font-weight:700}.approval-node-rail div{display:grid;gap:4px}.approval-node-rail em{font-style:normal;color:var(--text-500);font-size:12px}.approval-node-rail b{color:var(--blue-700);font-size:20px}.approval-queue-list,.approval-risk-list{display:grid;gap:12px;padding:18px;max-height:270px;overflow-y:auto;scrollbar-gutter:stable}.approval-queue-list button{border:1px solid #dfe9f7;border-radius:10px;background:#fff;padding:13px;display:grid;grid-template-columns:102px 1fr 62px;gap:10px;align-items:center;text-align:left}.approval-queue-list span,.approval-risk-list span{color:var(--text-500);font-size:13px}.approval-queue-list em{font-style:normal;text-align:center;color:var(--blue-700);font-size:13px}.approval-risk-list div{padding:13px;border:1px solid #dfe9f7;border-radius:10px;background:#f9fcff;display:grid;gap:8px}.approval-risk-list button{width:82px;height:32px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--blue-700)}.approval-filter-bar{flex-wrap:wrap}.approval-table-wrap{max-height:560px}.approval-status.待提交{background:#edf4ff;color:#1d4ed8}.approval-status.待审批{background:#eef2ff;color:#4338ca}.approval-status.审批中{background:#fff7e6;color:#b45309}.approval-status.已通过{background:#eaf7ee;color:#15803d}.approval-status.已驳回{background:#fef2f2;color:#dc2626}.approval-status.已撤回{background:#f1f5f9;color:#475569}.approval-bottom-grid{display:grid;grid-template-columns:.88fr 1.12fr;gap:16px}.approval-copy{padding:18px;display:grid;gap:12px;color:var(--text-700);line-height:1.7}.approval-copy p{margin:0}.approval-log-list{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;padding:18px}.approval-log-list div{min-height:112px;padding:14px;border:1px solid #e4edf8;border-radius:10px;background:#f9fcff;display:grid;gap:6px}.approval-log-list span{color:var(--text-500);font-size:12px}.approval-log-list p{margin:0;color:var(--text-700);font-size:13px}.contract-page{display:grid;gap:16px}.contract-command-grid{display:grid;grid-template-columns:1.25fr repeat(3,minmax(0,1fr));gap:14px}.contract-command-grid article{min-height:126px;padding:18px;border:1px solid var(--line);border-radius:12px;background:#fff;box-shadow:var(--shadow)}.contract-command-grid article span{display:block;color:var(--text-500)}.contract-command-grid article strong{display:block;margin:10px 0 6px;color:var(--blue-700);font-size:34px}.contract-command-grid article em{font-style:normal;color:var(--text-500);font-size:12px}.contract-command-grid .contract-ledger-card{color:#fff;border:0;background:linear-gradient(145deg,#2f8dfd,#1767da)}.contract-command-grid .contract-ledger-card span,.contract-command-grid .contract-ledger-card em{color:#ffffffe0}.contract-command-grid .contract-ledger-card strong{color:#fff;font-size:46px}.contract-stage-grid{display:grid;grid-template-columns:1.48fr .82fr;gap:16px;align-items:stretch}.contract-stage-panel,.contract-risk-panel{min-height:318px}.contract-stage-line{padding:18px;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.contract-stage-line button{min-height:224px;border:1px solid #dfe9f7;border-radius:14px;background:linear-gradient(180deg,#f8fbff,#fff);padding:16px;display:grid;grid-template-rows:34px auto 1fr 28px;gap:10px;text-align:left}.contract-stage-line b{width:32px;height:32px;border-radius:50%;background:var(--blue-700);color:#fff;display:grid;place-items:center}.contract-stage-line strong{font-size:17px;color:var(--text-900)}.contract-stage-line span{color:var(--text-500);line-height:1.55;font-size:13px}.contract-stage-line em{width:48px;height:28px;border-radius:999px;background:#edf4ff;color:var(--blue-700);display:grid;place-items:center;font-style:normal;font-weight:700}.contract-risk-stack{display:grid;gap:12px;padding:18px;max-height:258px;overflow-y:auto;scrollbar-gutter:stable}.contract-risk-stack button{border:1px solid #dfe9f7;border-radius:10px;background:#fff;padding:13px;display:grid;grid-template-columns:42px 1fr;gap:8px 10px;text-align:left;align-items:center}.contract-risk-stack em{grid-column:2;color:var(--text-500);font-style:normal;font-size:13px}.risk-dot,.risk-pill{display:inline-grid;place-items:center;border-radius:999px;font-size:12px;font-weight:700}.risk-dot{width:34px;height:24px}.risk-pill{min-width:28px;height:24px;padding:0 8px}.risk-dot.低,.risk-pill.低{background:#eaf7ee;color:#15803d}.risk-dot.中,.risk-pill.中{background:#fff7e6;color:#b45309}.risk-dot.高,.risk-pill.高{background:#fef2f2;color:#dc2626}.contract-filter-bar{flex-wrap:wrap}.contract-work-grid{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:16px;align-items:stretch}.contract-table-wrap{max-height:560px}.contract-side-panel{min-height:420px}.contract-track-list{display:grid;gap:12px;padding:18px;max-height:368px;overflow-y:auto;scrollbar-gutter:stable}.contract-track-list button{border:1px solid #dfe9f7;border-radius:10px;background:#f9fcff;padding:13px;display:grid;gap:6px;text-align:left}.contract-track-list span{color:var(--text-500);font-size:13px}.contract-track-list em{color:var(--blue-700);font-style:normal;font-size:12px}.contract-status.起草中{background:#edf4ff;color:#1d4ed8}.contract-status.待审批{background:#eef2ff;color:#4338ca}.contract-status.待签署{background:#fff7e6;color:#b45309}.contract-status.履约中{background:#ecfeff;color:#0e7490}.contract-status.已归档{background:#eaf7ee;color:#15803d}.contract-status.已退回{background:#fef2f2;color:#dc2626}.contract-bottom-grid{display:grid;grid-template-columns:.88fr 1.12fr;gap:16px}.contract-copy{padding:18px;display:grid;gap:12px;color:var(--text-700);line-height:1.7}.contract-copy p{margin:0}.contract-log-list{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px;padding:18px}.contract-log-list div{min-height:112px;padding:14px;border:1px solid #e4edf8;border-radius:10px;background:#f9fcff;display:grid;gap:6px}.contract-log-list span{color:var(--text-500);font-size:12px}.contract-log-list p{margin:0;color:var(--text-700);font-size:13px}.user-page,.role-page,.announcement-page{display:grid;gap:16px}.user-command-grid,.role-command-grid,.announcement-command-grid{display:grid;grid-template-columns:1.25fr repeat(3,minmax(0,1fr));gap:14px}.user-command-grid article,.role-command-grid article,.announcement-command-grid article{min-height:126px;padding:18px;border:1px solid var(--line);border-radius:12px;background:#fff;box-shadow:var(--shadow)}.user-command-grid article span,.role-command-grid article span,.announcement-command-grid article span{display:block;color:var(--text-500)}.user-command-grid article strong,.role-command-grid article strong,.announcement-command-grid article strong{display:block;margin:10px 0 6px;color:var(--blue-700);font-size:34px}.user-command-grid article em,.role-command-grid article em,.announcement-command-grid article em{font-style:normal;color:var(--text-500);font-size:12px}.user-primary-card,.role-primary-card,.announcement-primary-card{color:#fff;border:0!important;background:linear-gradient(145deg,#2f8dfd,#1767da)!important}.user-primary-card span,.user-primary-card em,.role-primary-card span,.role-primary-card em,.announcement-primary-card span,.announcement-primary-card em{color:#ffffffe0!important}.user-primary-card strong,.role-primary-card strong,.announcement-primary-card strong{color:#fff!important;font-size:46px!important}.user-work-grid,.role-matrix-grid,.announcement-work-grid{display:grid;grid-template-columns:1.18fr .82fr;gap:16px;align-items:stretch}.user-role-panel,.user-security-panel,.role-permission-panel,.role-user-panel,.announcement-channel-panel,.announcement-read-panel{min-height:318px}.user-role-bars,.role-matrix-list,.announcement-channel-list{display:grid;gap:12px;padding:18px;max-height:258px;overflow-y:auto;scrollbar-gutter:stable}.user-role-bars button,.role-matrix-list button,.announcement-channel-list button{border:1px solid #dfe9f7;border-radius:12px;background:#f8fbff;padding:13px;display:grid;grid-template-columns:1fr 120px 42px;gap:12px;align-items:center;text-align:left}.announcement-channel-list button{grid-template-columns:120px 1fr 110px 42px}.user-role-bars span,.announcement-channel-list span{color:var(--text-500);font-size:13px}.user-role-bars i,.role-matrix-list i,.announcement-channel-list i{height:9px;border-radius:999px;background:#e6eef8;overflow:hidden}.user-role-bars u,.role-matrix-list u,.announcement-channel-list u{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#2f8dfd,#1674ef)}.user-role-bars b,.role-matrix-list span,.announcement-channel-list em{color:var(--blue-700);font-style:normal;font-weight:700;text-align:right}.user-security-list,.role-user-stack,.announcement-read-stack{display:grid;gap:12px;padding:18px;max-height:258px;overflow-y:auto;scrollbar-gutter:stable}.user-security-list button,.role-user-stack button,.announcement-read-stack button{border:1px solid #dfe9f7;border-radius:10px;background:#fff;padding:13px;display:grid;gap:6px;text-align:left}.user-security-list span,.role-user-stack span,.announcement-read-stack span{color:var(--text-500);font-size:13px}.user-security-list em,.role-user-stack em,.announcement-read-stack em{color:var(--blue-700);font-style:normal;font-size:12px}.user-filter-bar,.role-filter-bar,.announcement-filter-bar{flex-wrap:wrap}.user-table-wrap,.role-table-wrap,.announcement-table-wrap{max-height:560px}.user-status.已激活,.role-status.启用,.announcement-status.已发布{background:#eaf7ee;color:#15803d}.user-status.已冻结,.role-status.停用,.announcement-status.已撤回{background:#fef2f2;color:#dc2626}.user-status.待激活,.role-status.待复核,.announcement-status.待发布{background:#fff7e6;color:#b45309}.announcement-status.草稿{background:#edf4ff;color:#1d4ed8}.priority-pill{display:inline-grid;min-width:34px;height:24px;padding:0 8px;place-items:center;border-radius:999px;font-size:12px;font-weight:700}.priority-pill.普通{background:#eaf7ee;color:#15803d}.priority-pill.重要{background:#fff7e6;color:#b45309}.priority-pill.紧急{background:#fef2f2;color:#dc2626}.user-bottom-grid,.role-bottom-grid,.announcement-bottom-grid{display:grid;grid-template-columns:.88fr 1.12fr;gap:16px}.user-copy,.role-copy,.announcement-copy{padding:18px;display:grid;gap:12px;color:var(--text-700);line-height:1.7}.user-copy p,.role-copy p,.announcement-copy p{margin:0}.user-log-list,.role-log-list,.announcement-log-list{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px;padding:18px}.user-log-list div,.role-log-list div,.announcement-log-list div{min-height:112px;padding:14px;border:1px solid #e4edf8;border-radius:10px;background:#f9fcff;display:grid;gap:6px}.user-log-list span,.role-log-list span,.announcement-log-list span{color:var(--text-500);font-size:12px}.user-log-list p,.role-log-list p,.announcement-log-list p{margin:0;color:var(--text-700);font-size:13px}.extended-page{display:grid;gap:16px}.extended-metrics{display:grid;grid-template-columns:1.25fr repeat(3,minmax(0,1fr));gap:14px}.extended-metrics article{min-height:126px;padding:18px;border:1px solid var(--line);border-radius:12px;background:#fff;box-shadow:var(--shadow)}.extended-metrics span{display:block;color:var(--text-500)}.extended-metrics strong{display:block;margin:10px 0 6px;color:var(--blue-700);font-size:34px}.extended-metrics em{font-style:normal;color:var(--text-500);font-size:12px}.extended-metrics .extended-primary{color:#fff;border:0;background:linear-gradient(145deg,#2f8dfd,#1767da)}.extended-metrics .extended-primary span,.extended-metrics .extended-primary em{color:#ffffffe0}.extended-metrics .extended-primary strong{color:#fff;font-size:46px}.extended-ledger-grid,.extended-flow-grid,.extended-analysis-grid,.extended-collab-grid{display:grid;grid-template-columns:.88fr 1.12fr;gap:16px;align-items:stretch}.extended-tree-panel,.extended-detail-panel,.extended-step-panel,.extended-queue-panel,.extended-chart-panel,.extended-risk-panel,.extended-kanban-panel,.extended-timeline-panel{min-height:326px}.extended-tree-list{padding:18px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.extended-tree-list button{min-height:92px;border:1px solid #dfe9f7;border-radius:12px;background:#f8fbff;padding:14px;display:grid;gap:8px;text-align:left}.extended-tree-list span,.extended-card-stack span,.extended-step-line span,.extended-kanban span{color:var(--text-500);font-size:13px}.extended-card-stack{display:grid;gap:12px;padding:18px;max-height:266px;overflow-y:auto;scrollbar-gutter:stable}.extended-card-stack button{border:1px solid #dfe9f7;border-radius:10px;background:#fff;padding:13px;display:grid;gap:6px;text-align:left}.extended-card-stack em{color:var(--blue-700);font-style:normal;font-size:12px}.extended-step-line{padding:18px;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}.extended-step-line button{min-height:196px;border:1px solid #dfe9f7;border-radius:14px;background:linear-gradient(180deg,#f8fbff,#fff);padding:15px;display:grid;grid-template-rows:34px 1fr auto;gap:10px;text-align:left}.extended-step-line b{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;background:var(--blue-700);color:#fff}.extended-bar-list{padding:18px;display:grid;gap:12px}.extended-bar-list button{border:1px solid #dfe9f7;border-radius:10px;background:#f8fbff;padding:13px;display:grid;grid-template-columns:120px 1fr 42px;gap:12px;align-items:center;text-align:left}.extended-bar-list i{height:10px;border-radius:999px;background:#e6eef8;overflow:hidden}.extended-bar-list u{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#2f8dfd,#1674ef)}.extended-bar-list span{color:var(--blue-700);text-align:right;font-weight:700}.extended-kanban{padding:18px;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.extended-kanban div{min-height:236px;padding:12px;border:1px solid #dfe9f7;border-radius:12px;background:#f8fbff;display:grid;align-content:start;gap:10px}.extended-kanban button{border:1px solid #e4edf8;border-radius:10px;background:#fff;padding:10px;display:grid;gap:6px;text-align:left;color:var(--text-900)}.extended-filter-bar{flex-wrap:wrap}.extended-table-wrap{max-height:560px}.extended-status.success{background:#eaf7ee;color:#15803d}.extended-status.warning{background:#fff7e6;color:#b45309}.extended-status.danger{background:#fef2f2;color:#dc2626}.extended-bottom-grid{display:grid;grid-template-columns:.88fr 1.12fr;gap:16px}.extended-copy{padding:18px;display:grid;gap:12px;color:var(--text-700);line-height:1.7}.extended-copy p{margin:0}.extended-log-list{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px;padding:18px}.extended-log-list div{min-height:112px;padding:14px;border:1px solid #e4edf8;border-radius:10px;background:#f9fcff;display:grid;gap:6px}.extended-log-list span{color:var(--text-500);font-size:12px}.extended-log-list p{margin:0;color:var(--text-700);font-size:13px}@media(max-width:1440px){.labor-overview-grid{grid-template-columns:1fr 1fr}.labor-workbench-panel{grid-column:span 2}.labor-details-grid{grid-template-columns:1fr}.attendance-work-grid{grid-template-columns:1fr 1fr}.attendance-chart-panel{grid-column:span 2}.attendance-log-grid{grid-template-columns:1fr}.attendance-process-list{grid-template-columns:repeat(3,minmax(0,1fr))}.settlement-flow-grid{grid-template-columns:1fr 1fr}.settlement-flow-panel{grid-column:span 2}.settlement-bottom-grid{grid-template-columns:1fr}.settlement-log-list{grid-template-columns:repeat(3,minmax(0,1fr))}.project-work-grid{grid-template-columns:1fr 1fr}.project-portfolio-panel{grid-column:span 2}.project-bottom-grid{grid-template-columns:1fr}.project-log-list{grid-template-columns:repeat(3,minmax(0,1fr))}.progress-work-grid{grid-template-columns:1fr 1fr}.progress-timeline-panel{grid-column:span 2}.progress-bottom-grid{grid-template-columns:1fr}.progress-log-list{grid-template-columns:repeat(3,minmax(0,1fr))}.procurement-work-grid{grid-template-columns:1fr 1fr}.procurement-pipeline-panel{grid-column:span 2}.procurement-bottom-grid{grid-template-columns:1fr}.procurement-log-list{grid-template-columns:repeat(3,minmax(0,1fr))}.inventory-work-grid{grid-template-columns:1fr 1fr}.inventory-matrix-panel{grid-column:span 2}.inventory-bottom-grid{grid-template-columns:1fr}.inventory-log-list{grid-template-columns:repeat(3,minmax(0,1fr))}.approval-work-grid{grid-template-columns:1fr 1fr}.approval-node-panel{grid-column:span 2}.approval-bottom-grid{grid-template-columns:1fr}.approval-log-list{grid-template-columns:repeat(3,minmax(0,1fr))}.contract-stage-grid,.contract-work-grid,.contract-bottom-grid{grid-template-columns:1fr}.contract-log-list{grid-template-columns:repeat(3,minmax(0,1fr))}.user-work-grid,.role-matrix-grid,.announcement-work-grid,.user-bottom-grid,.role-bottom-grid,.announcement-bottom-grid{grid-template-columns:1fr}.user-log-list,.role-log-list,.announcement-log-list{grid-template-columns:repeat(3,minmax(0,1fr))}.extended-ledger-grid,.extended-flow-grid,.extended-analysis-grid,.extended-collab-grid,.extended-bottom-grid{grid-template-columns:1fr}.extended-log-list{grid-template-columns:repeat(3,minmax(0,1fr))}.extended-step-line,.extended-kanban{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:1440px){.app-topbar{grid-template-columns:320px 40px minmax(380px,1fr) 280px 260px}.dashboard-grid{grid-template-columns:1fr 1fr}.panel-actions{grid-column:span 2}}
