Files
vidconf/frontend/src/styles/join.css
Max Ronzhin 3c36a45d57 fix(join): кнопка «Ввести другую ссылку или номер» вылезала за карточку
.btn держит white-space: nowrap — на остальных кнопках экрана join текст
короткий, а на экране «конференция завершена» кнопка не обёрнута в форму
(в отличие от Продолжить/Войти) и не получает от неё ширину, поэтому
длинная фраза без переноса выталкивала кнопку за правый край карточки на
узких экранах.
2026-07-26 04:38:51 +03:00

89 lines
5.2 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/*
* VidConf — стили экрана подключения к конференции.
* 1:1 воспроизводит design/mockups/join.html (3 состояния одного флоу).
* Экран публичный (доступен гостю без аккаунта), поэтому не переиспользует
* `.page-shell`/`ShellTopbar` — свой минимальный топбар с брендом.
*/
.join-shell { min-height: 100vh; display: flex; flex-direction: column; background: var(--color-bg); }
.join-topbar { display: flex; align-items: center; justify-content: space-between; padding: var(--space-5) var(--space-8); }
.join-main {
flex: 1;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
padding: var(--space-6) var(--space-8) var(--space-16);
}
.screen-block { width: 100%; max-width: 440px; }
.flow-card { background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-2xl); padding: var(--space-8); }
.flow-icon {
width: 52px; height: 52px;
border-radius: var(--radius-full);
background: var(--color-bg-alt);
color: var(--color-ink-700);
display: flex; align-items: center; justify-content: center;
margin: 0 auto var(--space-5);
}
.flow-icon .icon { width: 24px; height: 24px; }
.flow-card h1 { font: var(--text-h1); color: var(--color-ink-900); margin: 0 0 var(--space-2); text-align: center; }
.flow-card .flow-sub { font: var(--text-body-lg); color: var(--color-ink-500); margin: 0 0 var(--space-6); text-align: center; }
.field-optional { font-weight: 400; color: var(--color-ink-400); }
.input-wrap { position: relative; }
.input-wrap .icon {
position: absolute; left: 14px; top: 50%; transform: translateY(-50%);
color: var(--color-ink-400);
width: 20px; height: 20px;
}
.input-wrap input {
width: 100%; font: var(--text-body-lg); color: var(--color-ink-900);
padding: 11px 14px 11px 42px; border-radius: var(--radius-md); border: 1px solid var(--color-border);
background: var(--color-surface); outline: none;
}
.input-wrap input::placeholder { color: var(--color-ink-300); }
.input-wrap input:hover { border-color: var(--color-border-strong); }
.input-wrap input:focus { border-color: var(--color-focus-ring); box-shadow: 0 0 0 3px rgba(59, 77, 149, 0.12); }
.input-wrap .toggle-eye {
left: auto; right: 14px; top: 50%; transform: translateY(-50%);
background: none; border: none; padding: 0; cursor: pointer; color: var(--color-ink-400);
}
.field.has-error input { border-color: var(--color-danger); box-shadow: 0 0 0 3px rgba(199, 54, 79, 0.1); }
.error-msg { display: flex; align-items: center; gap: 6px; margin-top: var(--space-2); font: var(--text-body); color: var(--color-danger); }
/* Кнопка «Ввести другую ссылку или номер» (экран «конференция завершена») —
единственная кнопка на экране БЕЗ формы-обёртки (Продолжить/Войти лежат
в <form>, которая как block-элемент задаёт им ширину; здесь у .btn нет
родителя-формы). .btn держит white-space: nowrap (shell.css) — на
остальных кнопках текст короткий и это не заметно, а здесь длинная фраза
выталкивала кнопку за правый край карточки на узких экранах. */
.flow-card > .btn-primary { width: 100%; white-space: normal; text-align: center; }
.link-back { display: block; text-align: center; margin-top: var(--space-5); font: var(--text-body); font-weight: 600; color: var(--color-ink-500); text-decoration: none; background: none; border: none; width: 100%; cursor: pointer; }
.link-back:hover { color: var(--color-ink-700); }
/* Плашка целевой конференции (состояния «представиться»/«пароль») */
.target-conf { display: flex; align-items: center; gap: 12px; background: var(--color-bg-alt); border-radius: var(--radius-lg); padding: var(--space-4); margin-bottom: var(--space-6); }
.target-conf .icon-wrap {
width: 40px; height: 40px; border-radius: 50%;
background: var(--color-surface); border: 1px solid var(--color-border); color: var(--color-ink-700);
display: flex; align-items: center; justify-content: center; flex-shrink: 0;
}
.target-conf .icon-wrap .icon { width: 18px; height: 18px; }
.target-conf strong { display: block; font: var(--text-body); color: var(--color-ink-900); }
.target-conf span { font: var(--text-mono-sm); color: var(--color-ink-500); }
/* =====================================================================
* Тёмная тема: точечные патчи (design/mockups/dark/README.md).
* ===================================================================== */
@media (prefers-color-scheme: dark) {
:root:not([data-theme]) .input-wrap input:focus { box-shadow: 0 0 0 3px rgba(214, 168, 61, 0.18); }
:root:not([data-theme]) .field.has-error input { box-shadow: 0 0 0 3px rgba(235, 147, 161, 0.18); }
}
:root[data-theme='dark'] .input-wrap input:focus { box-shadow: 0 0 0 3px rgba(214, 168, 61, 0.18); }
:root[data-theme='dark'] .field.has-error input { box-shadow: 0 0 0 3px rgba(235, 147, 161, 0.18); }