/* Стили страницы входа. Вынесено из inline-<style>: со строгой CSP
   (style-src 'self' без 'unsafe-inline') встроенный блок не применяется.
   Файл отдаётся отдельным маршрутом до авторизации, как и decoy.js. */
*{box-sizing:border-box}
html,body{margin:0;min-height:100%;background:#202124;color:#9aa0a6;font-family:Arial,Helvetica,sans-serif}
body{border-top:1px solid #3c4043}
.page{width:min(600px,calc(100vw - 48px));margin:0 auto;padding-top:17.5vh}
.icon{display:block;width:40px;height:48px;padding:0;border:0;background:transparent;color:#aeb0b3;cursor:default}
.icon svg{width:40px;height:48px;display:block}
h1{margin:48px 0 12px;font-size:28px;line-height:1.25;font-weight:500;color:#9aa0a6}
p{margin:0 0 14px;font-size:16px;line-height:1.5}
strong{font-weight:700}
.tips{margin-top:14px;font-size:16px;line-height:1.35}
.tips ul{margin:4px 0 0 24px;padding-left:16px}.tips a{color:#8ab4f8;text-decoration:none}
.code{margin-top:14px;font-size:13px}
.more{display:none;margin-top:26px;font-size:14px;line-height:1.55}
.more.open{display:block}
.more p{margin:0 0 10px;font-size:14px}
.actions{display:flex;justify-content:space-between;align-items:center;margin-top:54px}
.details,.reload{height:36px;border-radius:20px;padding:0 20px;font-size:14px}
.details{border:2px solid #5f6368;background:transparent;color:#8ab4f8}
.reload{border:0;background:#8ab4f8;color:#202124;padding:0 24px}
/* Открытая форма уходит в фирменный blueprint: сетка-чертёж вместо серой
   шторки. Те же значения, что у темы Blueprint в базовых стилях панели. */
.login{position:fixed;inset:0;display:none;align-items:center;justify-content:center;background:linear-gradient(rgba(96,156,196,.08) 1px,transparent 1px) 0 0/26px 26px,linear-gradient(90deg,rgba(96,156,196,.08) 1px,transparent 1px) 0 0/26px 26px,linear-gradient(#0c1826,#0c1826)}
.login.open{display:flex}
.loginbox{width:min(312px,calc(100vw - 36px));padding:22px;background:#152539;border:1px solid #274058;border-radius:14px;box-shadow:0 24px 70px #0009}
.loginfield{display:grid;gap:4px;margin:0 0 8px;color:#8497ae;font-size:11px;line-height:1.3}
.loginbox input{display:block;width:100%;height:36px;margin:0;padding:0 12px;border:1px solid #274058;border-radius:10px;background:#0c1826;color:#cbd8e8;font-size:14px;outline:none}
.loginbox input:focus{border-color:#f0b44a}.loginbox input.invalid{border-color:#f28b82}
.loginbox button{display:block;width:100%;height:38px;margin-top:2px;border:0;border-radius:10px;background:#f0b44a;color:#2A2825;font-size:14px;font-weight:600;cursor:pointer}
@media(max-width:700px){.page{padding-top:12vh}.icon,.icon svg{width:48px;height:58px}h1{margin-top:48px;font-size:28px}p,.tips{font-size:17px}.code{font-size:15px}.actions{margin-top:55px}.details,.reload{height:44px;font-size:16px;padding:0 20px}}
/* Поле кода прячется до тех пор, пока сервер не ответит totpRequired.
   Селектор с элементом: у .loginbox input специфичность выше, и одного
   класса не хватало — поле показывалось всегда. */
.loginfield:has(.totp-hidden){display:none}
.loginbox input.totp-hidden{display:none}
/* Знак над полями входа: обод и лицо стоят, шкала из шести рисок
   проворачивается. Только внутри формы — снаружи страница остаётся ошибкой. */
.brand{position:relative;width:56px;height:56px;margin:0 auto 10px}
.brandname{text-align:center;font-size:13px;font-weight:700;letter-spacing:.3em;color:#cbd8e8;text-indent:.3em}
.brandsub{text-align:center;font-size:11.5px;color:#8497ae;margin:3px 0 15px}
.brand svg{position:absolute;inset:0;width:100%;height:100%;display:block}
.brandspin{animation:brandturn 7s linear infinite;transform-origin:50% 50%}
@keyframes brandturn{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){.brandspin{animation:none}}

/* Страница-обманка скрыта: владелец попросил убрать фон совсем. Разметку
   не удаляем — decoy.js держит ссылки на её кнопки, а вернуть прикрытие
   можно, сняв эту строку. */
.page{display:none}
