// // _freeform-camera.less — Floating camera window styles for freeform layout // // // _freeform-camera.less — Floating camera window styles for freeform layout // // DOM structure (Foundry v14 ApplicationV2): // section.app-v2.application.window-content.scrying-pool.freeform-camera // header.window-header ← title bar // section.window-content ← inner wrapper for PARTS // section.freeform-camera__body ← our template root // div.freeform-camera__video-container // div.freeform-camera__footer // footer.window-resizable-handle ← resize grip // // ── Outer app element ───────────────────────────────────────────────────── // Override Foundry's defaults with higher specificity + !important. .scrying-pool.freeform-camera { border-radius: 4px !important; overflow: hidden !important; } // ── Window header — ultra-compact ───────────────────────────────────────── .scrying-pool.freeform-camera > header.window-header { padding: 1px 6px !important; min-height: 0 !important; height: 22px !important; line-height: 20px !important; background: rgba(0, 0, 0, 0.75) !important; border-bottom: 1px solid rgba(255, 255, 255, 0.08) !important; flex-shrink: 0; gap: 2px; } .scrying-pool.freeform-camera .window-title { font-size: 10px !important; line-height: 18px !important; font-weight: 500; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; color: #dde2e8; } .scrying-pool.freeform-camera .window-controls { gap: 1px; } .scrying-pool.freeform-camera .window-control { width: 18px !important; height: 18px !important; line-height: 18px !important; font-size: 10px !important; padding: 0 !important; margin: 0 !important; border-radius: 2px !important; display: flex !important; align-items: center; justify-content: center; i { font-size: 10px !important; } &:hover { background: rgba(255, 255, 255, 0.15) !important; } } .scrying-pool.freeform-camera .window-control.close { font-size: 13px !important; font-weight: 400; } // ── Inner content wrapper (Foundry's .window-content) ───────────────────── .scrying-pool.freeform-camera > .window-content { padding: 0 !important; display: flex !important; flex-direction: column !important; flex: 1 !important; min-height: 0 !important; overflow: hidden !important; background: #000; } // ── Our body inside inner wrapper ───────────────────────────────────────── .scrying-pool.freeform-camera .freeform-camera__body { display: flex; flex-direction: column; flex: 1; min-height: 0; overflow: hidden; color: #dde2e8; } .scrying-pool.freeform-camera .freeform-camera__video-container { flex: 1; position: relative; min-height: 0; overflow: hidden; background: #000; } .scrying-pool.freeform-camera .freeform-camera__video-element { display: block; width: 100%; height: 100%; object-fit: cover; } // ── Footer ──────────────────────────────────────────────────────────────── .scrying-pool.freeform-camera .freeform-camera__footer { display: flex; align-items: center; justify-content: space-between; padding: 1px 6px; gap: 4px; background: rgba(0, 0, 0, 0.55); flex-shrink: 0; height: 18px; } .scrying-pool.freeform-camera .freeform-camera__footer-left { display: flex; align-items: center; gap: 4px; min-width: 0; } .scrying-pool.freeform-camera .freeform-camera__footer-right { display: flex; align-items: center; flex-shrink: 0; } .scrying-pool.freeform-camera .freeform-camera__control-btn { background: none; border: none; color: #dde2e8; cursor: pointer; padding: 1px 3px; font-size: 9px; line-height: 1; border-radius: 2px; transition: background 0.15s; &:hover { background: rgba(255, 255, 255, 0.15); } &:active { background: rgba(255, 255, 255, 0.25); } i { font-size: 9px; } } .scrying-pool.freeform-camera .freeform-camera__name { font-size: 9px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; line-height: 1; } // ── Volume slider ───────────────────────────────────────────────────────── .scrying-pool.freeform-camera .freeform-camera__volume { width: 44px; height: 10px; accent-color: #4a9eff; cursor: pointer; margin: 0; &::-webkit-slider-thumb { appearance: none; width: 8px; height: 8px; border-radius: 50%; background: #4a9eff; border: none; } &::-moz-range-thumb { width: 8px; height: 8px; border-radius: 50%; background: #4a9eff; border: none; } &::-webkit-slider-runnable-track { height: 2px; } &::-moz-range-track { height: 2px; } } // ── Spotlight glow ──────────────────────────────────────────────────────── .scrying-pool.freeform-camera.is-spotlight { box-shadow: 0 0 10px 2px #ffd700; border-color: #ffd700; } .scrying-pool.freeform-camera.is-spotlight > header.window-header { border-bottom-color: #ffd700 !important; }