/* ⚠ ФАЙЛ ПЛАТФОРМЫ sl-portal-platform — правится там (../sl-portal-platform/portal/), в инстансе его перезапишет sync. */
/* auth.css — экраны без шапки портала: вход и 2FA (каркас templates/_auth.html). Подключается после tokens.css;
   base.css/ui.css этим экранам не нужны. Только токены темы. */
*{box-sizing:border-box}
html,body{margin:0;height:100%}
body.auth{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Inter,system-ui,sans-serif;color:var(--text);
  font-size:var(--fs-body);
  background:var(--bg);-webkit-font-smoothing:antialiased;display:grid;place-items:center;min-height:100%;
  /* свечение по углам — прием ТЕМНОЙ темы; в светлой выключено (ниже), как и в base.css */
  background-image:radial-gradient(800px 480px at 80% -10%,var(--accent-tint),transparent 60%),
    radial-gradient(700px 420px at 10% 110%,var(--auth-glow),transparent 55%)}
a{color:var(--accent-ink)}

.wrap{width:100%;max-width:380px;padding:24px}
.wrap.wide{max-width:430px}
.brand{display:flex;align-items:center;gap:11px;justify-content:center;margin-bottom:20px;
  font-weight:650;letter-spacing:-.2px;font-size:16px}
.logo{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;flex:none;
  background:linear-gradient(135deg,var(--accent),var(--accent2));box-shadow:0 8px 20px -8px var(--accent-glow)}
.logo svg{width:19px;height:19px;color:var(--on-accent)}
.tag{font-size:10px;font-weight:700;letter-spacing:.5px;color:var(--chip-ink);background:var(--chip-bg);
  border:1px solid var(--chip-bd);padding:2px 7px;border-radius:99px;margin-left:3px;text-transform:uppercase}

/* Карточка — на КЛАССЕ: на экранах 2FA есть вторая форма («Отменить вход»), селектор по элементу form
   выдал бы и ей фон и отступы. */
.authcard{background:linear-gradient(180deg,var(--surface2),var(--surface));border:1px solid var(--border);
  border-radius:16px;padding:28px 26px;box-shadow:var(--auth-shadow)}
.authcard h1{font-size:18px;margin:0 0 5px;letter-spacing:-.3px}
.authcard .sub{margin:0 0 20px;color:var(--muted);font-size:13px}
.authcard label{display:block;font-size:12.5px;color:var(--muted);margin:16px 0 7px;font-weight:550}
.input{width:100%;padding:11px 13px;border-radius:10px;border:1px solid var(--border2);background:var(--sunken);
  color:var(--text);font-size:14px;outline:none;transition:.15s;font-family:inherit}
.input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-ring)}
.input::placeholder{color:var(--placeholder)}
/* поле кода 2FA: крупные моноширинные цифры по центру */
.input.code{padding:12px 13px;font-size:22px;letter-spacing:9px;text-align:center;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
.go{margin-top:20px;width:100%;padding:12px;border:0;border-radius:10px;cursor:pointer;transition:.15s;
  background:linear-gradient(135deg,var(--accent),var(--accent2));color:var(--on-accent);font:inherit;font-weight:650;
  font-size:14px;box-shadow:0 10px 24px -12px var(--accent-glow-hi)}
.go:hover{filter:brightness(1.07)}
.go:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.err{margin-top:14px;display:flex;gap:8px;align-items:center;font-size:13px;color:var(--danger);
  background:var(--danger-bg);border:1px solid var(--danger-bd);border-radius:10px;padding:9px 12px}
.err svg{width:15px;height:15px;flex:none}

/* привязка 2FA: QR, шаги, ручной ключ */
.qr{background:var(--qr-bg);border-radius:12px;padding:12px;width:204px;height:204px;margin:0 auto 16px;display:grid;place-items:center}
.qr svg{width:180px;height:180px}
.steps{font-size:12.5px;color:var(--muted);margin:0 0 16px;padding-left:18px}
.steps li{margin:4px 0}
.key{display:flex;align-items:center;gap:8px;background:var(--sunken);border:1px solid var(--border);border-radius:10px;
  padding:9px 11px;margin-bottom:16px}
.key code{flex:1;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12.5px;color:var(--code-ink);
  word-break:break-all;letter-spacing:1px}
.key button{flex:none;border:1px solid var(--border2);background:var(--elev);color:var(--muted);border-radius:8px;
  padding:6px 10px;font:inherit;font-size:12px;cursor:pointer}
.key button:hover{color:var(--text)}

/* способы 2FA (привязка и вход): вкладки на радиокнопках — переключение без JS. Радиокнопки стоят перед .mtabs и
   .mpanes в одной карточке; одна панель (.mpanes.single) — без вкладок. */
.mtab-r{position:absolute;opacity:0;width:1px;height:1px;pointer-events:none}
.mtabs{display:flex;gap:4px;padding:3px;margin:0 0 18px;background:var(--sunken);border:1px solid var(--border);
  border-radius:10px}
.authcard .mtabs label{flex:1;margin:0;text-align:center;padding:8px 6px;border-radius:8px;font-size:12.5px;
  font-weight:600;color:var(--muted);cursor:pointer;transition:.15s}
.authcard .mtabs label:hover{color:var(--text)}
#mt-pk:checked ~ .mtabs label[for=mt-pk],#mt-totp:checked ~ .mtabs label[for=mt-totp]{background:var(--elev);
  color:var(--text);box-shadow:var(--shadow)}
