CAST SKY: unify w. My Sky — inline --duoUser felt + scroll-snap wheel, gear NVM, burger reopen glow — TDD
Replaces the root-level dark Gaussian CAST SKY modal with the my_sky / sky.html
apparatus, mirroring the Sig Select unify (71c0069). Sky data stays seat-bound
(Character.seat), never a pos-circle.
- room.html: the sky overlay moves INTO .room-hex-pane on --duoUser felt
(has-sky-stage), my_sea-style; rendered through the confirmed state too so
the burger can reopen the saved wheel. Sky tooltips stay at root.
- _sky_overlay.html: drops .sky-backdrop / .sky-modal-wrap / .sky-modal / header
+ the in-felt NVM; reuses the shared .sky-page form/wheel (.sky-page--room).
No live preview — the wheel only paints after SAVE SKY (my_sky parity); SAVE
adds body.sky-saved → the felt flips to scroll-snap (form shunts to page 2,
ease to the wheel on page 1). saved_sky_json primes the reopen draw. Inert
STUB hook for the post-character-creation form lock (roadmap step 21).
- _sky.scss: in-room felt fill + open/close (html.sky-open); hides the position
strip while the felt is up for a clean homogeneous surface.
- _room.scss: html.sky-open pins .room-aperture.is-scrollable (overflow hidden,
snap none) so the ATLAS/SCROLL/YARN/POST/PULSE reelhouse is unreachable while
casting; restored the instant the felt closes.
- _room_gear.html + room-views.js: NVM moves into a new .room-menu-sky gear pane
(→ epic:room, which re-renders DRAW SEA if saved else CAST SKY); syncGear()
shows it while sky-open.
- _burger.html + _burger.scss + burger-btn.js: the Sky sub-btn goes .active once
saved (sky_btn_active = sky_confirmed) — concurrent w. a thrice --priTk burger
pulse (.sky-saved-glow, rhymes w. .flash-inactive); an active click reopens
the wheel via window.openSkyFelt.
- epic/views.py: sky_btn_active + saved_sky_json ctx off the seat's confirmed
Character; the acting gamer's WS auto-reload is dropped (SAVE reveals the
wheel in place; the gear NVM does the nav to DRAW SEA).
- Tests: PickSkyUnifiedFeltTest + PickSeaRenderingTest ITs (930 epic+gameboard
green); BurgerSpec sky-glow/reopen Jasmine (full suite green); PickSky
LocalStorageTest + PickSkyDelTest FTs reworked to the post-save flow.
[[project-deck-segment-model]] [[feedback-scss-import-order-specificity]]
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -189,6 +189,22 @@
|
||||
0 0 1.2rem 0.3rem rgba(var(--ninUser), 0.35);
|
||||
}
|
||||
|
||||
// ── Sky-saved glow (CAST SKY → SAVE SKY) ──────────────────────────────
|
||||
//
|
||||
// Once the sky is saved, the burger pulses thrice in --priTk (border + icon)
|
||||
// to cue "your sky lives here now — reopen it via the Sky sub-btn". burger-
|
||||
// btn.js toggles .sky-saved-glow three times (finite), in rhyme with the
|
||||
// 2-pulse --priRd .flash-inactive + the voice pulse above. The Sky sub-btn's
|
||||
// own .active state (real cloud icon, opacity 1) is handled by the generic
|
||||
// .burger-fan-btn.active rules.
|
||||
#id_burger_btn.sky-saved-glow {
|
||||
color: rgba(var(--priTk), 1);
|
||||
border-color: rgba(var(--priTk), 1);
|
||||
box-shadow:
|
||||
0 0 0.5rem 0.1rem rgba(var(--priTk), 0.75),
|
||||
0 0 1.2rem 0.3rem rgba(var(--priTk), 0.35);
|
||||
}
|
||||
|
||||
// ── Voice affordance glow + pulse (Phase 3, my-sea voice) ─────────────
|
||||
//
|
||||
// Distinct from the sea-btn's --priYl `.glow-handoff` draw nudge: voice uses
|
||||
|
||||
@@ -91,6 +91,18 @@ html.sea-open #id_aperture_fill {
|
||||
}
|
||||
}
|
||||
|
||||
// While the CAST SKY felt is summoned (html.sky-open) the outer aperture must
|
||||
// NOT scroll down to the reelhouse carousel (ATLAS/SCROLL/YARN/POST/PULSE) —
|
||||
// the felt's OWN form↔wheel scroll-snap (.sky-page--room) is the only scroll
|
||||
// in play. Pin the aperture to the hex pane (which the felt fills); restored
|
||||
// the instant the felt closes (sky-open removed). overflow:hidden alone leaves
|
||||
// the aperture parked on whichever pane it was showing — and CAST SKY is only
|
||||
// reachable from the hex pane, so it pins to the hex every time.
|
||||
html.sky-open .room-aperture.is-scrollable {
|
||||
overflow-y: hidden;
|
||||
scroll-snap-type: none;
|
||||
}
|
||||
|
||||
.room-scroll-pane {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
@@ -13,6 +13,41 @@ html.sky-open {
|
||||
#id_aperture_fill { opacity: 1; }
|
||||
}
|
||||
|
||||
// ── In-room CAST SKY felt (unified with my_sky / sky.html) ────────────────────
|
||||
// The .sky-page apparatus rendered INSIDE .room-hex-pane (my_sea-style, like
|
||||
// .sig-overlay) instead of the old fixed dark modal. The hex pane becomes a
|
||||
// positioning context only while the felt shows, so the absolute-filling felt
|
||||
// scopes to the pane (not the viewport) and the position-strip's root stacking
|
||||
// stays untouched in every other phase. Hidden until the CAST SKY btn adds
|
||||
// html.sky-open; reuses every dashboard .sky-page form/wheel rule below.
|
||||
.room-hex-pane.has-sky-stage {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.sky-page--room {
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
// Within the hex-pane stacking context (matches .sig-overlay's z:5), above
|
||||
// the hex/seats it covers but below the root-level position strip (z-130).
|
||||
z-index: 5;
|
||||
// Hidden until opened — pointer-events off so the hidden felt can't eat the
|
||||
// CAST SKY btn click beneath it.
|
||||
visibility: hidden;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
html.sky-open .sky-page--room {
|
||||
visibility: visible;
|
||||
pointer-events: auto;
|
||||
}
|
||||
|
||||
// While the felt is up, hide the position strip (a z-130 hex-pane sibling that
|
||||
// would otherwise float its circles over the form) so the felt reads as a clean
|
||||
// homogeneous surface — restored the instant the felt closes.
|
||||
html.sky-open .position-strip {
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
// ── Backdrop ──────────────────────────────────────────────────────────────────
|
||||
|
||||
.sky-backdrop {
|
||||
|
||||
Reference in New Issue
Block a user