/* Login, Password & Authorization Pages */
.lk-login-page {
  display: flex;
  flex-direction: column;
}

.lk-login-page__container {
  min-height: 100vh;
  display: flex;
  flex-direction: column;
}

.lk-login-page__main {
  flex: 1 0 auto;
  display: flex;
  align-items: center;
  justify-content: center;
}

.lk-login-page__card-wrap {
  max-width: 560px;
  margin-left: auto;
  margin-right: auto;
}

.lk-login-card {
  border-radius: 1.5rem;
  border: 1px solid var(--lk-border);
  background: var(--lk-surface-strong);
  box-shadow: 0 8px 32px 0 rgba(31, 38, 135, 0.10), 0 1.5px 24px 0 rgba(13, 110, 253, 0.07);
  backdrop-filter: blur(18px) saturate(1.2);
  -webkit-backdrop-filter: blur(18px) saturate(1.2);
}

.lk-login-card .card-body {
  border-radius: 1.5rem;
}

.lk-login-subtitle {
  margin-top: 0.45rem;
  color: var(--lk-muted);
  font-size: 0.95rem;
}

.lk-login-form .form-label {
  color: var(--lk-title-color);
  font-weight: 500;
}

/* Login theme toggle button - distinct contrasting capsule button */
.lk-login-theme-btn {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 0.55rem !important;
  min-width: 9.5rem;
  border-radius: 999px;
  padding: 0.45rem 1.15rem;
  font-weight: 600;
  font-size: 0.88rem;
  letter-spacing: 0.01em;
  transition: all 0.28s cubic-bezier(0.16, 1, 0.3, 1);
  box-shadow: 0 4px 14px rgba(0, 0, 0, 0.08);
}

/* Light theme state: button stands out with dark high-contrast theme */
[data-bs-theme="light"] .lk-login-theme-btn {
  background: var(--lk-title-color) !important;
  color: #ffffff !important;
  border: 1px solid var(--lk-title-color) !important;
}

[data-bs-theme="light"] .lk-login-theme-btn .lk-theme-btn__icon {
  color: #ffc107;
}

[data-bs-theme="light"] .lk-login-theme-btn:hover {
  background: #0d6efd !important;
  border-color: #0d6efd !important;
  color: #ffffff !important;
  transform: translateY(-2px);
  box-shadow: 0 6px 18px rgba(13, 110, 253, 0.28);
}

/* Dark theme state: button stands out with bright glowing capsule */
[data-bs-theme="dark"] .lk-login-theme-btn {
  background: rgba(255, 255, 255, 0.95) !important;
  color: #111720 !important;
  border: 1px solid #ffffff !important;
}

[data-bs-theme="dark"] .lk-login-theme-btn .lk-theme-btn__icon {
  color: #0d6efd;
}

[data-bs-theme="dark"] .lk-login-theme-btn:hover {
  background: #ffffff !important;
  color: #0d6efd !important;
  border-color: #ffffff !important;
  transform: translateY(-2px);
  box-shadow: 0 6px 20px rgba(255, 255, 255, 0.25);
}

.lk-login-help-card {
  border: 1px solid var(--lk-accent-border);
  border-radius: 0.85rem;
  padding: 0.9rem 1rem;
  background: color-mix(in srgb, var(--lk-accent-soft) 72%, transparent);
  color: var(--lk-title-color);
}

.lk-login-help-card p {
  color: var(--lk-title-color);
}

.lk-login-copy {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0.25rem;
  text-align: center;
  margin-top: auto;
  padding-top: 1rem;
}

.lk-login-copy__logo {
  width: auto;
  height: 18px;
  object-fit: contain;
  opacity: 0.9;
}

.lk-pw-progress {
  height: 4px;
}

.lk-pw-progress__bar {
  width: 100%;
  transition: width 3s linear;
}

/* Password Toggle Button */
.js-password-toggle-btn {
  position: absolute;
  right: 10px;
  top: 50%;
  transform: translateY(-50%);
  padding: 2px;
  background: transparent !important;
  border: none !important;
  box-shadow: none !important;
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 5;
}

