@charset "UTF-8";

/*
    Дополнения к стилям hakta.pro для страниц входа и регистрации.

    Всё здесь собрано из переменных базовой палитры (--bg, --gbg, --dbg, --a, --t1…--t5,
    --white-alpha). Каждая тема проекта в brands/*.css переопределяет именно их, поэтому
    новые элементы окрашиваются вместе с остальной формой сами, без правок в четырёх
    файлах. В brands/ остаётся только то, где у проекта другая геометрия: скругления,
    рамки, характер выделения.
 */

.field_hint {
    margin-top: 8px;
    margin-bottom: 4px;

    font-size: 12px;
    line-height: 1.35;

    color: var(--t2, #87888A);
}

/* Заголовок шага. */
.auth_heading {
    margin: 0 0 8px;

    font-size: 24px;
    font-weight: 700;
    letter-spacing: -.6px;
    line-height: 1.2;

    color: var(--white, rgba(255, 255, 255, .8));
}

/* Тот же заголовок, но в роли ответа системы: «аккаунта нет — создадим». */
.auth_heading_sm {
    margin: 0 0 6px;

    font-size: 17px;
    font-weight: 700;
    letter-spacing: -.3px;
    line-height: 1.3;

    color: var(--white, rgba(255, 255, 255, .8));
}

/* Возврат к вводу адреса со второго шага.

   flex, а не inline-block: ссылка должна занимать свою строку, иначе она встаёт рядом
   с плашкой аккаунта. Ширина по содержимому — чтобы кликабельной не стала вся карточка. */
.auth_back {
    display: flex;
    width: fit-content;
    margin-bottom: 14px;

    font-size: 13px;
    font-weight: 600;
    text-decoration: none;

    color: var(--t2, #87888A);
}

.auth_back:hover {
    color: var(--t5, #C4C4C4);
    text-decoration: none;
}

/* Кого мы опознали на первом шаге. Показывается на втором, чтобы человек видел,
   от какого аккаунта у него спрашивают пароль. */
.auth_identity {
    /* flex + fit-content, как у ссылки возврата: иначе text-align карточки уводит плашку
       в центр, и она разъезжается со стрелкой «назад» над ней. */
    display: flex;
    align-items: center;
    gap: 10px;

    width: fit-content;
    max-width: 100%;
    margin-bottom: 18px;
    padding: 5px 16px 5px 5px;

    border-radius: 30px;
    background: var(--dbg, #252526);
}

.auth_identity_mark {
    flex-shrink: 0;

    width: 30px;
    height: 30px;

    display: inline-flex;
    align-items: center;
    justify-content: center;

    border-radius: 50%;
    background: var(--a, #0EA17B);

    font-size: 14px;
    font-weight: 700;
    color: var(--t1, #FFF);
}

.auth_identity_name {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;

    font-size: 15px;
    font-weight: 600;
    letter-spacing: -.3px;

    color: var(--t5, #C4C4C4);
}

/* Название сервиса, из которого пришёл пользователь. */
.auth_title {
    margin: 0 0 6px;

    font-size: 16px;
    font-weight: 700;
    letter-spacing: -.3px;

    color: var(--white, rgba(255, 255, 255, .8));
}

/* Ответ на вопрос «нужно ли мне вообще регистрироваться». */
.auth_hint {
    margin: 0 0 4px;

    font-size: 13px;
    line-height: 1.45;

    color: var(--t2, #87888A);
}

/* Строка под полем пароля: «Забыли пароль?» прижат вправо. */
.auth_row_end {
    display: flex;
    justify-content: flex-end;

    margin-top: 12px;
    margin-bottom: 16px;
}

.auth_box .auth_row_end .project_link {
    margin-top: 0;
    font-size: 13px;
}

/* Кнопка, выглядящая ссылкой: вход по passkey остаётся доступным, но больше не
   перевешивает регистрацию размером. */
.auth_link_button {
    display: block;
    width: 100%;

    margin-top: 16px;
    padding: 4px 0;

    border: none;
    background: none;

    font-size: 14px;
    font-weight: 600;
    text-align: center;
    text-decoration: underline;
    text-underline-offset: 3px;

    color: var(--t2, #87888A);
    cursor: pointer;
}

.auth_link_button:hover {
    color: var(--t5, #C4C4C4);
}

.auth_link_button:focus-visible {
    outline: 2px solid var(--a, #0EA17B);
    outline-offset: 2px;
}

/* ── Согласие в форме регистрации ───────────────────────────────────────────────────── */

/* Галочка и текст рядом. Цель — чтобы текст не «обтекал» галочку и не сливался с ней
   в один кликабельный ком: промахнуться мимо галочки человек не должен. */
.auth_consent {
    display: flex;
    align-items: flex-start;
    gap: 10px;

    margin-top: 18px;
    cursor: pointer;

    font-size: 13px;
    line-height: 1.45;
    text-align: left;

    color: var(--t2, #87888A);
}

.auth_consent input[type="checkbox"] {
    flex-shrink: 0;

    /* 20px — нижняя граница, при которой по галочке попадают пальцем. */
    width: 20px;
    height: 20px;
    margin: 1px 0 0;

    accent-color: var(--a, #0EA17B);
    cursor: pointer;
}

.auth_consent a {
    font-size: inherit;
}

/* ── Подвал со ссылками на документы ────────────────────────────────────────────────── */

.legal_footer_links {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: center;
    gap: 8px;

    margin: 16px 0 20px;
}

.legal_footer_links .project_link {
    margin-top: 0;
    font-size: 12px;
}

.legal_footer_dot {
    font-size: 12px;
    color: var(--t3, #59595A);
}

/* ── Страницы правовых документов ───────────────────────────────────────────────────── */

.legal_page {
    /* ~70 символов в строке: длинный юридический текст читается только так. */
    max-width: 760px;
    margin: 0 auto;
    padding: 32px 0 64px;

    font-size: 15px;
    line-height: 1.6;

    color: var(--t2, #87888A);
}

.legal_header {
    margin-bottom: 28px;
    padding-bottom: 20px;
    border-bottom: 1px solid var(--white-alpha, rgba(255, 255, 255, .08));
}

.legal_page h1 {
    margin: 0 0 12px;

    font-size: 30px;
    font-weight: 700;
    letter-spacing: -.8px;
    line-height: 1.2;

    color: var(--white, rgba(255, 255, 255, .8));
}

.legal_lead {
    margin: 0 0 12px;
    font-size: 16px;
    line-height: 1.5;
}

.legal_meta {
    margin: 0;
    font-size: 13px;
    color: var(--t3, #59595A);
}

/* Черновик с незаполненными реквизитами. Заметен намеренно. */
.legal_warning {
    margin-bottom: 28px;
    padding: 14px 18px;

    border: 1px solid var(--red, #a5212a);
    border-radius: 12px;

    font-size: 13px;
    line-height: 1.5;

    color: var(--white, rgba(255, 255, 255, .8));
}

.legal_page h2 {
    margin: 36px 0 12px;

    font-size: 20px;
    font-weight: 700;
    letter-spacing: -.4px;
    line-height: 1.3;

    color: var(--white, rgba(255, 255, 255, .8));
}

.legal_page h3 {
    margin: 26px 0 10px;

    font-size: 16px;
    font-weight: 700;
    letter-spacing: -.2px;

    color: var(--t5, #C4C4C4);
}

.legal_page p {
    margin: 0 0 12px;
}

.legal_page ul {
    margin: 0 0 16px;
    padding-left: 22px;
}

.legal_page li {
    margin-bottom: 7px;
}

.legal_page strong {
    color: var(--t5, #C4C4C4);
    font-weight: 600;
}

.legal_page code {
    padding: 1px 6px;

    border-radius: 6px;
    background: var(--dbg, #252526);

    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    font-size: .9em;
    word-break: break-word;

    color: var(--t5, #C4C4C4);
}

.legal_page .project_link {
    margin-top: 0;
    font-size: inherit;
}

.legal_services {
    margin: 0 0 8px;
}

.legal_note {
    font-size: 13px;
    color: var(--t3, #59595A);
}

.legal_footer {
    margin-top: 40px;
    padding-top: 20px;
    border-top: 1px solid var(--white-alpha, rgba(255, 255, 255, .08));
}

@media (max-width: 768px) {
    .legal_page {
        padding: 20px 0 48px;
        font-size: 14px;
    }

    .legal_page h1 {
        font-size: 24px;
    }

    .legal_page h2 {
        font-size: 18px;
        margin-top: 28px;
    }
}

/* ── Сообщения об ошибке и успехе ───────────────────────────────────────────────────── */

/* Плашка, а не строка мелкого текста: ошибку входа или «пароль изменён» человек должен
   заметить сразу, а не искать под полем. */
.status_message {
    margin: 14px 0 4px;
    padding: 10px 14px;

    border-radius: 12px;

    font-size: 13px;
    line-height: 1.45;
    text-align: left;
}

.status_message_error {
    background: rgba(165, 33, 42, .16);
    color: #F2A7AC;
}

.status_message_success {
    background: rgba(14, 161, 123, .14);
    color: #7FD9BE;
}

/* Сообщение под полем — по левому краю поля, а не по центру карточки. */
.auth_box .input .error,
.account_card .input .error {
    display: block;
    margin: 6px 0 0 20px;
    text-align: left;
}

/* ── Экран-итог (AuthResult): «письмо отправлено», «пароль изменён» ─────────────────── */

.auth_state {
    width: 56px;
    height: 56px;
    margin: 0 auto 16px;

    display: flex;
    align-items: center;
    justify-content: center;

    border-radius: 50%;

    font-size: 26px;
    font-weight: 700;
    line-height: 1;
}

.auth_state_success {
    background: rgba(14, 161, 123, .16);
    color: var(--a, #0EA17B);
}

.auth_state_info {
    background: var(--dbg, #252526);
    color: var(--t5, #C4C4C4);
}

.auth_state_error {
    background: rgba(165, 33, 42, .18);
    color: #F2A7AC;
}

.auth_box .auth_hint p {
    margin: 0 0 8px;
}

/* Ссылка-кнопка: у <a> нет отступа, который base-стили дают <button> внутри карточки. */
.auth_box .auth_action {
    margin-top: 20px;
    font-size: 16px;
    height: 42px;
    text-decoration: none;
}

.auth_box .auth_secondary {
    margin-top: 14px;
    justify-content: center;
}

.auth_footnote {
    margin-top: 18px;
}

.auth_footnote .project_link {
    display: inline;
}

/* Техническая строка для поддержки: номер запроса, код ошибки. */
.auth_code {
    margin: 10px 0 0;

    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    font-size: 11px;
    word-break: break-all;

    color: var(--t3, #59595A);
}

/* ── Личный кабинет ─────────────────────────────────────────────────────────────────── */

.account_page {
    display: grid;
    grid-template-columns: 240px minmax(0, 1fr);
    gap: 24px;

    max-width: 1000px;
    margin: 120px auto 64px;

    text-align: left;
}

.account_title {
    grid-column: 1 / -1;
}

.account_title h1 {
    margin: 0 0 4px;

    font-size: 30px;
    font-weight: 700;
    letter-spacing: -.8px;

    color: var(--white, rgba(255, 255, 255, .8));
}

.account_title p {
    margin: 0;
    font-size: 15px;
    color: var(--t2, #87888A);
}

.account_nav {
    display: flex;
    flex-direction: column;
    gap: 4px;

    align-self: start;
    padding: 12px;

    border-radius: 24px;
    background: var(--gbg, #191A1E);
}

.account_nav a {
    display: block;
    padding: 10px 14px;

    border-radius: 14px;

    font-size: 15px;
    font-weight: 600;
    letter-spacing: -.3px;
    text-decoration: none;

    color: var(--t2, #87888A);
}

.account_nav a:hover {
    color: var(--t5, #C4C4C4);
    background: var(--white-alpha, rgba(255, 255, 255, .08));
}

.account_nav a.active {
    color: var(--t1, #FFF);
    background: var(--dbg, #252526);
}

.account_card {
    padding: 32px;

    border-radius: 24px;
    background: var(--gbg, #191A1E);

    font-size: 15px;
    line-height: 1.5;

    color: var(--t2, #87888A);
}

.account_card h2 {
    margin: 0 0 6px;

    font-size: 22px;
    font-weight: 700;
    letter-spacing: -.5px;

    color: var(--white, rgba(255, 255, 255, .8));
}

.account_card h3 {
    margin: 28px 0 8px;

    font-size: 17px;
    font-weight: 700;
    letter-spacing: -.3px;

    color: var(--t5, #C4C4C4);
}

.account_card p {
    margin: 0 0 12px;
}

.account_card strong {
    color: var(--t5, #C4C4C4);
}

.account_card .project_link {
    font-size: inherit;
}

/* Формы в кабинете — того же вида, что и на странице входа. */
.account_form {
    max-width: 420px;
}

.account_card .input input {
    margin-top: 16px;
    height: 42px;
    padding: 0 20px;

    font-size: 16px;

    background-color: var(--t4, #DEDEDE);
}

.account_card .input input:disabled {
    color: var(--t3, #59595A);
    background-color: var(--dbg, #252526);
}

.account_card .btn {
    margin-top: 20px;
    height: 42px;

    font-size: 16px;
    text-decoration: none;
    cursor: pointer;
}

.account_card .field_hint {
    margin-left: 20px;
}

/* Поле только для чтения: подпись и значение. */
.account_field {
    margin-top: 18px;
}

.account_field_label {
    font-size: 12px;
    font-weight: 600;
    letter-spacing: .3px;
    text-transform: uppercase;

    color: var(--t3, #59595A);
}

.account_field_value {
    margin-top: 2px;

    font-size: 16px;
    font-weight: 600;

    color: var(--t5, #C4C4C4);
}

.account_badge {
    display: inline-block;
    margin-left: 8px;
    padding: 2px 10px;

    border-radius: 20px;

    font-size: 12px;
    font-weight: 600;
    vertical-align: middle;
}

.account_badge_ok {
    background: rgba(14, 161, 123, .16);
    color: #7FD9BE;
}

.account_badge_warn {
    background: rgba(238, 170, 35, .14);
    color: var(--yellow, #EEAA23);
}

/* Предупреждение перед необратимым действием. */
.account_notice {
    margin: 16px 0;
    padding: 14px 18px;

    border-radius: 14px;
    border: 1px solid var(--white-alpha, rgba(255, 255, 255, .08));
    background: var(--dbg, #252526);

    font-size: 14px;
}

.account_notice p:last-child {
    margin-bottom: 0;
}

.account_notice_warn {
    border-color: rgba(238, 170, 35, .35);
}

.account_notice_danger {
    border-color: rgba(165, 33, 42, .6);
}

.account_actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 12px;
}

.account_actions form {
    display: contents;
}

/* Кнопки в ряд не растягиваются на всю ширину. */
.account_actions .btn {
    width: auto;
}

/* Вторичная кнопка: на тёмном фоне, без акцентного цвета. */
.btn.v_secondary {
    border-radius: 30px;
    background: var(--dbg, #252526);
    color: var(--t5, #C4C4C4);
}

.btn.v_secondary:hover {
    color: var(--t1, #FFF);
}

.btn.v_danger {
    border-radius: 30px;
    background: var(--red, #a5212a);
    color: var(--t1, #FFF);
}

/* Список ключей входа и внешних сервисов. */
.account_list {
    margin: 16px 0 0;
    padding: 0;

    list-style: none;
}

.account_list li {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;

    padding: 12px 0;
    border-bottom: 1px solid var(--white-alpha, rgba(255, 255, 255, .08));
}

.account_list li:last-child {
    border-bottom: none;
}

.account_list_name {
    font-weight: 600;
    color: var(--t5, #C4C4C4);
}

.account_list .btn {
    margin-top: 0;
    height: 34px;
    padding: 0 16px;

    font-size: 14px;
}

/* Шаги настройки приложения-аутентификатора. */
.account_steps {
    margin: 16px 0 0;
    padding-left: 22px;

    /* Базовые стили hakta.pro снимают маркеры у списков, а шаги без номеров теряют смысл. */
    list-style: decimal outside;
}

.account_steps li::marker {
    font-weight: 700;
    color: var(--t5, #C4C4C4);
}

.account_steps li {
    margin-bottom: 18px;
}

.account_qr {
    display: block;
    margin-top: 12px;

    border-radius: 12px;
}

.account_key {
    padding: 2px 8px;

    border-radius: 8px;
    background: var(--dbg, #252526);

    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    font-size: 14px;
    word-break: break-all;

    color: var(--t5, #C4C4C4);
}

.recovery_codes {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, max-content));
    gap: 8px 24px;

    margin: 16px 0;
    padding: 16px 20px;

    border-radius: 14px;
    background: var(--dbg, #252526);

    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    font-size: 16px;
    letter-spacing: 1px;

    color: var(--t5, #C4C4C4);
}

@media (max-width: 768px) {
    .account_page {
        grid-template-columns: minmax(0, 1fr);
        margin-top: 96px;
    }

    .account_nav {
        flex-direction: row;
        flex-wrap: wrap;
    }

    .account_card {
        padding: 22px;
    }
}


/* Код крупно: человек сверяет его с экраном, это и есть защита от чужой ссылки. */
.device_code {
    margin: 6px auto 16px;
    padding: 12px 18px;
    width: fit-content;

    border-radius: 14px;
    background: var(--dbg, #252526);

    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    font-size: 26px;
    font-weight: 700;
    letter-spacing: 4px;

    color: var(--t1, #FFF);
}

.device_scopes {
    margin: 12px 0;
    padding-left: 20px;

    list-style: disc outside;

    font-size: 13px;
    line-height: 1.45;
    text-align: left;

    color: var(--t5, #C4C4C4);
}

.device_scopes li {
    margin-bottom: 6px;
}

.device_warning {
    margin: 14px 0;
    padding: 10px 14px;

    border-radius: 12px;
    border: 1px solid rgba(238, 170, 35, .35);

    font-size: 12px;
    line-height: 1.45;
    text-align: left;

    color: var(--t2, #87888A);
}

.auth_box .btn.v_secondary + .btn,
.auth_box .btn + .btn.v_secondary {
    margin-top: 10px;
}

.account_list_meta {
    margin-top: 2px;
    font-size: 13px;
    color: var(--t3, #59595A);
}
