feat: fold dasha periods and redraw the western wheel
The dasha tab leads with a now card and a duration bar, and keeps sub-periods inside the current details element. A zero-year Chara row stays grey, shows 0 年, and cannot expand. The tropical wheel uses a 520 view box, element bands, separated planet labels, and aspect lines that stay visible while a selected body is highlighted.
This commit is contained in:
@@ -141,6 +141,12 @@
|
||||
--color-planet-saturn: #5b6bb0;
|
||||
--color-planet-node: #6b7280;
|
||||
--color-planet-ascendant: #b0413e;
|
||||
/* Zodiac-band fills. Sign names sit on them in --color-ink, not as general
|
||||
text surfaces. Dark values are in both dark blocks. */
|
||||
--color-element-fire: #f4d3c3;
|
||||
--color-element-earth: #e7dfc6;
|
||||
--color-element-air: #d5e2f2;
|
||||
--color-element-water: #d3e6e8;
|
||||
--shadow-soft: 0 1px 2px rgba(29, 29, 31, .06), 0 8px 20px -18px rgba(29, 29, 31, .2);
|
||||
--shadow-elevated: 0 1px 2px rgba(29, 29, 31, .07), 0 12px 28px -16px rgba(29, 29, 31, .18);
|
||||
/* Display and body share one sans stack. The old value led with two Anthropic
|
||||
@@ -295,6 +301,10 @@
|
||||
--color-planet-saturn: #8d9be0;
|
||||
--color-planet-node: #a1a7b3;
|
||||
--color-planet-ascendant: #e07b78;
|
||||
--color-element-fire: #5a3a32;
|
||||
--color-element-earth: #4a4636;
|
||||
--color-element-air: #2e3c4e;
|
||||
--color-element-water: #2a4448;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -379,6 +389,10 @@
|
||||
--color-planet-saturn: #8d9be0;
|
||||
--color-planet-node: #a1a7b3;
|
||||
--color-planet-ascendant: #e07b78;
|
||||
--color-element-fire: #5a3a32;
|
||||
--color-element-earth: #4a4636;
|
||||
--color-element-air: #2e3c4e;
|
||||
--color-element-water: #2a4448;
|
||||
}
|
||||
|
||||
|
||||
@@ -5062,9 +5076,75 @@ input:not([type="radio"]):not([type="checkbox"]):not([class^="ant-"]):not([class
|
||||
}
|
||||
.chart-page-planet-card p { margin: 0 0 var(--space-2); font-size: var(--type-body-sm); }
|
||||
.chart-page-symbol { color: var(--color-ink-tertiary); }
|
||||
.chart-page-dasha-now {
|
||||
display: grid;
|
||||
gap: var(--space-2);
|
||||
margin: var(--space-3) 0;
|
||||
padding: var(--space-3);
|
||||
border-radius: var(--radius-sm);
|
||||
background: var(--color-canvas-muted);
|
||||
}
|
||||
.chart-page-dasha-now h4 {
|
||||
margin: 0;
|
||||
color: var(--color-ink-secondary);
|
||||
font-size: var(--type-caption);
|
||||
font-weight: 500;
|
||||
}
|
||||
.chart-page-dasha-now dl { display: grid; gap: var(--space-1); margin: 0; }
|
||||
.chart-page-dasha-now div {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
gap: var(--space-3);
|
||||
align-items: baseline;
|
||||
}
|
||||
.chart-page-dasha-now dt {
|
||||
color: var(--color-ink-tertiary);
|
||||
font-size: var(--type-caption);
|
||||
}
|
||||
.chart-page-dasha-now dd {
|
||||
margin: 0;
|
||||
color: var(--color-ink);
|
||||
font-size: var(--type-body-sm);
|
||||
font-variant-numeric: tabular-nums;
|
||||
text-align: right;
|
||||
}
|
||||
.chart-page-dasha-axis { margin: 0 0 var(--space-4); }
|
||||
.chart-page-dasha-bar-wrap { position: relative; }
|
||||
.chart-page-dasha-bar {
|
||||
display: flex;
|
||||
height: 12px;
|
||||
overflow: hidden;
|
||||
border-radius: 999px;
|
||||
background: var(--color-canvas);
|
||||
gap: 1px;
|
||||
}
|
||||
.chart-page-dasha-segment { min-width: 0; height: 100%; }
|
||||
.chart-page-dasha-segment:nth-child(6n + 1) { background: var(--color-action-soft); }
|
||||
.chart-page-dasha-segment:nth-child(6n + 2) { background: var(--color-success-muted); }
|
||||
.chart-page-dasha-segment:nth-child(6n + 3) { background: var(--color-canvas-strong); }
|
||||
.chart-page-dasha-segment:nth-child(6n + 4) { background: var(--color-danger-muted); }
|
||||
.chart-page-dasha-segment:nth-child(6n + 5) { background: var(--color-selected); }
|
||||
.chart-page-dasha-segment:nth-child(6n + 6) { background: var(--color-canvas-muted); }
|
||||
.chart-page-dasha-segment.is-current { box-shadow: inset 0 0 0 2px var(--color-ink); }
|
||||
.chart-page-dasha-today {
|
||||
position: absolute;
|
||||
top: -2px;
|
||||
width: 2px;
|
||||
height: 16px;
|
||||
background: var(--color-ink);
|
||||
transform: translateX(-1px);
|
||||
}
|
||||
.chart-page-dasha-scale {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
margin-top: var(--space-1);
|
||||
color: var(--color-ink-tertiary);
|
||||
font-size: var(--type-caption);
|
||||
font-variant-numeric: tabular-nums;
|
||||
}
|
||||
.chart-page-dasha-list { margin: 0; padding: 0; list-style: none; display: grid; gap: var(--space-2); }
|
||||
.chart-page-dasha-period {
|
||||
padding: var(--space-3);
|
||||
padding: var(--space-2) var(--space-3);
|
||||
border: 1px solid transparent;
|
||||
border-radius: var(--radius-sm);
|
||||
}
|
||||
@@ -5073,6 +5153,8 @@ input:not([type="radio"]):not([type="checkbox"]):not([class^="ant-"]):not([class
|
||||
border-color: var(--color-border-strong);
|
||||
box-shadow: inset 2px 0 0 var(--color-focus);
|
||||
}
|
||||
.chart-page-dasha-period.is-zero { color: var(--color-ink-tertiary); }
|
||||
.chart-page-dasha-period.is-zero span { margin-left: auto; }
|
||||
.chart-page-dasha-period p {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
@@ -5080,14 +5162,53 @@ input:not([type="radio"]):not([type="checkbox"]):not([class^="ant-"]):not([class
|
||||
margin: 0;
|
||||
font-size: var(--type-body-sm);
|
||||
}
|
||||
.chart-page-dasha-period summary {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: var(--space-2);
|
||||
min-height: 44px;
|
||||
cursor: pointer;
|
||||
list-style: none;
|
||||
font-size: var(--type-body-sm);
|
||||
}
|
||||
.chart-page-dasha-period summary::-webkit-details-marker { display: none; }
|
||||
.chart-page-dasha-period summary::before {
|
||||
content: "";
|
||||
width: 0.45em;
|
||||
height: 0.45em;
|
||||
flex: 0 0 auto;
|
||||
border-right: 1.5px solid var(--color-ink-tertiary);
|
||||
border-bottom: 1.5px solid var(--color-ink-tertiary);
|
||||
transform: rotate(-45deg);
|
||||
}
|
||||
.chart-page-dasha-period details[open] > summary::before { transform: rotate(45deg); }
|
||||
.chart-page-dasha-period details:not([open]) > ul { display: none; }
|
||||
.chart-page-dasha-summary-label { min-width: 0; }
|
||||
.chart-page-dasha-dates {
|
||||
margin-left: auto;
|
||||
color: var(--color-ink-secondary);
|
||||
font-variant-numeric: tabular-nums;
|
||||
white-space: nowrap;
|
||||
}
|
||||
.chart-page-dasha-period ul {
|
||||
margin: var(--space-2) 0 0;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
list-style: none;
|
||||
color: var(--color-ink-secondary);
|
||||
font-size: var(--type-caption);
|
||||
}
|
||||
.chart-page-dasha-period ul li.is-current { color: var(--color-ink); font-weight: 500; }
|
||||
.chart-page-dasha-antar {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: var(--space-2);
|
||||
min-height: 44px;
|
||||
}
|
||||
.chart-page-dasha-antar.is-current { color: var(--color-ink); font-weight: 500; }
|
||||
.chart-page-western-wheel {
|
||||
width: 100%;
|
||||
max-width: 520px;
|
||||
margin-inline: auto;
|
||||
}
|
||||
.chart-page-western-svg { display: block; width: 100%; height: auto; color: var(--color-ink); }
|
||||
.chart-page-western-ring,
|
||||
.chart-page-western-spoke,
|
||||
@@ -5096,10 +5217,78 @@ input:not([type="radio"]):not([type="checkbox"]):not([class^="ant-"]):not([class
|
||||
stroke: var(--color-border-strong);
|
||||
stroke-width: 1.25;
|
||||
}
|
||||
.chart-page-western-core { fill: var(--color-canvas-muted); stroke: var(--color-border-strong); }
|
||||
.chart-page-western-svg text { fill: currentColor; font-size: 16px; }
|
||||
.chart-page-western-house-label,
|
||||
.chart-page-western-asc { fill: var(--color-ink-tertiary); }
|
||||
.chart-page-western-house.is-axis { stroke: var(--color-ink-secondary); stroke-width: 2.4; }
|
||||
.chart-page-western-sign { stroke: none; }
|
||||
.chart-page-western-sign[data-element="fire"] { fill: var(--color-element-fire); }
|
||||
.chart-page-western-sign[data-element="earth"] { fill: var(--color-element-earth); }
|
||||
.chart-page-western-sign[data-element="air"] { fill: var(--color-element-air); }
|
||||
.chart-page-western-sign[data-element="water"] { fill: var(--color-element-water); }
|
||||
.chart-page-western-svg text { fill: currentColor; font-size: 17px; }
|
||||
.chart-page-western-sign-label { fill: var(--color-ink); }
|
||||
.chart-page-western-house-label { fill: var(--color-ink-secondary); }
|
||||
.chart-page-western-angle { fill: var(--color-ink); font-weight: 600; }
|
||||
.chart-page-western-planet { cursor: pointer; }
|
||||
.chart-page-western-planet text {
|
||||
font-family: var(--font-planet-glyphs), "Apple Symbols", "Segoe UI Symbol", "Noto Sans Symbols", sans-serif;
|
||||
}
|
||||
.chart-page-western-hit { fill: var(--color-canvas); opacity: 0; }
|
||||
.chart-page-western-leader,
|
||||
.chart-page-western-tick {
|
||||
fill: none;
|
||||
stroke: var(--color-ink-tertiary);
|
||||
stroke-width: 0.8;
|
||||
}
|
||||
.chart-page-western-aspect { fill: none; stroke-width: 1.15; }
|
||||
.chart-page-western-aspect[data-tone="soft"] { stroke: var(--color-success); }
|
||||
.chart-page-western-aspect[data-tone="hard"] { stroke: var(--color-danger); }
|
||||
.chart-page-western-aspect[data-tone="other"] { stroke: var(--color-border-strong); }
|
||||
.chart-page-western-svg[data-filtering="true"] .chart-page-western-planet:not(.is-selected),
|
||||
.chart-page-western-svg[data-filtering="true"] .chart-page-western-leader:not([data-active="true"]),
|
||||
.chart-page-western-svg[data-filtering="true"] .chart-page-western-tick { opacity: 0.28; }
|
||||
.chart-page-western-svg[data-filtering="true"] .chart-page-western-aspect:not([data-active="true"]) { opacity: 0.12; }
|
||||
.chart-page-western-chips {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: var(--space-2);
|
||||
margin: 0 0 var(--space-4);
|
||||
padding: 0;
|
||||
list-style: none;
|
||||
}
|
||||
.chart-page-western-chips li {
|
||||
padding: var(--space-2) var(--space-3);
|
||||
border-radius: 999px;
|
||||
background: var(--color-canvas-muted);
|
||||
color: var(--color-ink);
|
||||
font-size: var(--type-body-sm);
|
||||
}
|
||||
.chart-page-western-table-wrap {
|
||||
min-width: 0;
|
||||
overflow-x: auto;
|
||||
overscroll-behavior-x: contain;
|
||||
}
|
||||
.chart-page-western-table {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
background: var(--color-canvas);
|
||||
font-size: var(--type-body-sm);
|
||||
}
|
||||
.chart-page-western-table th,
|
||||
.chart-page-western-table td {
|
||||
height: 44px;
|
||||
padding: 0 var(--space-3);
|
||||
border-bottom: 1px solid var(--color-border);
|
||||
text-align: left;
|
||||
}
|
||||
.chart-page-western-table thead th {
|
||||
background: var(--color-canvas-muted);
|
||||
color: var(--color-ink-secondary);
|
||||
font-size: var(--type-caption);
|
||||
font-weight: 500;
|
||||
}
|
||||
.chart-page-western-num { font-variant-numeric: tabular-nums; }
|
||||
.chart-page-western-table tbody tr[tabindex] { cursor: pointer; }
|
||||
.chart-page-western-table tbody tr[tabindex]:hover { background: var(--color-canvas-muted); }
|
||||
.chart-page-western-table tr.is-selected { background: var(--color-selected); }
|
||||
.chart-page-qizheng-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(4, minmax(0, 1fr));
|
||||
|
||||
Reference in New Issue
Block a user