:root{--color-primary:#1a56a4;--color-primary-light:#e8f0fb;--color-primary-dark:#0f3a72;--color-accent:#0077c8;--color-success:#07a35a;--color-warning:#f59e0b;--color-danger:#e03e3e;--color-info:#6b7280;--color-bg:#f0f2f6;--color-bg-card:#fff;--color-border:#e4e7ed;--color-border-light:#f0f2f5;--color-text-primary:#1a1f36;--color-text-secondary:#4b5563;--color-text-muted:#9ca3af;--sidebar-width:196px;--header-height:56px;--border-radius:8px;--shadow-card:0 1px 4px #00000014;--shadow-elevated:0 4px 20px #0000001f;--transition:.2s ease}*{box-sizing:border-box;margin:0;padding:0}html,body,#app{height:100%;color:var(--color-text-primary);background:var(--color-bg);font-family:PingFang SC,Microsoft YaHei,Helvetica Neue,Arial,sans-serif;font-size:14px}.el-button--primary{--el-button-bg-color:var(--color-primary);--el-button-border-color:var(--color-primary);--el-button-hover-bg-color:var(--color-accent);--el-button-hover-border-color:var(--color-accent)}.el-tag--primary{--el-tag-bg-color:var(--color-primary-light);--el-tag-text-color:var(--color-primary);--el-tag-border-color:transparent}.status-badge{white-space:nowrap;border-radius:100px;align-items:center;gap:4px;padding:2px 8px;font-size:12px;font-weight:500;display:inline-flex}.status-badge:before{content:"";opacity:.7;background:currentColor;border-radius:50%;width:6px;height:6px}.status-badge.unpublished{color:#6b7280;background:#f3f4f6}.status-badge.published{color:#16a34a;background:#dcfce7}.status-badge.completed{color:#0369a1;background:#e0f2fe}.status-badge.cancelled{color:#dc2626;background:#fee2e2}.status-badge.in-progress{color:#d97706;background:#fef3c7}.status-badge.planning{color:#0ea5e9;background:#f0f9ff}.status-badge.pending{color:#6b7280;background:#f3f4f6}.status-badge.bottleneck{color:#dc2626;background:#fee2e2}.aps-card{background:var(--color-bg-card);border-radius:var(--border-radius);box-shadow:var(--shadow-card);padding:20px}.page-container{height:100%;padding:20px;overflow-y:auto}.page-header{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.page-header .page-title{color:var(--color-text-primary);font-size:18px;font-weight:600}.stat-card{background:var(--color-bg-card);border-radius:var(--border-radius);box-shadow:var(--shadow-card);padding:20px}.stat-card .stat-label{color:var(--color-text-muted);margin-bottom:8px;font-size:13px}.stat-card .stat-value{color:var(--color-text-primary);font-size:28px;font-weight:700;line-height:1}.stat-card .stat-sub{color:var(--color-text-muted);margin-top:6px;font-size:12px}.stat-card.primary .stat-value{color:var(--color-primary)}.stat-card.success .stat-value{color:var(--color-success)}.stat-card.warning .stat-value{color:var(--color-warning)}.stat-card.danger .stat-value{color:var(--color-danger)}.filter-bar{background:var(--color-bg-card);border-radius:var(--border-radius);box-shadow:var(--shadow-card);flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:16px;padding:12px 16px;display:flex}.el-table{border-radius:var(--border-radius);overflow:hidden}.el-table th.el-table__cell{color:var(--color-text-secondary);font-weight:600;background:#f8fafc!important}.el-table th.el-table__cell>.cell{white-space:normal;text-overflow:clip;word-break:keep-all;align-items:center;gap:4px;min-height:20px;line-height:1.25;display:flex;overflow:visible}.el-table th.el-table__cell.is-center>.cell{justify-content:center}.el-table th.el-table__cell.is-right>.cell{justify-content:flex-end}.el-table th.el-table__cell .caret-wrapper{flex-shrink:0}.el-table.el-table--border th.el-table__cell.is-leaf:hover:after{content:"";pointer-events:none;background:#1a56a45c;border-radius:999px;width:3px;position:absolute;top:22%;bottom:22%;right:-1px}.el-table .el-table__column-resize-proxy{border-left:2px solid var(--color-primary)}.el-table.readable-table td.el-table__cell>.cell,.el-table.readable-table td.el-table__cell>.cell.el-tooltip{white-space:normal;word-break:break-word;overflow-wrap:anywhere;min-width:0;line-height:1.35}.el-table.readable-table td.el-table__cell.is-center>.cell{text-align:center}.el-table.readable-table td.el-table__cell.is-right>.cell{text-align:right}
