/* 工作台 · 对照 影擎 workbench 页。仅 scope 在 .dashboard-page,不改共享 .btn/.pill */ .dashboard-page { --klein: #002fa7; --klein-hover: #002680; --project-accent: #6f8fd8; --muted: #6f747c; --summary: rgba(34, 42, 54, 0.055); --workspace: rgba(34, 42, 54, 0.032); --project: #ffffff; --control: rgba(34, 42, 54, 0.06); --shadow-card: 0 8px 20px rgba(20, 27, 38, 0.09); width: 100%; max-width: none; box-sizing: border-box; /* 抵消 .content 的 24/28/60,网格底铺满主区。正文对照影擎 .content:1560 居中 */ margin: -24px -28px -60px; padding: 52px clamp(40px, 3.2vw, 68px) 48px; } @media (max-width: 1100px) { .dashboard-page { margin: -28px -24px -48px; padding: 40px 24px 48px; } } .dashboard-page .dashboard-inner { width: min(1560px, 100%); margin: 0 auto; } .dashboard-page .welcome h1 { margin: 0 0 14px; font-size: 33px; line-height: 1.2; font-weight: 600; letter-spacing: -.02em; color: var(--accent-black); } .dashboard-page .welcome p { margin: 0; color: #363a41; font-size: 16px; } .dashboard-page .welcome, .dashboard-page .creation { width: min(1140px, 100%); } .dashboard-page .creation { margin-top: 40px; } .dashboard-page .creation-head { display: flex; align-items: center; justify-content: space-between; gap: 24px; margin-bottom: 15px; } .dashboard-page .creation-head .section-label { display: block; font-size: 25px; line-height: 1.2; font-weight: 600; letter-spacing: -.02em; color: var(--accent-black); } .dashboard-page .creation-groups { display: grid; gap: 22px; } .dashboard-page .creation-group-block { display: grid; gap: 11px; } .dashboard-page .creation-group-label { display: flex; align-items: baseline; gap: 12px; padding-left: 2px; } .dashboard-page .creation-group-label strong { font-size: 15px; font-weight: 600; color: var(--accent-black); } .dashboard-page .creation-group-label span { color: var(--muted); font-size: 12px; line-height: 1.55; } .dashboard-page .creation-entry-pair { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; } .dashboard-page .entry { width: 100%; height: 94px; display: grid; grid-template-columns: 38px minmax(0, 1fr) 20px; align-items: center; gap: 14px; padding: 0 24px; border: 0; border-radius: 12px; cursor: pointer; font: inherit; text-align: left; transition: transform 180ms ease, box-shadow 180ms ease, background-color 180ms ease; } .dashboard-page .entry:hover { transform: translateY(-2px); } .dashboard-page .entry svg { display: block; width: 28px; height: 28px; flex-shrink: 0; } .dashboard-page .entry-copy { display: flex; flex-direction: column; gap: 5px; min-width: 0; text-align: left; } .dashboard-page .entry-copy strong { font-size: 17px; font-weight: 600; letter-spacing: -.01em; } .dashboard-page .entry-copy small { overflow: hidden; font-size: 11px; font-weight: 400; line-height: 1.4; text-overflow: ellipsis; white-space: nowrap; } .dashboard-page .entry-primary { color: #fff; background: linear-gradient(90deg, #00247f 0%, #002fa7 48%, #3b6bd7 100%); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.12), 0 10px 22px rgba(0, 47, 167, 0.25); } .dashboard-page .entry-primary:hover { background: linear-gradient(90deg, #001f73 0%, #002c9c 48%, #4879e4 100%); } .dashboard-page .entry-primary .entry-copy small { color: rgba(255, 255, 255, 0.78); } .dashboard-page .entry-primary svg { color: #fff; } .dashboard-page .entry-subtle { color: #263247; border: 1px solid rgba(203, 208, 216, 0.72); background: rgba(249, 250, 252, 0.9); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.96), inset 0 0 36px rgba(124, 134, 150, 0.15), inset 0 0 18px rgba(124, 134, 150, 0.07), 0 10px 24px rgba(42, 53, 74, 0.12); } .dashboard-page .entry-subtle:hover { border-color: rgba(190, 196, 206, 0.78); background: rgba(252, 253, 254, 0.94); box-shadow: inset 0 1px 0 #fff, inset 0 0 40px rgba(116, 126, 143, 0.16), inset 0 0 20px rgba(116, 126, 143, 0.07), 0 14px 28px rgba(42, 53, 74, 0.15); } .dashboard-page .entry-subtle .entry-copy small { color: #727b8a; } .dashboard-page .entry-subtle svg { color: #315aa9; } .dashboard-page .entry-subtle svg:last-child { color: #263247; } .dashboard-page .workbench-section-divider { width: 100%; display: grid; grid-template-columns: minmax(40px, 1fr) auto minmax(40px, 1fr); align-items: center; gap: 14px; margin: 52px 0 28px; color: #8a919d; } .dashboard-page .workbench-section-divider::before, .dashboard-page .workbench-section-divider::after { content: ""; height: 1px; background: linear-gradient(90deg, transparent, rgba(83, 91, 105, 0.25)); } .dashboard-page .workbench-section-divider::after { background: linear-gradient(90deg, rgba(83, 91, 105, 0.25), transparent); } .dashboard-page .workbench-section-divider span { font-size: 11px; font-weight: 600; letter-spacing: 0.12em; } .dashboard-page .status-summary { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); justify-content: stretch; align-items: center; min-height: 100px; margin-top: 0; padding: 0 34px; border: 1px solid rgba(34, 42, 54, 0.10); border-radius: 12px; background: var(--summary); box-shadow: 0 8px 19px rgba(20, 27, 38, 0.08); } .dashboard-page .summary-item { display: flex; align-items: baseline; justify-content: center; gap: 10px; padding: 0 24px; border: 0; background: transparent; cursor: pointer; font: inherit; color: inherit; } .dashboard-page .summary-item + .summary-item { border-left: 1px solid rgba(34, 42, 54, 0.10); } .dashboard-page .summary-item span { font-size: 15px; font-weight: 500; color: var(--muted); } .dashboard-page .summary-item strong { min-width: 30px; color: #141820; font-size: 22px; font-weight: 600; text-align: left; font-variant-numeric: tabular-nums; } .dashboard-page .summary-item .positive { color: #16b84e; } .dashboard-page .projects { margin-top: 34px; padding: 32px 30px 28px; border: 1px solid rgba(34, 42, 54, 0.07); border-radius: 12px; background: var(--workspace); box-shadow: 0 10px 24px rgba(20, 27, 38, 0.055); } .dashboard-page .projects-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 18px; } .dashboard-page .projects-head h2 { margin: 0; font-size: 22px; font-weight: 600; color: var(--accent-black); } .dashboard-page .text-action { display: flex; align-items: center; gap: 7px; border: 0; color: #2a2d32; background: transparent; cursor: pointer; font: inherit; font-size: 14px; } .dashboard-page .text-action svg { display: block; width: 18px; height: 18px; } .dashboard-page .filters { display: flex; align-items: center; gap: 10px; margin-bottom: 20px; } .dashboard-page .filter { height: 34px; padding: 0 17px; border: 1px solid rgba(34, 42, 54, 0.10); border-radius: 9px; color: #2c3036; background: var(--control); box-shadow: 0 3px 7px rgba(20, 27, 38, 0.05); cursor: pointer; font: inherit; font-size: 13px; } .dashboard-page .filter.active { border-color: rgba(0, 47, 167, 0.65); background: rgba(0, 47, 167, 0.07); color: var(--klein); } .dashboard-page .project-list { display: grid; gap: 22px; } .dashboard-page .project-card { position: relative; min-height: 152px; display: grid; grid-template-columns: 160px minmax(0, 1fr) minmax(220px, 1.1fr) 140px; align-items: center; gap: 28px; padding: 18px 34px 18px 32px; border: 1px solid rgba(34, 42, 54, 0.08); border-radius: 12px; background: var(--project); box-shadow: var(--shadow-card); overflow: hidden; cursor: pointer; transition: transform 180ms ease, box-shadow 180ms ease, background-color 180ms ease; } .dashboard-page .project-card::before { content: ""; position: absolute; inset: 0 auto 0 0; width: 5px; background: var(--project-accent); } .dashboard-page .project-card:hover { transform: translateY(-2px); box-shadow: 0 12px 25px rgba(20, 27, 38, 0.08); background: #fafafa; } .dashboard-page .product-thumb { width: 122px; height: 106px; display: grid; place-items: center; overflow: hidden; border: 1px solid rgba(34, 42, 54, 0.09); border-radius: 10px; background: rgba(255, 255, 255, 0.6); } .dashboard-page .product-thumb img { width: 100%; height: 100%; object-fit: cover; } .dashboard-page .product-thumb .ph-frame { font-size: 12px; color: var(--muted); } .dashboard-page .project-info h3 { margin: 0 0 9px; font-size: 16px; font-weight: 600; color: var(--accent-black); } .dashboard-page .project-info p, .dashboard-page .stage-label { margin: 0; color: #5e636b; font-size: 14px; } .dashboard-page .stage { padding-left: 28px; border-left: 1px solid rgba(34, 42, 54, 0.10); } .dashboard-page .stage strong { display: block; margin: 8px 0 13px; font-size: 16px; font-weight: 600; color: var(--accent-black); } .dashboard-page .progress { display: flex; gap: 8px; } .dashboard-page .segment { width: 29px; height: 5px; border-radius: 3px; background: #d4d7dc; } .dashboard-page .segment.done { background: #17b84e; } .dashboard-page .segment.warn { background: #ff7219; } .dashboard-page .segment.fail { background: var(--accent-crimson); } .dashboard-page .continue-button { height: 42px; min-width: 88px; padding: 0 18px; border: 0; border-radius: 10px; color: var(--accent-white); background: #101012; box-shadow: 0 7px 14px rgba(0, 0, 0, 0.16); cursor: pointer; font: inherit; font-size: 14px; font-weight: 500; transition: transform 180ms ease, background 180ms ease; } .dashboard-page .continue-button:hover { transform: translateY(-1px); background: #2a2a2c; } .dashboard-page .empty-state { display: grid; min-height: 150px; place-items: center; color: var(--muted); border: 1px dashed rgba(34, 42, 54, 0.15); border-radius: 12px; background: var(--control); font-size: 14px; } @media (max-width: 1100px) { .dashboard-page .status-summary { padding: 0 16px; } .dashboard-page .summary-item { padding: 0 14px; } .dashboard-page .project-card { grid-template-columns: 122px minmax(0, 1fr); min-height: 0; } .dashboard-page .stage, .dashboard-page .continue-button { display: none; } } @media (max-width: 820px) { .dashboard-page .creation-entry-pair { grid-template-columns: 1fr; } .dashboard-page .status-summary { grid-template-columns: 1fr 1fr; min-height: 0; padding: 16px; row-gap: 12px; } .dashboard-page .summary-item + .summary-item { border-left: 0; } }