/* components.css — переиспользуемые элементы: кнопки, eyebrow-метки,
   тосты, модалка входа. Используются и на лендинге, и в кабинете. */

/* ---------- кнопки ---------- */
.btn { display: inline-flex; align-items: center; justify-content: center; gap: 9px; font-family: var(--font); font-weight: 700; font-size: 1rem; border: none; border-radius: var(--r-pill); cursor: pointer; padding: 14px 26px; transition: transform .16s ease, box-shadow .25s ease, filter .2s ease, background .2s ease; white-space: nowrap; }
.btn:active { transform: translateY(1px) scale(.99); }
.btn-lime { background: var(--lime); color: var(--on-lime); box-shadow: 0 10px 26px rgba(200,245,58,.22); }
.btn-lime:hover { transform: translateY(-2px); box-shadow: 0 16px 34px rgba(200,245,58,.34); filter: brightness(1.04); }
.btn-dark { background: var(--card-2); color: var(--ink); border: 1px solid var(--line-2); }
.btn-dark:hover { transform: translateY(-2px); background: var(--card-3); }
.btn-lav { background: var(--lav-grad); color: var(--on-lav); box-shadow: 0 10px 26px rgba(150,158,240,.28); }
.btn-lav:hover { transform: translateY(-2px); box-shadow: 0 16px 34px rgba(150,158,240,.4); filter: brightness(1.04); }
.btn-ghost-red { background: #3a1620; color: #ff8aa3; border: 1px solid rgba(255,63,104,.4); cursor: default; }
.btn-lg { padding: 16px 30px; font-size: 1.05rem; }
.btn-block { width: 100%; }

/* ---------- eyebrow-метка секции ---------- */
.eyebrow { display: inline-flex; align-items: center; gap: 11px; margin-bottom: 16px; }
.eyebrow .pip { width: 32px; height: 15px; border-radius: var(--r-pill); display: inline-block; }
.eyebrow span { font-size: .78rem; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; color: var(--ink); }
.pip-lav { background: var(--lav); }
.pip-pink { background: var(--pink); }
.pip-lime { background: var(--lime); }

/* ---------- тосты ---------- */
.toasts { position: fixed; right: 22px; bottom: 22px; z-index: 120; display: grid; gap: 10px; }
.toast { background: #16161c; border: 1px solid var(--line-2); color: var(--ink); padding: 13px 18px; border-radius: 14px; font-size: .92rem; font-weight: 600; box-shadow: 0 16px 40px rgba(0,0,0,.5); transform: translateX(120%); animation: tin .35s ease forwards; }
.toast.out { animation: tout .3s ease forwards; }
@keyframes tin { to { transform: none; } }
@keyframes tout { to { transform: translateX(120%); opacity: 0; } }

/* ---------- отдельная страница входа /auth/ ---------- */
.auth-page { position: relative; min-height: 100vh; display: grid; place-items: center; padding: 24px; background: radial-gradient(80vw 55vh at 50% -12%, rgba(200,245,58,.06), transparent 60%), var(--bg); }
.auth-page .modal-card { transform: none; }   /* карточка статична, не как всплывающая модалка */
.auth-back-site { position: absolute; top: 20px; left: 20px; display: inline-flex; align-items: center; gap: 7px; color: var(--ink-mut); font-weight: 600; font-size: .9rem; }
.auth-back-site:hover { color: var(--ink); }

/* ---------- модалка входа ---------- */
.modal { position: fixed; inset: 0; z-index: 90; display: grid; place-items: center; padding: 20px; opacity: 0; visibility: hidden; transition: opacity .25s, visibility .25s; }
.modal[data-open="true"] { opacity: 1; visibility: visible; }
.modal-ov { position: absolute; inset: 0; background: rgba(4,4,6,.74); -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); }
.modal-card { position: relative; width: 100%; max-width: 430px; padding: 30px; border-radius: 26px; background: #111116; border: 1px solid var(--line-2); box-shadow: 0 40px 90px rgba(0,0,0,.6); transform: translateY(14px) scale(.98); transition: transform .25s; }
.modal[data-open="true"] .modal-card { transform: none; }
.modal-x, .modal-back { position: absolute; top: 16px; width: 38px; height: 38px; display: grid; place-items: center; border-radius: var(--r-pill); color: var(--ink-mut); font-size: 1.25rem; background: rgba(255,255,255,.05); border: none; cursor: pointer; transition: color .2s, background .2s; }
.modal-x { right: 16px; }
.modal-back { left: 16px; }
.modal-x:hover, .modal-back:hover { color: var(--ink); background: rgba(200,245,58,.16); }
.modal-back[hidden] { display: none; }
.m-logo { font-family: var(--display); font-weight: 900; font-size: 1.7rem; color: var(--lime); text-align: center; margin: 6px 0 16px; }
/* логотип-вордмарк (lime-logo) вместо текста «Blind» */
.brand-logo { display: block; width: auto; height: 28px; }
.m-logo .brand-logo { height: 32px; margin: 0 auto; }
.m-h { text-align: center; margin-bottom: 20px; }
.m-h h3 { font-size: 1.5rem; font-weight: 800; margin: 0 0 8px; }
.m-h p { font-size: .9rem; color: var(--ink-mut); margin: 0; }
.m-h p b { color: var(--ink); }
.m-input { width: 100%; padding: 16px 18px; font-family: inherit; font-size: 1rem; color: var(--ink); background: rgba(255,255,255,.04); border: 1px solid var(--line-2); border-radius: var(--r-pill); transition: border-color .18s, box-shadow .18s; }
.m-input::placeholder { color: var(--ink-dim); }
.m-input:focus { outline: none; border-color: var(--lime); box-shadow: 0 0 0 4px rgba(200,245,58,.16); }
.m-err { display: block; min-height: 16px; font-size: .8rem; font-weight: 600; color: #ff7a7d; margin: 6px 2px 0; }
.m-err.center { text-align: center; }
.m-next { width: 100%; padding: 16px; margin-top: 12px; font-size: 1.02rem; font-weight: 800; font-family: inherit; color: var(--on-lime); background: var(--lime); border: none; border-radius: var(--r-pill); cursor: pointer; transition: transform .18s, box-shadow .25s, filter .2s; box-shadow: 0 12px 26px rgba(200,245,58,.26); }
.m-next:hover { transform: translateY(-2px); box-shadow: 0 18px 34px rgba(200,245,58,.36); filter: brightness(1.04); }
.m-next[disabled] { opacity: .5; cursor: default; box-shadow: none; transform: none; }
.m-resend { background: rgba(255,255,255,.05); color: var(--ink); box-shadow: none; }
.m-socials { display: flex; gap: 12px; margin-top: 16px; }
.m-soc { flex: 1; height: 54px; display: grid; place-items: center; font-size: 1.5rem; border-radius: 16px; border: 1px solid var(--line-2); background: rgba(255,255,255,.04); cursor: pointer; transition: transform .18s, background .2s, border-color .2s; }
.m-soc:hover { transform: translateY(-2px); border-color: rgba(200,245,58,.5); background: rgba(200,245,58,.08); }
.m-soc-g i { color: #ea4335; }
.m-soc-tg i { color: #2aabee; }
.m-fine { margin-top: 18px; text-align: center; font-size: .82rem; line-height: 1.5; color: var(--ink-dim); }
.m-fine b { color: var(--ink-mut); }
.m-wait-spin { display: grid; place-items: center; margin: 2px auto 8px; }
.m-wait-spin i { font-size: 2.2rem; color: var(--lime); animation: mspin .9s linear infinite; }
@keyframes mspin { to { transform: rotate(360deg); } }
.m-textback { display: block; width: 100%; margin-top: 10px; padding: 8px; background: none; border: none; color: var(--ink-mut); font-family: inherit; font-size: .9rem; font-weight: 600; cursor: pointer; }
.m-textback:hover { color: var(--ink); }
.otp { display: flex; gap: 9px; justify-content: center; margin: 8px 0 10px; }
.otp input { flex: 1 1 0; min-width: 0; max-width: 52px; height: 58px; text-align: center; font-size: 1.5rem; font-weight: 800; color: var(--ink); background: rgba(255,255,255,.04); border: 1px solid var(--line-2); border-radius: 14px; }
.otp input:focus { outline: none; border-color: var(--lime); box-shadow: 0 0 0 4px rgba(200,245,58,.16); }
.otp input.filled { border-color: rgba(200,245,58,.55); background: rgba(200,245,58,.06); }

/* ---------- аккордеон (FAQ на лендинге и в кабинете) ---------- */
.acc { background: var(--card); border: 1px solid var(--line); border-radius: 18px; overflow: hidden; transition: border-color .25s, background .25s; }
.acc.open { border-color: var(--line-2); background: var(--card-2); }
.acc-q { width: 100%; background: none; border: none; cursor: pointer; display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 20px 22px; font-family: var(--font); font-weight: 800; font-size: 1.05rem; color: var(--ink); text-align: left; }
.acc-q i { color: var(--ink-mut); flex: none; transition: transform .35s cubic-bezier(.4,0,.2,1), color .25s; }
.acc.open .acc-q i { transform: rotate(180deg); color: var(--lime); }
.acc-a { max-height: 0; overflow: hidden; opacity: 0; transition: max-height .4s cubic-bezier(.4,0,.2,1), opacity .3s ease; }
.acc.open .acc-a { opacity: 1; }
.acc-in { padding: 0 22px 20px; color: var(--ink-mut); font-size: .96rem; }
.acc-in a { color: var(--lav); text-decoration: underline; }
