Files
AILab/trace-demo/styles.css
T
2026-04-10 18:51:00 +08:00

318 lines
8.9 KiB
CSS

:root {
--bg: #f4f6f9;
--panel: #ffffff;
--panel-soft: #f9fafc;
--line: #e6ebf2;
--text: #172033;
--text-soft: #5f6b85;
--brand: #1958d6;
--brand-soft: #edf3ff;
--success: #0f8c62;
--danger: #c84242;
--radius-lg: 20px;
--radius-md: 14px;
--radius-sm: 10px;
--shadow: 0 12px 40px rgba(18, 30, 67, 0.08);
}
* { box-sizing: border-box; }
html, body { margin: 0; min-height: 100%; font-family: "Noto Sans SC", sans-serif; background: var(--bg); color: var(--text); }
button, input, select, textarea { font: inherit; }
button { cursor: pointer; }
a { color: var(--brand); text-decoration: none; }
.system-shell { min-height: 100vh; display: grid; grid-template-columns: 220px minmax(0, 1fr); }
.main-nav {
display: flex;
flex-direction: column;
gap: 10px;
padding: 24px 18px;
background: linear-gradient(180deg, #14213f 0%, #1e305d 100%);
color: #fff;
}
.brand { font-size: 22px; font-weight: 800; margin-bottom: 14px; }
.nav-btn {
border: 1px solid transparent;
background: rgba(255, 255, 255, 0.08);
color: #eef3ff;
border-radius: 14px;
padding: 12px 14px;
text-align: left;
}
.nav-btn.active { background: #fff; color: var(--brand); }
.nav-btn.danger { margin-top: auto; color: #ffd2d2; border-color: rgba(255,255,255,0.1); }
.main-panel { padding: 22px; }
.content-shell { display: grid; gap: 18px; }
.content-shell.two-col, .content-shell.operator-layout { grid-template-columns: 320px minmax(0, 1fr); }
.content-shell.single-col { grid-template-columns: 1fr; }
.left-pane, .right-pane, .editor-card, .stats-card {
background: var(--panel);
border: 1px solid var(--line);
border-radius: var(--radius-lg);
box-shadow: var(--shadow);
}
.left-pane, .right-pane { padding: 18px; }
.right-pane { display: grid; gap: 18px; align-content: start; }
.editor-card { padding: 18px; }
.pane-head {
display: flex;
justify-content: space-between;
align-items: center;
gap: 16px;
margin-bottom: 16px;
}
.pane-head h2, .timeline-head h3 { margin: 0; font-size: 20px; }
.pane-actions, .editor-actions, .template-toolbar, .query-bar, .inline-select, .sub-tabs { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; }
.muted-line { margin: 6px 0 0; color: var(--text-soft); font-size: 13px; }
.scroll-list { display: grid; gap: 12px; max-height: calc(100vh - 150px); overflow: auto; padding-right: 4px; }
.list-card {
width: 100%;
border: 1px solid var(--line);
background: var(--panel-soft);
border-radius: var(--radius-md);
padding: 14px;
display: grid;
gap: 6px;
text-align: left;
color: var(--text);
}
.list-card.active { border-color: var(--brand); background: var(--brand-soft); }
.list-card span { color: var(--text-soft); font-size: 13px; }
.primary-btn, .ghost-btn, .sub-tab {
border-radius: 12px;
padding: 10px 14px;
border: 1px solid transparent;
}
.primary-btn { background: var(--brand); color: #fff; }
.ghost-btn, .sub-tab { background: var(--panel-soft); color: var(--text); border-color: var(--line); }
.danger-btn { color: var(--danger); }
.sub-tab.active { background: var(--brand-soft); color: var(--brand); border-color: #cadeff; }
.form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.form-grid.compact { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.field { display: flex; flex-direction: column; gap: 8px; }
.field.full { grid-column: 1 / -1; }
.field label { font-size: 13px; font-weight: 700; color: var(--text-soft); }
.field input, .field select, .field textarea {
width: 100%;
border: 1px solid #d6deea;
border-radius: 12px;
background: #fff;
color: var(--text);
padding: 11px 12px;
min-height: 44px;
}
.field textarea { min-height: 110px; resize: vertical; }
.field input:disabled, .field select:disabled, .field textarea:disabled { background: #f3f5f8; color: #79859e; }
.switch { position: relative; width: 54px; height: 32px; }
.switch input { opacity: 0; width: 0; height: 0; }
.switch span {
position: absolute;
inset: 0;
background: #cdd6e4;
border-radius: 999px;
transition: 0.2s ease;
}
.switch span::before {
content: "";
position: absolute;
width: 22px;
height: 22px;
left: 5px;
top: 5px;
border-radius: 50%;
background: #fff;
transition: 0.2s ease;
box-shadow: 0 4px 12px rgba(23, 32, 51, 0.18);
}
.switch input:checked + span { background: var(--brand); }
.switch input:checked + span::before { transform: translateX(22px); }
.template-toolbar { margin: 16px 0; }
.inline-select select { min-width: 180px; }
.node-strip {
display: flex;
gap: 10px;
flex-wrap: wrap;
padding: 6px 0 2px;
}
.node-pill {
display: grid;
gap: 4px;
min-width: 160px;
padding: 14px;
border: 1px solid var(--line);
background: var(--panel-soft);
border-radius: 16px;
text-align: left;
}
.node-pill.active { border-color: var(--brand); background: var(--brand-soft); }
.pill-order { color: var(--brand); font-size: 12px; font-weight: 800; }
.pill-name { font-weight: 700; }
.pill-tag { color: var(--text-soft); font-size: 12px; }
.readonly-tip {
margin-bottom: 16px;
padding: 12px 14px;
border-radius: 12px;
background: #fff6e9;
color: #8d5a16;
border: 1px solid #f2ddbb;
}
.field-list { display: grid; gap: 12px; margin-top: 16px; }
.field-card {
border: 1px solid var(--line);
border-radius: 16px;
background: var(--panel-soft);
padding: 14px;
}
.progress-strip {
display: flex;
gap: 12px;
overflow: auto;
padding-bottom: 4px;
}
.progress-step {
min-width: 132px;
border: 1px solid var(--line);
background: var(--panel-soft);
border-radius: 16px;
padding: 12px;
text-align: left;
display: grid;
gap: 6px;
}
.progress-step.active { border-color: var(--brand); background: var(--brand-soft); }
.progress-step.done .step-index { background: var(--success); }
.step-index {
width: 26px;
height: 26px;
border-radius: 50%;
display: inline-flex;
align-items: center;
justify-content: center;
background: var(--brand);
color: #fff;
font-size: 12px;
font-weight: 800;
}
.step-name { font-size: 13px; font-weight: 700; }
.chips { display: flex; flex-wrap: wrap; gap: 10px; }
.chip-check {
display: inline-flex;
align-items: center;
gap: 8px;
padding: 8px 10px;
border-radius: 999px;
background: var(--panel-soft);
border: 1px solid var(--line);
}
.consumer-tabs { display: flex; gap: 10px; margin-bottom: 16px; }
.consumer-shell {
background: linear-gradient(180deg, #fefefe 0%, #f5f7fb 100%);
border: 1px solid var(--line);
border-radius: 22px;
padding: 22px;
}
.consumer-topbar { margin-bottom: 18px; }
.consumer-topbar h2 { margin: 0; }
.consumer-topbar p { margin: 8px 0 0; color: var(--text-soft); }
.timeline-v2 { display: grid; gap: 0; }
.timeline-row { display: grid; grid-template-columns: 48px minmax(0, 1fr); gap: 14px; }
.timeline-rail {
display: flex;
flex-direction: column;
align-items: center;
position: relative;
}
.timeline-dot {
width: 16px;
height: 16px;
border-radius: 50%;
background: #c7d2e7;
border: 4px solid #eef3ff;
z-index: 1;
margin-top: 18px;
}
.timeline-dot.active { background: var(--brand); }
.timeline-line {
width: 2px;
flex: 1;
background: linear-gradient(180deg, #bdd0ff 0%, #e0e8f6 100%);
margin-top: 8px;
}
.timeline-body {
margin-bottom: 18px;
padding: 18px;
border-radius: 18px;
border: 1px solid var(--line);
background: #fff;
}
.timeline-head span { display: block; margin-top: 8px; color: var(--text-soft); font-size: 13px; }
.timeline-grid, .materials-grid {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 12px;
margin-top: 16px;
}
.kv-card {
padding: 14px;
border-radius: 14px;
background: var(--panel-soft);
border: 1px solid var(--line);
display: grid;
gap: 6px;
}
.kv-card span { color: var(--text-soft); font-size: 12px; }
.kv-card strong { font-size: 14px; word-break: break-word; }
.material-card {
border: 1px solid var(--line);
background: #fff;
border-radius: 18px;
padding: 18px;
}
.stats-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 18px; }
.stats-card {
padding: 26px;
display: grid;
gap: 14px;
}
.stats-card span { color: var(--text-soft); }
.stats-card strong { font-size: 40px; line-height: 1; }
.empty-panel {
min-height: 180px;
border: 1px dashed #cfd7e4;
border-radius: 16px;
display: flex;
align-items: center;
justify-content: center;
color: var(--text-soft);
background: var(--panel-soft);
}
@media (max-width: 1080px) {
.system-shell, .content-shell.two-col, .content-shell.operator-layout { grid-template-columns: 1fr; }
.main-nav { flex-direction: row; flex-wrap: wrap; align-items: center; }
.nav-btn.danger { margin-top: 0; margin-left: auto; }
}
@media (max-width: 760px) {
.main-panel { padding: 14px; }
.form-grid, .form-grid.compact, .timeline-grid, .materials-grid, .stats-grid { grid-template-columns: 1fr; }
.timeline-row { grid-template-columns: 28px minmax(0, 1fr); gap: 10px; }
.node-pill, .progress-step { min-width: 120px; }
}