/* Универсальные стили модалок и формы входа.
   Подключается со всех страниц, где есть _auth_modal.html (base.html, chat.html).
   В chat.html те же базовые классы (.modal-overlay, .modal, .modal-input, .modal-btn,
   .modal-link, .modal-error) переиспользуются другими модалками (pricing/delete/search). */

/* ── Modal base ─────────────────────────────────────────── */
.modal-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.65);z-index:300;align-items:center;justify-content:center;backdrop-filter:blur(6px)}
.modal-overlay.visible{display:flex}
.modal{background:#141420;border:1px solid rgba(255,255,255,.08);border-radius:16px;padding:32px 28px;max-width:380px;width:90%;position:relative;animation:modalIn .2s ease}
@keyframes modalIn{from{opacity:0;transform:translateY(8px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}
.modal-close{position:absolute;top:12px;right:14px;background:none;border:none;color:#555;font-size:20px;cursor:pointer;padding:2px;line-height:1;z-index:2}
.modal-close:hover{color:#ccc}
.modal-icon{text-align:center;margin-bottom:14px}
.modal-title{font-size:18px;font-weight:600;color:#fff;margin:0 0 6px;text-align:center}
.modal-desc{font-size:13px;color:#888;text-align:center;margin:0 0 20px;line-height:1.5}
.modal-input{width:100%;padding:11px 14px;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.1);border-radius:10px;color:#e4e4e8;font-size:14px;font-family:inherit;outline:none;box-sizing:border-box;margin-bottom:12px;transition:border-color .2s}
.modal-input:focus{border-color:rgba(99,102,241,.4);box-shadow:0 0 0 3px rgba(99,102,241,.1)}
.modal-btn{display:block;width:100%;padding:11px;background:#6366f1;border:none;border-radius:10px;color:#fff;font-size:14px;font-weight:600;cursor:pointer;transition:background .15s;text-align:center;text-decoration:none}
.modal-btn:hover{background:#818cf8}
.modal-btn:disabled{opacity:.4;cursor:wait}
.modal-link{display:block;width:100%;margin-top:10px;background:none;border:none;color:#666;font-size:12px;cursor:pointer;text-align:center}
.modal-link:hover{color:#aaa}
.modal-error{margin-top:10px;padding:8px 12px;background:rgba(248,113,113,.08);border:1px solid rgba(248,113,113,.15);border-radius:8px;color:#f87171;font-size:12px;text-align:center}

/* ── Auth modal (specific) ──────────────────────────────── */
.auth-modal{max-width:440px;padding:0;overflow:hidden;border:1px solid rgba(99,102,241,.2)}
.auth-visual{position:relative;height:140px;overflow:hidden;background:linear-gradient(135deg,#1a1040 0%,#0f0f2a 50%,#0a1628 100%)}
.auth-visual__glow{position:absolute;inset:0;background:radial-gradient(ellipse at 30% 50%,rgba(99,102,241,.25) 0%,transparent 60%),radial-gradient(ellipse at 70% 30%,rgba(168,85,247,.15) 0%,transparent 50%)}
.auth-visual__orbs{position:absolute;inset:0}
.auth-orb{position:absolute;border-radius:50%;filter:blur(20px)}
.auth-orb--1{width:100px;height:100px;background:rgba(99,102,241,.35);top:10px;left:20%;animation:orbFloat 6s ease-in-out infinite}
.auth-orb--2{width:70px;height:70px;background:rgba(168,85,247,.3);top:40px;right:20%;animation:orbFloat 8s ease-in-out infinite 1s}
.auth-orb--3{width:50px;height:50px;background:rgba(59,130,246,.25);bottom:10px;left:40%;animation:orbFloat 7s ease-in-out infinite 2s}
@keyframes orbFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-12px)}}
.auth-visual__content{position:relative;z-index:1;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px}
.auth-visual__content svg{filter:drop-shadow(0 0 20px rgba(99,102,241,.5))}
.auth-visual__badge{font-size:12px;font-weight:500;color:rgba(255,255,255,.7);letter-spacing:.04em;padding:4px 14px;background:rgba(255,255,255,.08);border-radius:20px;backdrop-filter:blur(4px);border:1px solid rgba(255,255,255,.1)}
.auth-body{padding:24px 28px 20px}
.auth-title{font-size:20px;font-weight:700;color:#fff;margin:0 0 18px;text-align:center;line-height:1.3}
.auth-list{list-style:none;padding:0;margin:0 0 20px}
.auth-list li{padding:6px 0;font-size:14px;color:#ccc;font-weight:500;display:flex;align-items:center;gap:10px}
.auth-list li::before{content:"";display:block;width:6px;height:6px;border-radius:50%;background:#818cf8;flex-shrink:0}
.auth-modal .modal-input{margin-bottom:10px}
.auth-code-hint{font-size:13px;color:#888;text-align:center;margin:0 0 12px;line-height:1.5}
.auth-code-hint b{color:#ccc}
.auth-terms{font-size:11px;color:#555;text-align:center;padding-top:10px;margin:0;line-height:1.5}
.auth-terms a{color:#666}
.auth-terms a:hover{color:#aaa}
.auth-modal .modal-error{margin:8px 0 0}
.auth-modal .modal-link{padding-bottom:4px}

/* Turnstile-капча в модалке — interaction-only:
   обычно auto-pass и виджет занимает 0px. Когда CF требует клик —
   виджет разворачивается + появляется подпись-подсказка над ним. */
.auth-turnstile{display:flex;flex-direction:column;align-items:center;gap:8px;margin:10px 0 12px}
.auth-turnstile .cf-turnstile{display:flex;justify-content:center;width:100%}
.auth-turnstile__caption{
  display:flex;align-items:center;gap:6px;
  font-size:12px;font-weight:500;color:#a5b4fc;letter-spacing:.01em;
  padding:6px 12px;border-radius:8px;
  background:linear-gradient(135deg,rgba(99,102,241,.14) 0%,rgba(168,85,247,.10) 100%);
  border:1px solid rgba(129,140,248,.35);
  animation:authTsCapIn .25s ease-out;
}
.auth-turnstile__caption[hidden]{display:none !important}
.auth-turnstile__caption svg{color:#a855f7;flex-shrink:0}
@keyframes authTsCapIn{
  from{opacity:0;transform:translateY(-3px)}
  to{opacity:1;transform:translateY(0)}
}

/* Trust-строка под формой: «5 дней бесплатно · Без карты · Без пароля» */
.auth-trust{font-size:11.5px;color:#6b7280;text-align:center;margin:14px 0 0;letter-spacing:.02em}

/* Войти через Telegram (primary-альтернатива email-входу) */
.auth-tg-btn{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;padding:11px;margin:0 0 4px;background:#229ED9;border:none;border-radius:10px;color:#fff;font-size:14px;font-weight:600;cursor:pointer;transition:background .15s;font-family:inherit}
.auth-tg-btn:hover{background:#34b0ea}
.auth-tg-btn:disabled{opacity:.5;cursor:wait}
.auth-tg-btn svg{flex-shrink:0}

/* Разделитель «или по email» */
.auth-divider{display:flex;align-items:center;gap:10px;margin:14px 0 12px;color:#555;font-size:11px;text-transform:lowercase;letter-spacing:.04em}
.auth-divider::before,.auth-divider::after{content:"";flex:1;height:1px;background:rgba(255,255,255,.08)}

/* Экран ожидания входа через Telegram */
.auth-tg-waiting{display:flex;flex-direction:column;align-items:center;gap:14px;padding:18px 8px 10px;text-align:center}
.auth-tg-waiting__spinner{width:32px;height:32px;border-radius:50%;border:2.5px solid rgba(34,158,217,.15);border-top-color:#229ED9;animation:authTgSpin .9s linear infinite}
@keyframes authTgSpin{to{transform:rotate(360deg)}}
.auth-tg-waiting__text{margin:0;font-size:13.5px;color:#bbb;line-height:1.55}
.auth-tg-waiting__text b{color:#fff}
