/* Экраны восстановления пароля: анонимные, поэтому ни шапки приложения,
   ни app_layout — только theme.css и этот файл (правило CLAUDE.md про
   анонимные страницы). Геометрия повторяет экран кода защиты. */
* { box-sizing: border-box; }

body {
    min-height: 100vh;
    margin: 0;
    display: grid;
    place-items: center;
    padding: 24px;
    font-family: Arial, sans-serif;
    background: var(--theme-surface-muted, #f5f7fa);
    color: var(--theme-text, #1f2933);
}

.recovery {
    width: min(100%, 420px);
    display: grid;
    gap: 16px;
    padding: 26px;
    border: 1px solid var(--theme-border, #d9e2ec);
    border-radius: 8px;
    background: var(--theme-surface, #fff);
}

.recovery h1,
.recovery p {
    margin: 0;
}

.recovery p {
    line-height: 1.45;
}

.recovery .hint {
    font-size: 13px;
    color: var(--theme-text-muted, #52606d);
}

.recovery label {
    display: grid;
    gap: 6px;
    font-weight: 700;
}

.recovery input {
    min-height: 44px;
    padding: 9px 11px;
    border: 1px solid var(--theme-border-strong, #bcccdc);
    border-radius: 6px;
    font: inherit;
}

.recovery button {
    min-height: 44px;
    border: 0;
    border-radius: 6px;
    font: inherit;
    font-weight: 700;
    cursor: pointer;
}

.recovery .error {
    padding: 10px 12px;
    border: 1px solid var(--theme-error-border, #f5c2c7);
    border-radius: 6px;
    background: var(--theme-error-bg, #f8d7da);
    color: var(--theme-error-text, #842029);
}

.recovery .fallback {
    text-align: center;
    font-size: 13px;
}
