/** * styles/components/_directors-board.less * * Layout for the Director's Board ApplicationV2 window. * All selectors scoped under .scrying-pool. * Uses --sp-* tokens only — no Foundry --color-* / --font-* / --border-* tokens. */ // The ApplicationV2 window root already has .scrying-pool .directors-board applied // via DEFAULT_OPTIONS.classes. The content section and footer live inside PARTS. .scrying-pool.directors-board { background: linear-gradient(175deg, hsl(220, 18%, 13%) 0%, hsl(220, 15%, 10%) 100%); color: var(--sp-text-primary); border: 1px solid rgba(255, 255, 255, 0.08); border-top: 2px solid hsl(200, 55%, 40%); border-radius: 8px; box-shadow: 0 8px 32px rgba(0, 0, 0, 0.55), 0 2px 8px rgba(0, 0, 0, 0.35), inset 0 1px 0 rgba(255, 255, 255, 0.04); // ── Hide Foundry's default window header ────────────────────────────────── header.window-header { display: none; } // The inner container is position:relative so the close btn can be absolute. .directors-board__inner { position: relative; display: flex; flex-direction: column; height: 100%; } // ── Drag grip ───────────────────────────────────────────────────────────── .directors-board__grip { width: 100%; height: 18px; display: flex; align-items: center; justify-content: center; cursor: grab; color: var(--sp-text-muted, hsl(0, 0%, 70%)); opacity: 0.35; font-size: 10px; flex-shrink: 0; transition: opacity 0.15s, background 0.15s; user-select: none; border-radius: 8px 8px 0 0; &:hover { opacity: 0.8; background: rgba(255, 255, 255, 0.03); } &:active { cursor: grabbing; opacity: 1; } } // ── Custom close button ─────────────────────────────────────────────────── .directors-board__close-btn { position: absolute; top: 2px; right: 6px; z-index: 10; width: 20px; height: 20px; padding: 0; line-height: 20px; font-size: 14px; font-weight: 400; background: transparent; color: var(--sp-text-muted); border: none; border-radius: var(--sp-radius-sm, 3px); cursor: pointer; opacity: 0.5; transition: opacity 0.15s, background 0.15s, color 0.15s; &:hover { opacity: 1; background: rgba(255, 255, 255, 0.08); color: var(--sp-text-primary); } &:active { opacity: 0.75; } } // ── Participant grid ────────────────────────────────────────────────────── .directors-board__content { display: grid; grid-template-columns: repeat(auto-fill, 68px); gap: 6px; padding: 8px; overflow-y: auto; flex: 1 1 auto; list-style: none; margin: 0; } // ── Empty state ──────────────────────────────────────────────────────────── .directors-board__empty { grid-column: 1 / -1; text-align: center; color: var(--sp-text-muted); font-size: 12px; padding: 20px 0; margin: 0; } // ── Bulk-action bar ──────────────────────────────────────────────────────── .directors-board__bulk-bar { display: flex; align-items: center; gap: 4px; padding: 4px 8px; border-top: 1px solid rgba(255, 255, 255, 0.06); flex-shrink: 0; flex-wrap: wrap; background: rgba(0, 0, 0, 0.15); } .directors-board__bulk-btn { display: inline-flex; align-items: center; gap: 4px; font-size: 11px; background: rgba(74, 111, 156, 0.7); color: #e8edf2; border: 1px solid rgba(74, 111, 156, 0.4); border-radius: 3px; padding: 3px 8px; cursor: pointer; transition: background 0.15s, opacity 0.15s; i { font-size: 10px; } &:hover { background: rgba(74, 111, 156, 0.95); } &:active { opacity: 0.8; } &--undo { background: transparent; color: var(--sp-text-muted); border: 1px solid rgba(255, 255, 255, 0.12); &:hover { color: var(--sp-text-primary, #dde2e8); border-color: rgba(255,255,255,0.25); background: rgba(255,255,255,0.05); } } &--restore { background: rgba(123, 79, 166, 0.7); border-color: rgba(123, 79, 166, 0.4); &:hover { background: rgba(123, 79, 166, 0.95); } } } // ── Help / shortcut-panel button ─────────────────────────────────────────── .directors-board__help-btn { margin-left: auto; width: 20px; height: 20px; border-radius: 50%; border: 1px solid rgba(255, 255, 255, 0.15); background: transparent; color: var(--sp-text-muted); font-size: 11px; font-weight: bold; line-height: 1; cursor: pointer; flex-shrink: 0; display: flex; align-items: center; justify-content: center; &:hover { background: rgba(74, 111, 156, 0.8); color: #fff; border-color: transparent; } } // ── Footer (preset actions) ──────────────────────────────────────────────── .directors-board__footer { display: flex; flex-direction: column; gap: 3px; padding: 5px 8px 6px; border-top: 1px solid rgba(255, 255, 255, 0.06); flex-shrink: 0; background: rgba(0, 0, 0, 0.2); border-radius: 0 0 8px 8px; } .directors-board__footer-group { display: flex; align-items: center; gap: 3px; &--presets { flex-wrap: wrap; } &--controls { padding-top: 3px; border-top: 1px solid rgba(255, 255, 255, 0.05); } } .directors-board__footer-sep { width: 1px; align-self: stretch; background: rgba(255, 255, 255, 0.1); margin: 0 3px; flex-shrink: 0; } .directors-board__footer-btn { flex: 1; display: inline-flex; align-items: center; justify-content: center; gap: 4px; font-size: 10px; background: rgba(74, 111, 156, 0.65); color: #d8e4f0; border: 1px solid rgba(74, 111, 156, 0.35); border-radius: 3px; padding: 4px 6px; cursor: pointer; transition: background 0.15s, opacity 0.15s; white-space: nowrap; i { font-size: 0.9em; } &:hover { background: rgba(74, 111, 156, 0.9); } &:active { opacity: 0.75; } &[disabled] { cursor: not-allowed; opacity: 0.4; background: transparent; color: var(--sp-text-muted); border: 1px solid rgba(255, 255, 255, 0.08); } &--secondary { background: rgba(255, 255, 255, 0.05); color: var(--sp-text-secondary, #9aa4b0); border: 1px solid rgba(255, 255, 255, 0.08); &:hover { background: rgba(255, 255, 255, 0.1); color: #dde2e8; } } &--auto-apply { background: rgba(255, 255, 255, 0.05); color: var(--sp-text-secondary, #9aa4b0); border: 1px solid rgba(255, 255, 255, 0.08); &:hover { background: rgba(255, 255, 255, 0.1); color: #dde2e8; } } &--av { background: rgba(30, 35, 45, 0.8); border: 1px solid rgba(255, 255, 255, 0.1); color: var(--sp-text-muted, #aaa); &:hover { background: rgba(50, 55, 70, 0.9); } } &--av-active { background: rgba(90, 42, 42, 0.85); border-color: rgba(160, 64, 64, 0.6); color: #f0a0a0; &:hover { background: rgba(110, 50, 50, 0.95); } } &--av-config { background: rgba(30, 35, 45, 0.8); border: 1px solid rgba(255, 255, 255, 0.1); color: var(--sp-text-muted, #aaa); flex: 0 0 auto; &:hover { background: rgba(50, 55, 70, 0.9); } } } }