NATUS WHEEL: tick lines + dual conjunction tooltip — TDD
All checks were successful
ci/woodpecker/push/pyswiss Pipeline was successful
ci/woodpecker/push/main Pipeline was successful

- _computeConjunctions(planets, threshold=8) detects conjunct pairs
- Tick lines (nw-planet-tick) radiate from each planet circle outward
  past the zodiac ring; animated via attrTween; styled with --pri* colours
- planetEl.raise() on mouseover puts hovered planet on top in SVG z-order
- Dual tooltip: hovering a conjunct planet shows #id_natus_tooltip_2 beside
  the primary, populated with the hidden partner's sign/degree/retrograde data
- #id_natus_tooltip_2 added to home.html, sky.html, room.html
- _natus.scss: tick line rules + both tooltip IDs share all selectors;
  #id_natus_confirm gets position:relative/z-index:1 to fix click intercept
- NatusWheelSpec.js: T7 (tick extends past zodiac), T8 (raise to front),
  T9j (conjunction dual tooltip) in new conjunction describe block
- FT T3 trimmed to element-ring hover only; planet/conjunction hover
  delegated to Jasmine (ActionChains planet-circle hover unreliable in Firefox)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Disco DeDisco
2026-04-19 00:16:05 -04:00
parent 09ed64080b
commit fbf260b148
8 changed files with 357 additions and 34 deletions

View File

@@ -438,6 +438,24 @@ html.natus-open .natus-modal-wrap {
cursor: pointer;
}
// ── Planet tick lines ─────────────────────────────────────────────────────────
.nw-planet-tick {
fill: none;
stroke-width: 3px;
stroke-opacity: 0.5;
stroke-linecap: round;
}
.nw-planet-tick--au { stroke: rgba(var(--priAu), 1); }
.nw-planet-tick--ag { stroke: rgba(var(--priAg), 1); }
.nw-planet-tick--hg { stroke: rgba(var(--priHg), 1); }
.nw-planet-tick--cu { stroke: rgba(var(--priCu), 1); }
.nw-planet-tick--fe { stroke: rgba(var(--priFe), 1); }
.nw-planet-tick--sn { stroke: rgba(var(--priSn), 1); }
.nw-planet-tick--pb { stroke: rgba(var(--priPb), 1); }
.nw-planet-tick--u { stroke: rgba(var(--priU), 1); }
.nw-planet-tick--np { stroke: rgba(var(--priNp), 1); }
.nw-planet-tick--pu { stroke: rgba(var(--priPu), 1); }
// Aspects
.nw-aspects { opacity: 0.8; }
@@ -453,7 +471,8 @@ html.natus-open .natus-modal-wrap {
// container-type (both break position:fixed). Placed as a direct sibling of
// .natus-overlay in room.html; alongside #id_tooltip_portal in home.html. ──
#id_natus_tooltip {
#id_natus_tooltip,
#id_natus_tooltip_2 {
position: fixed;
z-index: 200;
pointer-events: none;
@@ -477,7 +496,8 @@ html.natus-open .natus-modal-wrap {
}
// Element title colors — primary tier on dark palettes
#id_natus_tooltip {
#id_natus_tooltip,
#id_natus_tooltip_2 {
.tt-title--el-fire { color: rgba(var(--priRd), 1); }
.tt-title--el-stone { color: rgba(var(--priFs), 1); }
.tt-title--el-time { color: rgba(var(--priYl), 1); }
@@ -487,7 +507,8 @@ html.natus-open .natus-modal-wrap {
}
// On light palettes — switch to tertiary tier for legibility
body[class*="-light"] #id_natus_tooltip {
body[class*="-light"] #id_natus_tooltip,
body[class*="-light"] #id_natus_tooltip_2 {
.tt-title--el-fire { color: rgba(var(--terRd), 1); }
.tt-title--el-stone { color: rgba(var(--terFs), 1); }
.tt-title--el-time { color: rgba(var(--terYl), 1); }
@@ -497,7 +518,8 @@ body[class*="-light"] #id_natus_tooltip {
}
// On light palettes — switch to primary (darkest) tier for legibility
body[class*="-light"] #id_natus_tooltip {
body[class*="-light"] #id_natus_tooltip,
body[class*="-light"] #id_natus_tooltip_2 {
.tt-title--au { color: rgba(var(--priAu), 1); }
.tt-title--ag { color: rgba(var(--priAg), 1); }
.tt-title--hg { color: rgba(var(--priHg), 1); }
@@ -538,6 +560,8 @@ body[class*="-light"] #id_natus_tooltip {
#id_natus_confirm {
margin-top: -1.5rem;
align-self: center;
position: relative;
z-index: 1;
}
}
}