.js-password-toggle-btn svg {
  stroke: var(--lk-muted);
  transition: stroke 0.2s;
}

.js-password-toggle-btn:hover svg {
  stroke: var(--lk-accent);
}

@media (max-width: 767.98px) {
  .lk-login-copy__logo {
    height: 14px;
  }

  .lk-login-page__main {
    align-items: flex-start;
  }

  .lk-login-page__card-wrap {
    max-width: 100%;
  }

  .lk-login-copy {
    padding-top: 0.75rem;
  }
}

@media (max-width: 575.98px) {
  .lk-btn-back {
    background-color: var(--bs-secondary-bg, #fff);
    color: var(--bs-body-color);
    border-color: var(--bs-secondary-color, #6c757d);
    opacity: 1 !important;
  }
}

.lk-field {
  position: relative;
}

.lk-field__icon {
  position: absolute;
  left: 0.85rem;
  top: 0.8rem;
  color: var(--lk-muted);
  pointer-events: none;
  transition: color 0.18s ease;
}

.lk-field .form-control {
  padding: 0.7rem 0.9rem 0.7rem 2.6rem;
  border-radius: 0.8rem;
  border-color: var(--lk-border);
  background-color: var(--lk-surface-soft);
  transition: border-color 0.18s ease, box-shadow 0.18s ease, background-color 0.18s ease;
}

.lk-field .form-control:focus {
  border-color: var(--lk-accent);
  background-color: var(--lk-surface-strong);
  box-shadow: 0 0 0 0.22rem var(--lk-accent-soft);
}

.lk-field:focus-within .lk-field__icon {
  color: var(--lk-accent);
}

.lk-field .form-control.is-invalid {
  background-image: none;
}

.lk-field .form-control.is-invalid ~ .lk-field__icon,
.lk-field:has(.is-invalid) .lk-field__icon {
  color: var(--bs-form-invalid-color);
}

.lk-field .js-password-toggle-btn {
  right: 0.6rem;
}

.lk-login-form .lk-field .form-control {
  padding-right: 2.6rem;
  text-align: center;
}

.lk-login-form .form-label {
  display: block;
  text-align: center;
}

.lk-login-form .lk-field .form-control::placeholder {
  color: var(--lk-muted);
  opacity: 0.7;
}

.lk-recover-trigger-wrap {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  margin-top: 1.25rem;
}

.lk-recover-trigger-wrap__line {
  flex: 1;
  height: 1px;
  background: var(--lk-border);
}

.lk-recover-trigger {
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
  padding: 0.45rem 0.9rem;
  border: 1px solid transparent;
  border-radius: 999px;
  background: transparent;
  color: var(--lk-accent);
  font-size: 0.9rem;
  font-weight: 600;
  white-space: nowrap;
  transition: background-color 0.18s ease, border-color 0.18s ease, color 0.18s ease;
}

.lk-recover-trigger:hover,
.lk-recover-trigger:focus-visible {
  background: var(--lk-accent-soft);
  border-color: var(--lk-accent-border);
  color: var(--lk-accent-strong);
  outline: none;
}

.lk-recover-trigger svg {
  transition: transform 0.25s ease;
}

.lk-recover-trigger:hover svg {
  transform: rotate(-18deg);
}

.lk-login-help-card {
  display: flex;
  gap: 0.85rem;
  align-items: flex-start;
  border-left: 3px solid var(--lk-accent);
}

.lk-login-help-card__icon {
  flex-shrink: 0;
  width: 2.25rem;
  height: 2.25rem;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 0.65rem;
  background: var(--lk-surface-strong);
  color: var(--lk-accent);
  box-shadow: 0 2px 8px color-mix(in srgb, var(--lk-accent) 15%, transparent);
}

.lk-login-help-card__title {
  margin-bottom: 0.2rem;
  font-weight: 600;
  font-size: 0.95rem;
}

.lk-login-help-card .lk-login-help-card__text {
  margin-bottom: 0;
  font-size: 0.875rem;
  line-height: 1.5;
  color: var(--lk-muted);
}

/* Password recovery: modal */
.lk-recover-icon {
  width: 2.75rem;
  height: 2.75rem;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 0.9rem;
  color: #fff;
  background: linear-gradient(135deg, var(--lk-accent), var(--lk-accent-strong));
  box-shadow: 0 6px 16px color-mix(in srgb, var(--lk-accent) 35%, transparent);
}

[data-bs-theme="dark"] .lk-recover-icon {
  color: #0f1622;
}

.lk-recover-hint {
  display: flex;
  gap: 0.6rem;
  align-items: flex-start;
  padding: 0.75rem 0.9rem;
  margin-bottom: 1.1rem;
  border: 1px solid var(--lk-accent-border);
  border-radius: 0.85rem;
  background: color-mix(in srgb, var(--lk-accent-soft) 70%, transparent);
  font-size: 0.875rem;
  line-height: 1.45;
}

.lk-recover-hint svg {
  margin-top: 0.1rem;
  color: var(--lk-accent);
}

.lk-recover-hint strong {
  color: var(--lk-title-color);
}

.lk-recover-label {
  font-size: 0.82rem;
  font-weight: 600;
  color: var(--lk-muted);
  margin-bottom: 0.35rem;
}

#recoverPhone {
  letter-spacing: 0.04em;
  font-variant-numeric: tabular-nums;
}

.lk-recover-modal .modal-footer .btn {
  border-radius: 0.8rem;
  padding: 0.6rem 1.1rem;
  font-weight: 600;
}

.lk-recover-submit {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  min-width: 9.5rem;
}

.lk-recover-submit__arrow {
  transition: transform 0.2s ease;
}

.lk-recover-submit:not(:disabled):hover .lk-recover-submit__arrow {
  transform: translateX(3px);
}

.lk-recover-submit__spinner {
  display: none;
}

.lk-recover-submit.is-loading .lk-recover-submit__spinner {
  display: inline-block;
}

.lk-recover-submit.is-loading .lk-recover-submit__arrow {
  display: none;
}

/* success state */
.lk-recover-success {
  text-align: center;
  padding: 0.75rem 0 0.5rem;
}

.lk-recover-success:not(.d-none) {
  animation: lk-recover-fade 0.35s ease both;
}

.lk-recover-success__badge {
  width: 4rem;
  height: 4rem;
  margin: 0 auto 0.9rem;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  color: var(--bs-success);
  background: var(--lk-active-session-bg);
  border: 1px solid color-mix(in srgb, var(--bs-success) 30%, transparent);
}

.lk-recover-success__check {
  stroke-dasharray: 24;
  stroke-dashoffset: 24;
}

.lk-recover-success:not(.d-none) .lk-recover-success__check {
  animation: lk-recover-check 0.45s 0.15s ease forwards;
}

.lk-recover-success__title {
  font-size: 1.1rem;
  font-weight: 700;
  color: var(--lk-title-color);
  margin-bottom: 0.35rem;
}

.lk-recover-success__text {
  color: var(--lk-muted);
  font-size: 0.9rem;
  margin-bottom: 0.75rem;
}

.lk-recover-success__note {
  display: inline-block;
  padding: 0.35rem 0.8rem;
  border-radius: 999px;
  background: var(--lk-accent-soft);
  color: var(--lk-title-color);
  font-size: 0.8rem;
  margin-bottom: 0;
}

.lk-recover-done-footer {
  border-top: 0 !important;
  padding-top: 0.25rem !important;
}

@keyframes lk-recover-check {
  to { stroke-dashoffset: 0; }
}

@keyframes lk-recover-fade {
  from { opacity: 0; transform: translateY(6px); }
  to   { opacity: 1; transform: none; }
}

@media (prefers-reduced-motion: reduce) {
  .lk-recover-success:not(.d-none),
  .lk-recover-success:not(.d-none) .lk-recover-success__check {
    animation: none;
    stroke-dashoffset: 0;
  }
}
