Files
hunjing/frontend/src/styles/features/drive.css
T
2026-08-21 16:00:13 +08:00

566 lines
11 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/* drive 领域专属样式。 */
/* ============================================================
* 铜镜鉴心 v2.1 — 内驱力页(drive-preview.html)
* 太一目标 + 好奇萤火 + 探索天平 + 阴阳制衡
* ============================================================ */
/* -- 页头元信息 -- */
.page-meta {
font-family: "JetBrains Mono", ui-monospace, monospace;
font-size: 12px;
color: var(--fg-faint);
}
.page-meta b {
color: var(--gilt);
font-weight: 600;
font-family: var(--font-serif);
font-size: 15px;
}
/* -- 太一目标 -- */
.taiyi-card {
border: 1px solid var(--rule);
border-radius: 8px;
background: var(--surface);
padding: 16px 20px;
display: flex;
flex-direction: column;
gap: 12px;
}
.taiyi-row {
display: flex;
align-items: center;
gap: 12px;
flex-wrap: wrap;
}
.taiyi-dot {
width: 8px;
height: 8px;
border-radius: 50%;
flex-shrink: 0;
background: var(--fg-faint);
}
.taiyi-dot.active {
background: var(--patina);
box-shadow: 0 0 0 3px var(--patina-wash);
animation: taiyi-pulse 2.6s cubic-bezier(0.16, 1, 0.3, 1) infinite;
}
.taiyi-dot.completed {
background: var(--gilt);
}
@keyframes taiyi-pulse {
0% {
box-shadow: 0 0 0 3px var(--patina-wash);
}
70% {
box-shadow: 0 0 0 7px transparent;
}
100% {
box-shadow: 0 0 0 3px var(--patina-wash);
}
}
.taiyi-title {
font-family: var(--font-serif);
font-size: 15px;
font-weight: 600;
color: var(--fg);
}
.taiyi-tag {
font-family: "JetBrains Mono", ui-monospace, monospace;
font-size: 10.5px;
color: var(--fg-faint);
padding: 2px 8px;
border: 1px solid var(--rule);
border-radius: 999px;
}
.taiyi-status {
margin-left: auto;
font-family: "JetBrains Mono", ui-monospace, monospace;
font-size: 10.5px;
color: var(--fg-dim);
}
.taiyi-prog {
display: flex;
align-items: center;
gap: 10px;
}
.taiyi-prog .track {
flex: 1;
height: 4px;
border-radius: 2px;
background: var(--rule);
overflow: hidden;
}
.taiyi-prog .fill {
height: 100%;
border-radius: 2px;
background: linear-gradient(90deg, var(--patina-dim), var(--patina));
}
.taiyi-prog .tv {
font-family: "JetBrains Mono", ui-monospace, monospace;
font-size: 11px;
color: var(--fg-dim);
width: 32px;
text-align: right;
}
/* -- 好奇萤火 -- */
.curio-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 12px;
}
.curio {
position: relative;
border: 1px solid var(--rule);
border-radius: 7px;
padding: 14px 16px 14px 18px;
background: var(--surface);
display: flex;
gap: 12px;
transition: border-color 0.15s;
}
.curio:hover {
border-color: var(--gilt-dim);
}
.curio-fire {
width: 10px;
height: 10px;
border-radius: 50%;
flex-shrink: 0;
margin-top: 5px;
background: var(--patina);
position: relative;
}
.curio-fire::after {
content: "";
position: absolute;
inset: -4px;
border-radius: 50%;
background: radial-gradient(circle, currentColor, transparent 70%);
opacity: 0.4;
}
.curio-fire.hi {
background: var(--gilt);
}
.curio-fire.hi::after {
opacity: 0.6;
animation: fire-pulse 2.4s cubic-bezier(0.16, 1, 0.3, 1) infinite;
}
@keyframes fire-pulse {
0%,
100% {
opacity: 0.35;
}
50% {
opacity: 0.7;
}
}
.curio-body {
flex: 1;
min-width: 0;
}
.curio-q {
font-family: var(--font-serif);
font-size: 14.5px;
font-weight: 600;
color: var(--fg);
line-height: 1.5;
}
.curio-meta {
display: flex;
align-items: center;
gap: 8px;
margin-top: 8px;
flex-wrap: wrap;
}
.src-tag {
font-family: "JetBrains Mono", ui-monospace, monospace;
font-size: 10px;
letter-spacing: 0.04em;
padding: 2px 8px;
border-radius: 999px;
border: 1px solid var(--rule);
display: inline-flex;
align-items: center;
gap: 5px;
color: var(--fg-dim);
}
.src-tag .sdot {
width: 5px;
height: 5px;
border-radius: 50%;
}
.src-world {
color: var(--patina);
}
.src-world .sdot {
background: var(--patina);
}
.src-memory {
color: var(--gilt);
}
.src-memory .sdot {
background: var(--gilt);
}
.src-percept {
color: var(--cinnabar);
}
.src-percept .sdot {
background: var(--cinnabar);
opacity: 0.8;
}
.src-goal {
color: var(--fg-dim);
}
.src-goal .sdot {
background: var(--fg-dim);
}
.src-reflect {
color: var(--patina-bright);
}
.src-reflect .sdot {
background: var(--patina-bright);
opacity: 0.7;
}
.src-time {
color: var(--gilt);
opacity: 0.8;
}
.src-time .sdot {
background: var(--gilt);
opacity: 0.7;
}
.risk-pill {
font-family: "JetBrains Mono", ui-monospace, monospace;
font-size: 10px;
padding: 2px 7px;
border-radius: 3px;
border: 1px solid var(--rule);
color: var(--fg-faint);
}
.risk-pill.L2 {
color: var(--gilt);
border-color: var(--gilt-dim);
background: var(--gilt-faint);
}
.risk-pill.L4 {
color: var(--cinnabar);
border-color: var(--cinnabar-dim);
background: rgba(184, 57, 46, 0.1);
}
.ent-link {
font-family: "JetBrains Mono", ui-monospace, monospace;
font-size: 10px;
color: var(--fg-faint);
}
.curio-bars {
display: flex;
gap: 12px;
margin-top: 9px;
}
.cbar {
flex: 1;
}
.cbar .ck {
font-family: "JetBrains Mono", ui-monospace, monospace;
font-size: 9.5px;
text-transform: uppercase;
letter-spacing: 0.06em;
color: var(--fg-faint);
}
.cbar .ctrack {
margin-top: 3px;
height: 3px;
border-radius: 2px;
background: var(--rule);
overflow: hidden;
}
.cbar .cfill {
height: 100%;
border-radius: 2px;
}
.cbar.value .cfill {
background: linear-gradient(90deg, var(--patina-dim), var(--patina));
}
.cbar.urg .cfill {
background: linear-gradient(90deg, var(--gilt-dim), var(--cinnabar));
}
/* -- 探索天平 -- */
.sub-card {
border: 1px solid var(--rule);
border-left: 3px solid var(--patina-dim);
border-radius: 6px;
padding: 16px 20px;
background: var(--surface);
display: flex;
flex-direction: column;
gap: 12px;
}
.sub-card.deferred {
border-left-color: var(--fg-faint);
opacity: 0.78;
}
.sub-top {
display: flex;
align-items: center;
gap: 10px;
flex-wrap: wrap;
}
.sub-from {
font-family: "JetBrains Mono", ui-monospace, monospace;
font-size: 10.5px;
color: var(--patina);
display: inline-flex;
align-items: center;
gap: 5px;
}
.sub-title {
font-family: var(--font-serif);
font-size: 15px;
font-weight: 600;
color: var(--fg);
}
.sub-status {
margin-left: auto;
font-family: "JetBrains Mono", ui-monospace, monospace;
font-size: 10.5px;
padding: 2px 9px;
border-radius: 999px;
border: 1px solid var(--rule);
color: var(--fg-dim);
}
.sub-status.candidate {
color: var(--gilt);
border-color: var(--gilt-dim);
background: var(--gilt-faint);
}
.sub-status.approved {
color: var(--patina);
border-color: var(--patina-dim);
background: var(--patina-wash);
}
.sub-status.deferred {
color: var(--fg-faint);
}
.sub-desc {
font-size: 13px;
color: var(--fg-dim);
line-height: 1.6;
}
.balance {
display: grid;
grid-template-columns: 1fr 56px 1fr;
align-items: center;
gap: 10px;
padding: 10px 0 4px;
}
.pan {
display: flex;
flex-direction: column;
gap: 5px;
}
.pan.right {
align-items: flex-end;
}
.pan .plabel {
font-family: "JetBrains Mono", ui-monospace, monospace;
font-size: 10px;
text-transform: uppercase;
letter-spacing: 0.08em;
color: var(--fg-faint);
}
.pan .ptrack {
width: 100%;
height: 6px;
border-radius: 3px;
background: var(--rule);
overflow: hidden;
position: relative;
}
.pan.gain .ptrack {
background: linear-gradient(90deg, var(--patina-dim), var(--patina-wash));
}
.pan.cost .ptrack {
background: linear-gradient(90deg, var(--patina-wash), var(--cinnabar-dim));
}
.pan .pfill {
position: absolute;
top: 0;
bottom: 0;
border-radius: 3px;
}
.pan.gain .pfill {
left: 0;
background: linear-gradient(90deg, var(--patina-dim), var(--patina));
}
.pan.cost .pfill {
right: 0;
background: linear-gradient(90deg, var(--cinnabar-dim), var(--cinnabar));
}
.pan .pval {
font-family: "JetBrains Mono", ui-monospace, monospace;
font-size: 11px;
}
.pan.gain .pval {
color: var(--patina);
}
.pan.cost .pval {
color: var(--cinnabar);
opacity: 0.88;
}
.fulcrum {
display: flex;
flex-direction: column;
align-items: center;
gap: 4px;
}
.fulcrum .beam {
width: 100%;
height: 1.5px;
background: var(--gilt-dim);
position: relative;
}
.fulcrum .beam::before,
.fulcrum .beam::after {
content: "";
position: absolute;
top: -2px;
width: 5px;
height: 5px;
border-radius: 50%;
background: var(--gilt-dim);
}
.fulcrum .beam::before {
left: 0;
}
.fulcrum .beam::after {
right: 0;
}
.fulcrum .pivot {
width: 0;
height: 0;
border-left: 6px solid transparent;
border-right: 6px solid transparent;
border-top: 8px solid var(--gilt-dim);
}
.fulcrum .risk {
font-family: "JetBrains Mono", ui-monospace, monospace;
font-size: 10px;
color: var(--gilt);
margin-top: 1px;
}
.sub-actions {
display: flex;
gap: 8px;
justify-content: flex-end;
padding-top: 4px;
border-top: 1px dashed var(--rule);
}
.vbtn {
font-family: inherit;
font-size: 12px;
font-weight: 500;
padding: 6px 14px;
border-radius: 4px;
cursor: pointer;
border: 1px solid var(--rule);
background: transparent;
color: var(--fg);
transition:
background 0.12s,
border-color 0.12s;
}
.vbtn:hover {
background: var(--surface-hi);
}
.vbtn.patina {
border-color: var(--patina-dim);
color: var(--patina);
background: var(--patina-wash);
}
.vbtn.patina:hover {
background: rgba(111, 163, 137, 0.14);
}
.vbtn.note {
font-size: 11px;
color: var(--fg-faint);
align-self: center;
margin-right: auto;
font-family: "JetBrains Mono", ui-monospace, monospace;
letter-spacing: 0.02em;
border: none;
}
/* -- 阴阳制衡 -- */
.yin-yang {
position: relative;
overflow: hidden;
border: 1px solid var(--gilt-dim);
border-radius: 8px;
padding: 16px 20px;
background:
linear-gradient(
90deg,
var(--patina-wash),
transparent 50%,
rgba(184, 57, 46, 0.06)
),
var(--surface);
box-shadow:
inset 0 1px 0 var(--face-in-top),
var(--shadow);
display: flex;
align-items: center;
gap: 18px;
}
.yy-taiji {
width: 58px;
height: 58px;
flex-shrink: 0;
animation: yy-spin 80s linear infinite;
transform-origin: 50% 50%;
}
@keyframes yy-spin {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
.yy-text {
flex: 1;
min-width: 0;
font-size: 12.5px;
color: var(--fg-dim);
line-height: 1.6;
}
.yy-text b {
font-family: var(--font-serif);
color: var(--fg);
font-weight: 600;
}
.yy-text .yang {
color: var(--patina);
}
.yy-text .yin {
color: var(--cinnabar);
opacity: 0.85;
}
.yy-meta {
font-family: "JetBrains Mono", ui-monospace, monospace;
font-size: 10.5px;
color: var(--fg-faint);
margin-top: 5px;
letter-spacing: 0.02em;
}
.yy-meta b {
color: var(--patina);
font-family: inherit;
font-weight: 600;
}