#mt-pk:focus-visible ~ .mtabs label[for=mt-pk],#mt-totp:focus-visible ~ .mtabs label[for=mt-totp]{
  outline:2px solid var(--accent);outline-offset:1px}
.mpanes:not(.single) .mpane{display:none}
#mt-pk:checked ~ .mpanes .mp-pk,#mt-totp:checked ~ .mpanes .mp-totp{display:block}
.mpanes.single .mpane + .mpane{margin-top:22px;padding-top:18px;border-top:1px solid var(--border)}
.hint{font-size:12.5px;color:var(--muted);margin:0 0 4px;line-height:1.45}
.go + .hint{margin-top:14px}
.err[hidden]{display:none}

/* подвал: «Отменить вход» — по смыслу ссылка, но это POST с CSRF, поэтому кнопка в виде ссылки */
.foot{text-align:center;color:var(--faint);font-size:12px;margin-top:16px}
.foot form{display:inline;margin:0}
.foot button{background:none;border:0;padding:0;color:var(--faint);font:inherit;font-size:12px;
  text-decoration:underline;cursor:pointer}
.foot button:hover{color:var(--muted)}

/* выбор языка и темы до входа (_langswitch.html) */
.langsw{display:flex;gap:14px;justify-content:center;margin-top:14px}
.langsw a{font-size:12px;color:var(--faint);text-decoration:none;border-bottom:1px solid transparent;padding-bottom:1px}
.langsw a:hover{color:var(--muted);text-decoration:none}
.langsw a.on{color:var(--text);border-bottom-color:var(--accent);cursor:default}
/* телефон: язык и тема — целью для пальца, а не строкой 12px */
@media (max-width: 820px){input,select,textarea{font-size:16px}.langsw{gap:6px}.langsw a{display:inline-flex;align-items:center;min-height:40px;padding:0 10px}}

.toast{position:fixed;bottom:22px;left:50%;transform:translateX(-50%) translateY(20px);background:var(--elev);
  border:1px solid var(--border2);color:var(--text);padding:10px 16px;border-radius:11px;font-size:13px;opacity:0;
  pointer-events:none;transition:.2s;box-shadow:var(--tip-shadow);z-index:50}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

/* Светлая тема: без свечения на фоне и без градиента карточки — на белом они дают муть (как в base.css). */
:root[data-theme="light"] body.auth{background-image:none}
:root[data-theme="light"] .authcard{background:var(--surface)}
@media (prefers-color-scheme: light){
  :root[data-theme="auto"] body.auth{background-image:none}
  :root[data-theme="auto"] .authcard{background:var(--surface)}
}
.mtabs[hidden],.mpane[hidden]{display:none!important}
