/*
 * Страницы входа Синтеза — эталон дизайнера (блок «Начало работы», 27 сентября; утверждён Андреем 20:17).
 * Заменяет server/pages/auth.css целиком. Страницы: login, reset, join, accounts (+ шаги кода и восстановления).
 *
 * Одна сцена на все страницы — фирменный градиент брендбука SINTEZ 2019, неподвижный; внутри карточка на языке
 * кабинета (дизайн-код, раздел 10). Значения токенов — те же, что в app.css (акцент — индиго SINTEZ #5660CF, один на телефон и компьютер — ds-0101, Андрей 13 октября, 13:07).
 * Если токен кабинета меняется — меняется и здесь: у страниц входа своего app.css нет.
 *
 * Картинки: sintez-word-white.png (слово SINTEZ), sintez-mark-white.png (знак-спираль) — из брендбука, не перерисованы.
 * Шрифт — Inter (design/common/inter.css).
 *
 * В Синтезе: файл отдаётся как /assets/auth.css (pages.ts), картинки и шрифт — оттуда же, /assets/. Эталон — design/start/entry/;
 * всё, чего в эталоне нет, — отдельным разделом в конце («Своё»), чтобы сверка с эталоном шла построчно.
 */
:root{
 --t1:#15181f; --t2:#585f6b; --t3:#697180; --t4:#a8aeb9;
 --s0:#fafbfc; --s1:#f6f7f8; --s2:#eef0f1; --s3:#e4e6e8; --panel:#fff;
 --b1:rgba(21,24,31,.09); --b2:rgba(21,24,31,.15); --b3:rgba(21,24,31,.34); --sep:rgba(21,24,31,.06);
 --a:#5660cf; --a-h:#4a53bd; --a-soft:#eceefe;
 --ok:#1a8f4e; --ok-t:#177a43; --warn:#b8722a; --warn-t:#9a5b1c; --err:#cf4a4a; --err-t:#bf3d3d; --err-soft:#fbeceb;
 --focus:0 0 0 3px rgba(21,24,31,.075);
 --e1:0 1px 2px rgba(21,24,31,.06),0 1px 1px rgba(21,24,31,.04);
 --r-xs:6px; --r-sm:10px; --r-md:14px; --r-lg:18px; --r-xl:24px;
 --h:36px;                                  /* поле и кнопка; на узком экране — 44 (палец) */
}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
html,body{min-height:100%}
body{font:15px/22px "Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;color:var(--t1);
 -webkit-font-smoothing:antialiased;background:#15133a}
button,input{font:inherit;color:inherit}
a{color:var(--a);text-decoration:none}
.i{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;flex:none}

/* ── Сцена ───────────────────────────────────────────────────────────── */
.stage{position:relative;min-height:100vh;overflow:hidden;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 20px;
 background:
  radial-gradient(60% 55% at 12% 8%, rgba(0,174,239,.42), transparent 62%),
  radial-gradient(55% 60% at 92% 96%, rgba(143,65,159,.70), transparent 62%),
  radial-gradient(50% 45% at 70% 18%, rgba(137,124,186,.32), transparent 70%),
  linear-gradient(155deg,#1d2156 0%,#2b2468 48%,#3b1d5e 100%)}
.stage::before{content:"";position:absolute;right:-6%;bottom:-18%;width:720px;height:1120px;
 background:url(sintez-mark-white.png) center/contain no-repeat;opacity:.07;transform:rotate(-8deg)}
.stage::after{content:"";position:absolute;inset:0;pointer-events:none;
 background:radial-gradient(120% 100% at 50% 40%,transparent 55%,rgba(8,6,30,.45))}
.stage>*{position:relative;z-index:1}
.lockup{height:26px;width:auto;display:block;margin:0 auto 28px;opacity:.96}
.below{margin-top:20px;font-size:13px;line-height:18px;color:rgba(255,255,255,.62);text-align:center}
.below a{color:#fff;font-weight:520}

/* ── Карточка ────────────────────────────────────────────────────────── */
.card{width:400px;background:var(--panel);border-radius:var(--r-xl);padding:36px 36px 28px;
 box-shadow:0 30px 80px rgba(10,6,40,.45),0 0 0 1px rgba(255,255,255,.08)}
.card.wide{width:480px}
.card fieldset{border:0;min-width:0}
.back{display:inline-flex;align-items:center;gap:6px;font-size:13px;line-height:18px;color:var(--t2);margin:-8px 0 18px -6px;padding:4px 6px;border-radius:8px}
.back:hover{background:var(--s1)}
.back .i{color:var(--t3)}
h1{font-size:22px;line-height:28px;font-weight:620;letter-spacing:-.3px}
.sub{font-size:14px;line-height:20px;color:var(--t2);margin:6px 0 24px}
.sub b{color:var(--t1);font-weight:520}

/* ── Поле ────────────────────────────────────────────────────────────── */
.fld{margin-bottom:16px}
.lbl{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:6px;font-size:13px;line-height:18px;font-weight:520;color:var(--t2)}
.lbl a{font-weight:400}
.fi{height:var(--h);display:flex;align-items:center;gap:8px;padding:0 12px;background:var(--panel);border:1px solid var(--b1);border-radius:var(--r-sm)}
.fi:hover{border-color:var(--b2)}
.fi:focus-within{border-color:var(--b3);box-shadow:var(--focus)}
.fi input{flex:1;min-width:0;height:100%;border:0;outline:0;background:transparent;font-size:15px;color:var(--t1)}
.fi input::placeholder{color:var(--t3)}
.fi .eye{width:24px;height:24px;margin-right:-4px;border:0;background:none;color:var(--t3);display:inline-flex;align-items:center;justify-content:center;border-radius:6px;cursor:pointer}
.fi .eye .i{width:18px;height:18px}
.fi.bad,.fi.bad:focus-within{border-color:var(--err);box-shadow:0 0 0 3px var(--err-soft)}
fieldset:disabled .fi input{-webkit-text-fill-color:var(--t1);opacity:1}
.err{display:flex;gap:6px;align-items:flex-start;margin-top:6px;font-size:12px;line-height:16px;color:var(--err-t)}
.err .i,.hint .i{width:14px;height:14px;margin-top:1px}
.err a{font-weight:520;white-space:nowrap}
.hint{display:flex;gap:6px;align-items:flex-start;margin-top:6px;font-size:12px;line-height:16px;color:var(--t3)}
.hint.warn{color:var(--warn-t)}

/* ── Флажок ──────────────────────────────────────────────────────────── */
.ckrow{display:flex;align-items:center;gap:10px;margin:4px 0 20px;font-size:14px;line-height:20px;color:var(--t2);cursor:pointer;width:max-content}
.ckb{appearance:none;-webkit-appearance:none;width:16px;height:16px;flex:0 0 16px;margin:0;border:1.5px solid var(--b2);border-radius:4px;background:var(--panel);cursor:pointer}
.ckb:checked{border-color:var(--a);background:var(--a) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E") center/11px no-repeat}
.ckb:focus-visible{box-shadow:var(--focus);outline:0}

/* ── Кнопки ──────────────────────────────────────────────────────────── */
.btn{height:var(--h);width:100%;display:flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:var(--r-sm);font-size:14px;font-weight:520;cursor:pointer}
.btn.pr{background:var(--a);color:#fff;box-shadow:var(--e1)}
.btn.pr:hover{background:var(--a-h)}
.btn.sc{background:var(--s2);color:var(--t1)}
.btn:disabled{opacity:.45;box-shadow:none;cursor:default}
.btn[aria-busy="true"]{opacity:.45;cursor:progress}               /* занята: вертушка, ширина та же, погашена 45 % — как в кабинете */
.spin{width:14px;height:14px;border-radius:50%;border:2px solid rgba(255,255,255,.4);border-top-color:#fff;animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.alt{margin-top:16px;font-size:13px;line-height:18px;color:var(--t2);text-align:center}
.alt a{font-weight:520}

/* ── Код: шесть окошек как одно поле, 3 · 3; окошко до 48 — по ширине карточки, высота 56 ── */
.code{display:flex;align-items:center;gap:6px;margin:4px 0 8px}
.code .c{flex:1 1 0;min-width:0;max-width:48px;height:56px;padding:0;border:1px solid var(--b1);border-radius:12px;background:#fff;text-align:center;
 font-size:24px;font-weight:620;font-variant-numeric:tabular-nums;color:var(--t1);outline:0;caret-color:var(--t1)}
.code .c:focus{border-color:var(--b3);box-shadow:var(--focus)}
.code.bad .c{border-color:var(--err);color:var(--err-t)}
.code .c:disabled{background:var(--s1);border-color:var(--b1)}
.code .dash{flex:0 0 10px;height:2px;background:var(--t4);border-radius:2px;margin:0 2px}
.timer{margin-top:18px;font-size:13px;line-height:18px;color:var(--t3);text-align:center}
.timer b{font-weight:520;color:var(--t2);font-variant-numeric:tabular-nums}
.timer a{font-weight:520}

/* ── Пароль: требования живым списком и полоска силы ─────────────────── */
.meter{display:flex;gap:4px;margin-top:10px}
.meter i{flex:1;height:4px;border-radius:2px;background:var(--s3)}
.meter i.on{background:var(--warn)}
.meter.full i.on{background:var(--ok)}
.reqs{display:grid;grid-template-columns:1fr 1fr;gap:6px 12px;margin-top:10px;list-style:none}
.reqs li{display:flex;align-items:center;gap:6px;font-size:12px;line-height:16px;color:var(--t3)}
.reqs .dot{width:14px;height:14px;flex:0 0 14px;border-radius:50%;border:1.5px solid var(--b2);display:inline-flex;align-items:center;justify-content:center;color:#fff}
.reqs .dot .i{width:9px;height:9px;stroke-width:3.4}
.reqs li.ok{color:var(--ok-t)}
.reqs li.ok .dot{background:var(--ok);border-color:var(--ok)}

/* ── Приглашение: кто зовёт ──────────────────────────────────────────── */
.who{display:flex;align-items:center;gap:12px;padding:12px 14px;margin-bottom:20px;background:var(--s1);border-radius:var(--r-md)}
.who .t{font-size:14px;line-height:20px}
.who .t b{display:block;font-weight:620}
.who .t span{font-size:13px;line-height:18px;color:var(--t3)}
/* знак проекта: 40, r12, градиент брендбука по адресу проекта */
.pm{width:40px;height:40px;flex:0 0 40px;border-radius:12px;display:flex;align-items:center;justify-content:center;color:#fff;font-size:16px;font-weight:620}
.pm.g1{background:linear-gradient(140deg,#8f419f,#444b98)}
.pm.g2{background:linear-gradient(140deg,#009ede,#444b98)}
.pm.g3{background:linear-gradient(140deg,#00aeef,#897cba)}
.pm.g4{background:linear-gradient(140deg,#897cba,#8f419f)}
.pm.g5{background:linear-gradient(140deg,#444b98,#15133a)}

/* ── Письмо ушло ─────────────────────────────────────────────────────── */
.sent{display:flex;flex-direction:column;align-items:center;text-align:center;padding:6px 0 4px}
.sent .badge{width:56px;height:56px;border-radius:18px;background:var(--a-soft);color:var(--a);display:flex;align-items:center;justify-content:center;margin-bottom:18px}
.sent .badge .i{width:26px;height:26px}
.sent .sub{margin-bottom:22px}

/* ── Выбор проекта ───────────────────────────────────────────────────── */
.top{display:flex;align-items:center;gap:12px;margin-bottom:22px}
.top .av{width:40px;height:40px;flex:0 0 40px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;font-size:15px;font-weight:620;background:linear-gradient(135deg,#63bd6a,#3fa04a)}
.top .t{flex:1;min-width:0}
.top .t b{display:block;font-size:17px;line-height:24px;font-weight:620}
.top .t span{font-size:13px;line-height:18px;color:var(--t3)}
.ib{width:36px;height:36px;border:0;border-radius:50%;background:none;color:var(--t2);display:inline-flex;align-items:center;justify-content:center;cursor:pointer}
.ib:hover{background:var(--s1)}
.ib .i{width:20px;height:20px}
.card.wide .sub{margin:0 0 12px}
.list{list-style:none;border:1px solid var(--b1);border-radius:var(--r-lg);overflow:hidden}
.list li+li{border-top:1px solid var(--sep)}
.row{display:flex;align-items:center;gap:14px;padding:12px 14px;min-height:64px;background:#fff;color:var(--t1)}
.row:hover,.row.hov{background:var(--s1)}
.row .t{flex:1;min-width:0}
.row .t b{display:block;font-size:15px;line-height:20px;font-weight:520;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.row .t span{font-size:13px;line-height:18px;color:var(--t3)}
.kbd{min-width:22px;height:22px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--b1);border-bottom-width:2px;border-radius:6px;background:var(--s0);font-size:11px;font-weight:520;color:var(--t3)}
.row .chev{color:var(--t4)}
.row .spin{border-color:var(--s3);border-top-color:var(--t2)}          /* нажали — открывается */
.newp{display:inline-flex;align-items:center;gap:8px;margin-top:14px;font-size:14px;font-weight:520}
.search{margin-bottom:12px}
.search .i{color:var(--t3)}

/* ── Узкий экран: карточка во всю ширину, поля и кнопки — 44 (палец) ──── */
@media (max-width:480px){
 :root{--h:44px}
 .stage{justify-content:flex-start;padding:72px 16px 24px}
 .stage::before{width:420px;height:650px;right:-30%;bottom:-8%}
 .card,.card.wide{width:100%;padding:28px 22px 22px;border-radius:22px}
 .kbd{display:none}                        /* цифры-клавиши — только там, где есть клавиатура */
 /* Поле на телефоне — 16 и крупнее: Сафари на iPhone увеличивает страницу, когда фокус встаёт в поле с текстом мельче 16, и обратно
    не возвращает (Андрей 13 октября, 00:50: «У меня увеличивается экран, когда ввожу пароль»). Окошки кода — 24, их не трогаем. */
 .fi input{font-size:16px}
 /* Сцена — по видимой высоте экрана (без панелей Сафари), снизу — над полосой «Домой» */
 .stage{min-height:100dvh;padding-bottom:calc(24px + env(safe-area-inset-bottom,0px))}
}
@media (prefers-reduced-motion:reduce){.spin{animation:none}}

/* ── Своё: чего нет в эталоне ────────────────────────────────────────────
   `hidden` у элемента с классом: правило класса (.err{display:flex}) сильнее правила браузера для [hidden],
   и спрятанная строка ошибки оставалась бы на экране. */
[hidden]{display:none!important}
/* Кнопка «Войти через Telegram» — чужая рамка с telegram.org; место под неё держим, чтобы карточка не прыгала. */
.tgb{min-height:40px;display:flex;justify-content:center;margin:4px 0 8px}
/* Меню ⋯ у выбора проекта: «Безопасность», «Выйти». */
.top{position:relative}
.menu{position:absolute;right:0;top:44px;z-index:5;min-width:180px;padding:6px;background:var(--panel);border-radius:var(--r-md);
 box-shadow:0 12px 32px rgba(21,24,31,.14),0 0 0 1px var(--b1)}
.menu button{display:flex;align-items:center;gap:10px;width:100%;height:36px;padding:0 10px;border:0;border-radius:8px;background:none;font-size:14px;color:var(--t1);cursor:pointer;text-align:left}
.menu button:hover,.menu button:focus-visible{background:var(--s1);outline:0}
.menu .i{color:var(--t3)}
/* Свой проект: «что продаём» — строки одним блоком, как список проектов; переключатель — как в кабинете. */
.opts{border:1px solid var(--b1);border-radius:var(--r-md);overflow:hidden}
.swrow{display:flex;align-items:center;gap:12px;padding:10px 14px;cursor:pointer;background:#fff}
.swrow+.swrow{border-top:1px solid var(--sep)}
.swrow:focus-visible{outline:0;background:var(--s1)}
.swrow .s1{font-size:14px;line-height:20px;font-weight:520}
.swrow .s2{font-size:12px;line-height:16px;color:var(--t3)}
.sw{position:relative;flex:0 0 32px;width:32px;height:18px;border-radius:9px;background:var(--s3)}
.sw::after{content:"";position:absolute;left:2px;top:2px;width:14px;height:14px;border-radius:50%;background:#fff;box-shadow:0 1px 2px rgba(21,24,31,.2)}
.sw.on{background:var(--a)}
.sw.on::after{left:16px}
