Files
scrying-pool/styles/scrying-pool.less
T
uberwald c4a375f4e3 Story 4.2: Implement full AV replacement with WebRTC stream access
- Update FoundryAdapter to properly detect and expose WebRTC stream access
- Modify ScryingPoolStrip to create video elements with WebRTC streams
- Add video container to roster-strip.hbs template with conditional rendering
- Add CSS to hide Foundry's AV dock (#av and .camera-view)
- Add CSS styling for video containers and elements
- Fix unused variable in FoundryAdapter.buildWebRTCSurface
- Add comprehensive test script for stream access implementation

Architecture: Full replacement mode where module hides Foundry's AV dock
and creates its own video elements using game.webrtc.client.getMediaStreamForUser()

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-05-24 09:12:06 +02:00

81 lines
3.9 KiB
Plaintext

/**
* styles/scrying-pool.less — Entry point (@imports only)
*
* Build: npm run build → dist/styles/scrying-pool.css
* Watch: npm run watch (chokidar detects changes in @import-ed partials)
*
* Import order: tokens (base → states → motion → focus) → components
*/
// ── Token layers ─────────────────────────────────────────────────────────────
@import "tokens/_base.less";
@import "tokens/_states.less";
@import "tokens/_motion.less";
@import "tokens/_focus.less";
// ── Component styles ──────────────────────────────────────────────────────────
@import "components/_participant-card.less";
@import "components/_roster-strip.less";
@import "components/_directors-board.less";
@import "components/_scene-preset-panel.less";
@import "components/_notification.less";
@import "components/_player-badge.less";
@import "components/_player-panel.less";
// Story 3.2: ConfirmationBar and StripOverlayLayer
@import "components/_strip-overlay-layer.less";
@import "components/_confirmation-bar.less";
// Story 3.3: Preset Import/Export Dialogs
@import "components/_preset-import-export.less";
// Story 4.1: Player Privacy Panel
@import "components/_player-privacy-panel.less";
/*
* VisibilityBadge :root exception
* ─────────────────────────────────────────────────────────────────────────────
* PlayerStatusBadge (FR-22) is mounted directly onto Foundry's AV tile DOM,
* OUTSIDE the .scrying-pool root element. Its state tokens must therefore be
* declared on :root rather than scoped under .scrying-pool.
*
* This is an intentional architectural exception — all other module CSS MUST
* remain scoped under .scrying-pool. Do not add additional :root declarations
* without documenting the architectural reason here.
*
* The badge tokens are a subset of the Layer 2 state tokens declared in
* _states.less, re-exported on :root for badge accessibility outside the root.
*/
:root {
--sp-badge-state-active-bg: var(--sp-state-active-bg);
--sp-badge-state-active-text: var(--sp-state-active-text);
--sp-badge-state-hidden-bg: var(--sp-state-hidden-bg);
--sp-badge-state-hidden-text: var(--sp-state-hidden-text);
--sp-badge-state-self-muted-bg: var(--sp-state-self-muted-bg);
--sp-badge-state-self-muted-text: var(--sp-state-self-muted-text);
--sp-badge-state-offline-bg: var(--sp-state-offline-bg);
--sp-badge-state-offline-text: var(--sp-state-offline-text);
--sp-badge-state-cam-lost-bg: var(--sp-state-cam-lost-bg);
--sp-badge-state-cam-lost-text: var(--sp-state-cam-lost-text);
--sp-badge-state-reconnecting-bg: var(--sp-state-reconnecting-bg);
--sp-badge-state-reconnecting-text: var(--sp-state-reconnecting-text);
/* Badge surface & text (badge mounts outside .scrying-pool root) */
--sp-badge-surface: var(--sp-badge-bg, rgba(0, 0, 0, 0.72));
--sp-badge-color: var(--sp-badge-text, #dde2e8);
}
// ============================================================
// Full AV Replacement Mode: Hide Foundry's AV Dock
// ============================================================
// When module is active with stream-access mode, completely hide
// Foundry's native AV dock UI and replace it with our ScryingPoolStrip
// This implements the full replacement architecture (not overlay)
// ============================================================
// Hide the entire AV dock container
#av {
display: none !important;
}
// Also hide individual camera views in case they're rendered elsewhere
.camera-view {
display: none !important;
}