335 lines
5.8 KiB
CSS
335 lines
5.8 KiB
CSS
/* 质检工单 · 同样本多工单 Tab 选型 Demo(Fresh Mint Token) */
|
||
:root {
|
||
--primary: #10b981;
|
||
--primary-dark: #059669;
|
||
--primary-bg: #ecfdf5;
|
||
--text: #1e293b;
|
||
--text-muted: #64748b;
|
||
--border: #e2e8f0;
|
||
--border-soft: #d9e8e2;
|
||
--bg-page: #f8fafc;
|
||
--surface: #fff;
|
||
--radius: 10px;
|
||
--radius-sm: 8px;
|
||
--reception: #047857;
|
||
--reception-bg: #ecfdf5;
|
||
--reception-border: #a7f3d0;
|
||
--production: #b45309;
|
||
--production-bg: #fffbeb;
|
||
--production-border: #fcd34d;
|
||
}
|
||
|
||
* {
|
||
box-sizing: border-box;
|
||
}
|
||
|
||
body {
|
||
margin: 0;
|
||
min-height: 100vh;
|
||
font-family: Inter, -apple-system, BlinkMacSystemFont, sans-serif;
|
||
font-size: 14px;
|
||
line-height: 1.5;
|
||
color: var(--text);
|
||
background: var(--bg-page);
|
||
}
|
||
|
||
.demo-banner {
|
||
position: sticky;
|
||
top: 0;
|
||
z-index: 200;
|
||
padding: 12px 24px;
|
||
background: var(--surface);
|
||
border-bottom: 1px solid var(--border);
|
||
display: flex;
|
||
align-items: flex-start;
|
||
justify-content: space-between;
|
||
gap: 16px;
|
||
flex-wrap: wrap;
|
||
box-shadow: 0 1px 3px rgba(15, 23, 42, 0.04);
|
||
}
|
||
|
||
.demo-banner h1 {
|
||
margin: 0;
|
||
font-size: 15px;
|
||
font-weight: 600;
|
||
}
|
||
|
||
.demo-banner p {
|
||
margin: 4px 0 0;
|
||
font-size: 12px;
|
||
color: var(--text-muted);
|
||
max-width: 760px;
|
||
line-height: 1.55;
|
||
}
|
||
|
||
.demo-banner__actions {
|
||
display: flex;
|
||
gap: 8px;
|
||
flex-wrap: wrap;
|
||
flex-shrink: 0;
|
||
}
|
||
|
||
.demo-link {
|
||
display: inline-flex;
|
||
align-items: center;
|
||
height: 32px;
|
||
padding: 0 12px;
|
||
border-radius: var(--radius-sm);
|
||
border: 1px solid var(--border);
|
||
background: var(--surface);
|
||
font-size: 12px;
|
||
font-weight: 500;
|
||
color: var(--text);
|
||
text-decoration: none;
|
||
transition: border-color 0.15s, background 0.15s;
|
||
}
|
||
|
||
.demo-link:hover {
|
||
border-color: #a7f3d0;
|
||
background: var(--primary-bg);
|
||
color: var(--primary-dark);
|
||
}
|
||
|
||
.page-container {
|
||
max-width: 960px;
|
||
margin: 0 auto;
|
||
padding: 20px 24px 48px;
|
||
}
|
||
|
||
.compare-stack {
|
||
display: flex;
|
||
flex-direction: column;
|
||
gap: 28px;
|
||
}
|
||
|
||
.compare-block {
|
||
background: var(--surface);
|
||
border: 1px solid var(--border-soft);
|
||
border-radius: var(--radius);
|
||
overflow: hidden;
|
||
}
|
||
|
||
.compare-block__label {
|
||
padding: 14px 18px;
|
||
background: #fafafa;
|
||
border-bottom: 1px solid var(--border);
|
||
}
|
||
|
||
.compare-block__label h2 {
|
||
margin: 0;
|
||
font-size: 14px;
|
||
font-weight: 600;
|
||
display: flex;
|
||
align-items: center;
|
||
gap: 8px;
|
||
flex-wrap: wrap;
|
||
}
|
||
|
||
.compare-block__label p {
|
||
margin: 6px 0 0;
|
||
font-size: 12px;
|
||
color: var(--text-muted);
|
||
line-height: 1.55;
|
||
}
|
||
|
||
.variant-tag {
|
||
display: inline-flex;
|
||
align-items: center;
|
||
height: 22px;
|
||
padding: 0 8px;
|
||
border-radius: 6px;
|
||
font-size: 11px;
|
||
font-weight: 700;
|
||
letter-spacing: 0.02em;
|
||
}
|
||
|
||
.variant-tag--baseline {
|
||
background: #f1f5f9;
|
||
color: #475569;
|
||
}
|
||
|
||
.variant-tag--rec {
|
||
background: var(--primary-bg);
|
||
color: var(--primary-dark);
|
||
border: 1px solid #a7f3d0;
|
||
}
|
||
|
||
.compare-block__body {
|
||
padding: 16px;
|
||
background: #f1f5f9;
|
||
}
|
||
|
||
.pros-cons {
|
||
margin-top: 8px;
|
||
display: flex;
|
||
flex-direction: column;
|
||
gap: 4px;
|
||
font-size: 12px;
|
||
}
|
||
|
||
.pro {
|
||
color: #047857;
|
||
}
|
||
|
||
.con {
|
||
color: #94a3b8;
|
||
}
|
||
|
||
/* ── 样本组卡片骨架 ── */
|
||
.qc-sample-row {
|
||
display: flex;
|
||
flex-direction: column;
|
||
min-width: 0;
|
||
border: 1px solid #e2e8f0;
|
||
border-radius: 10px;
|
||
background: #fff;
|
||
overflow: hidden;
|
||
transition: border-color 0.15s ease, box-shadow 0.15s ease;
|
||
}
|
||
|
||
.qc-sample-row:hover {
|
||
border-color: #a8d4c4;
|
||
box-shadow: 0 2px 8px rgba(4, 120, 87, 0.08);
|
||
}
|
||
|
||
.qc-sample-row__ctx {
|
||
display: flex;
|
||
flex-wrap: wrap;
|
||
align-items: center;
|
||
gap: 8px 12px;
|
||
padding: 12px 16px;
|
||
background: linear-gradient(180deg, var(--primary-bg) 0%, #fff 100%);
|
||
border-bottom: 1px solid #d1fae5;
|
||
}
|
||
|
||
.qc-sample-row__idx {
|
||
flex-shrink: 0;
|
||
font-size: 12px;
|
||
color: var(--text-muted);
|
||
min-width: 20px;
|
||
}
|
||
|
||
.qc-sample-row__code {
|
||
font-size: 14px;
|
||
font-weight: 600;
|
||
color: #1e293b;
|
||
font-family: ui-monospace, Menlo, monospace;
|
||
}
|
||
|
||
.qc-sample-row__sub {
|
||
flex: 1;
|
||
min-width: 0;
|
||
font-size: 12px;
|
||
color: var(--text-muted);
|
||
}
|
||
|
||
.qc-sample-row__badge {
|
||
flex-shrink: 0;
|
||
font-size: 11px;
|
||
font-weight: 600;
|
||
padding: 2px 10px;
|
||
border-radius: 999px;
|
||
background: var(--primary-bg);
|
||
color: #047857;
|
||
border: 1px solid #d1fae5;
|
||
}
|
||
|
||
/* 工单内容占位 */
|
||
.qc-card-placeholder {
|
||
padding: 14px 16px;
|
||
background: #fafafa;
|
||
border-top: 1px solid var(--border);
|
||
}
|
||
|
||
.qc-card-placeholder__head {
|
||
display: flex;
|
||
flex-wrap: wrap;
|
||
align-items: center;
|
||
gap: 8px;
|
||
margin-bottom: 10px;
|
||
}
|
||
|
||
.qc-card-placeholder__no {
|
||
font-size: 15px;
|
||
font-weight: 600;
|
||
font-family: ui-monospace, Menlo, monospace;
|
||
}
|
||
|
||
.qc-card-placeholder__meta {
|
||
display: grid;
|
||
grid-template-columns: repeat(3, 1fr);
|
||
gap: 8px;
|
||
font-size: 12px;
|
||
color: var(--text-muted);
|
||
}
|
||
|
||
.qc-card-placeholder__meta span strong {
|
||
display: block;
|
||
font-size: 11px;
|
||
font-weight: 500;
|
||
color: #94a3b8;
|
||
}
|
||
|
||
.qc-card-placeholder__tasks {
|
||
margin-top: 10px;
|
||
padding: 10px 12px;
|
||
background: #f8fafc;
|
||
border-radius: 8px;
|
||
font-size: 12px;
|
||
color: var(--text-muted);
|
||
}
|
||
|
||
/* Tag 模拟 */
|
||
.tag {
|
||
display: inline-flex;
|
||
align-items: center;
|
||
height: 22px;
|
||
padding: 0 8px;
|
||
border-radius: 4px;
|
||
font-size: 12px;
|
||
font-weight: 500;
|
||
border: 1px solid transparent;
|
||
}
|
||
|
||
.tag--success {
|
||
background: #ecfdf5;
|
||
color: #047857;
|
||
border-color: #a7f3d0;
|
||
}
|
||
|
||
.tag--warning {
|
||
background: #fffbeb;
|
||
color: #b45309;
|
||
border-color: #fcd34d;
|
||
}
|
||
|
||
.tag--info {
|
||
background: #f1f5f9;
|
||
color: #475569;
|
||
border-color: #e2e8f0;
|
||
}
|
||
|
||
.tag--reception {
|
||
background: var(--reception-bg);
|
||
color: var(--reception);
|
||
border-color: var(--reception-border);
|
||
}
|
||
|
||
.tag--production {
|
||
background: var(--production-bg);
|
||
color: var(--production);
|
||
border-color: var(--production-border);
|
||
}
|
||
|
||
/* 通用 tab 按钮 reset */
|
||
.tab-btn {
|
||
font-family: inherit;
|
||
cursor: pointer;
|
||
user-select: none;
|
||
}
|
||
|
||
.tab-btn:focus-visible {
|
||
outline: 2px solid var(--primary);
|
||
outline-offset: 2px;
|
||
}
|