/* * VidConf — превью камеры на входе (сессия 33, `JoinPage`; LoginPage * превью не показывает — см. `DeviceCheckCard` не используется там). * Свой файл: компонент самодостаточный, стили ему не нужны нигде за * пределами компонента. */ .device-check { margin: 0 auto var(--space-5); } /* Окошко превью и кнопки под ним — одна композиция шириной в половину карточки (`.flow-card`, куда компонент вложен): проценты сами масштабируются от фактической ширины родителя без хардкода пикселей. */ .device-check-inner { width: 50%; margin: 0 auto; } .device-check-frame { position: relative; width: 100%; aspect-ratio: 4 / 3; border-radius: var(--radius-lg); overflow: hidden; background: var(--color-bg-alt); border: 1px solid var(--color-border); } .device-check-video { width: 100%; height: 100%; object-fit: cover; /* Своё видео принято показывать зеркально — так человек видит себя привычно, как в зеркале, а не «как его видят другие». */ transform: scaleX(-1); } .device-check-placeholder { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; color: var(--color-ink-400); } .device-check-placeholder .lucide { width: 26px; height: 26px; } /* Кнопки без подписи, только пиктограммы — их совместная ширина равна ширине окошка превью (тот же `.device-check-inner`), за края не выступают. */ .device-check-toggles { display: flex; gap: var(--space-2); margin-top: var(--space-2); } .device-check-toggle { flex: 1; display: flex; align-items: center; justify-content: center; padding: 8px 0; border-radius: var(--radius-lg); border: 1px solid var(--color-border); background: var(--color-bg-alt); color: var(--color-ink-500); cursor: pointer; } .device-check-toggle .lucide { width: 18px; height: 18px; } .device-check-toggle.is-on { background: var(--color-accent); border-color: transparent; color: var(--color-accent-text); } .device-check-toggle:disabled { opacity: 0.5; cursor: not-allowed; } .device-check-hint { text-align: center; margin-top: var(--space-3); } /* Выбор фона под кнопками превью (сессия 35). Здесь плитки идут ОДНОЙ прокручиваемой строкой, а не сеткой, как в комнате и в профиле: карточка входа и без того высокая, а число своих картинок доходит до десяти — сетка выросла бы на шесть рядов и увела бы кнопку «Продолжить» за нижний край экрана. Строка держит высоту постоянной при любом числе картинок. Сами плитки — общие, см. virtual-background.css. */ .device-check-backgrounds { margin: var(--space-4) auto 0; } .device-check-backgrounds .bg-grid { display: flex; gap: var(--space-2); overflow-x: auto; padding-bottom: var(--space-2); } .device-check-backgrounds .bg-tile { flex: 0 0 auto; width: 72px; }