:root {
  --ink: #151416;
  --muted: #777279;
  --line: #DED9D3;
  --surface: #FFFFFF;
  --off-white: #F6F3EE;
  --raspberry: #C13F70;
  --raspberry-dark: #A63360;
  --raspberry-soft: #F8E5EC;
  --green: #16845B;
  --ease: cubic-bezier(.22, 1, .36, 1);
}

*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html, body { min-height: 100%; }
body {
  min-width: 320px;
  color: var(--ink);
  background: var(--surface);
  font-family: "Plus Jakarta Sans", -apple-system, BlinkMacSystemFont, sans-serif;
  -webkit-font-smoothing: antialiased;
}
button, input { font: inherit; }
button, a { -webkit-tap-highlight-color: transparent; }
a { color: inherit; text-decoration: none; }

.login-layout {
  min-height: 100dvh;
  display: grid;
  grid-template-columns: minmax(520px, 42%) minmax(0, 58%);
}

.login-form-side {
  display: grid;
  place-items: center;
  padding: 48px clamp(38px, 6vw, 88px);
  background: #fff;
}
.login-form-shell { width: min(100%, 440px); }

.login-brand {
  width: fit-content;
  display: inline-flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 38px;
  font-size: 1.55rem;
  font-weight: 800;
  letter-spacing: -.05em;
}
.login-brand-symbol {
  width: 38px;
  height: 38px;
  display: grid;
  place-items: center;
  overflow: hidden;
  border-radius: 11px;
  background: var(--ink);
}
.login-brand-symbol img { width: 26px; height: 30px; object-fit: contain; }
.brand-dot { color: var(--raspberry); }

.login-heading { margin-bottom: 26px; }
.login-kicker {
  display: block;
  margin-bottom: 8px;
  color: var(--raspberry);
  font-size: .69rem;
  font-weight: 800;
  letter-spacing: .09em;
  text-transform: uppercase;
}
.login-heading h1 {
  margin-bottom: 7px;
  font-size: clamp(2rem, 3vw, 2.55rem);
  line-height: 1.08;
  letter-spacing: -.05em;
}
.login-heading p { color: var(--muted); font-size: .92rem; }

.social-login { display: grid; gap: 10px; }
.social-row { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.social-button {
  min-height: 48px;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  padding: 0 16px;
  border: 1px solid var(--line);
  border-radius: 14px;
  color: var(--ink);
  background: #fff;
  cursor: pointer;
  font-size: .84rem;
  font-weight: 700;
  transition: border-color .2s ease, background .2s ease, transform .2s var(--ease);
}
.social-button:hover { transform: translateY(-1px); border-color: #AAA3AA; background: #FBFAF8; }
.social-button svg { width: 18px; height: 18px; }
.social-button:last-child svg { color: #1877F2; }

.login-divider {
  display: flex;
  align-items: center;
  gap: 12px;
  margin: 24px 0;
  color: #AAA4AA;
  font-size: .7rem;
  font-weight: 600;
}
.login-divider::before, .login-divider::after { content: ""; height: 1px; flex: 1; background: var(--line); }

.login-form { display: grid; gap: 17px; }
.field-group { display: grid; gap: 7px; }
.field-group label { font-size: .76rem; font-weight: 700; }
.field-label-row { display: flex; justify-content: space-between; gap: 16px; align-items: center; }
.forgot-link { color: var(--raspberry); font-size: .69rem; font-weight: 700; }
.forgot-link:hover { text-decoration: underline; }
.field-group input {
  width: 100%;
  height: 49px;
  padding: 0 15px;
  border: 1px solid var(--line);
  border-radius: 13px;
  outline: none;
  color: var(--ink);
  background: #fff;
  font-size: .84rem;
  transition: border-color .2s ease, box-shadow .2s ease;
}
.field-group input::placeholder { color: #B5AFB4; }
.field-group input:focus { border-color: var(--raspberry); box-shadow: 0 0 0 4px rgba(193,63,112,.11); }
.field-group.has-error input { border-color: #D85951; box-shadow: 0 0 0 4px rgba(216,89,81,.09); }
.field-error { min-height: 0; color: #C34840; font-size: .65rem; }
.field-error:not(:empty) { margin-top: -2px; }

.password-field { position: relative; }
.password-field input { padding-right: 48px; }
.password-toggle {
  width: 42px;
  height: 42px;
  display: grid;
  place-items: center;
  position: absolute;
  top: 50%;
  right: 4px;
  transform: translateY(-50%);
  border: 0;
  color: #989198;
  background: transparent;
  cursor: pointer;
}
.password-toggle svg { width: 19px; height: 19px; }
.password-toggle .eye-closed { display: none; }
.password-toggle[aria-pressed="true"] .eye-open { display: none; }
.password-toggle[aria-pressed="true"] .eye-closed { display: block; }

.remember-row {
  display: flex;
  align-items: center;
  gap: 9px;
  color: var(--muted);
  font-size: .72rem;
  cursor: pointer;
}
.remember-row input { width: 16px; height: 16px; accent-color: var(--raspberry); }

.login-submit {
  height: 51px;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 9px;
  border: 0;
  border-radius: 14px;
  color: #fff;
  background: var(--ink);
  cursor: pointer;
  font-size: .86rem;
  font-weight: 800;
  transition: background .2s ease, transform .2s var(--ease), box-shadow .2s ease;
}
.login-submit:hover { transform: translateY(-2px); background: var(--raspberry); box-shadow: 0 12px 28px rgba(193,63,112,.2); }
.login-submit svg { width: 18px; height: 18px; }
.login-submit.is-loading { pointer-events: none; opacity: .8; }
.form-feedback { min-height: 0; text-align: center; color: var(--green); font-size: .71rem; font-weight: 650; }
.form-feedback:not(:empty) { margin-top: -6px; }

.create-account { margin: 19px 0 23px; text-align: center; color: var(--muted); font-size: .72rem; }
.create-account a { color: var(--raspberry); font-weight: 800; }

.login-security-note {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  padding: 13px 14px;
  border-radius: 13px;
  color: #706A70;
  background: #F4F2F0;
}
.login-security-note svg { width: 17px; height: 17px; flex: 0 0 auto; color: var(--raspberry); }
.login-security-note p { font-size: .65rem; line-height: 1.48; }

.login-showcase {
  min-height: 100dvh;
  display: grid;
  place-items: center;
  position: relative;
  overflow: hidden;
  isolation: isolate;
  padding: 60px;
  color: #fff;
  background: var(--ink);
}
.showcase-orbit {
  position: absolute;
  z-index: -1;
  border: 1px solid rgba(255,255,255,.07);
  border-radius: 50%;
}
.orbit-one { width: 630px; height: 630px; right: -80px; top: 8%; box-shadow: 0 0 0 70px rgba(255,255,255,.018), 0 0 0 140px rgba(255,255,255,.01); }
.orbit-two { width: 300px; height: 300px; left: 8%; bottom: -140px; border-color: rgba(193,63,112,.28); box-shadow: 0 0 0 55px rgba(193,63,112,.04); }
.showcase-content { width: min(100%, 520px); text-align: center; position: relative; }
.showcase-card {
  min-height: 350px;
  padding: 26px;
  position: relative;
  border: 1px solid rgba(255,255,255,.13);
  border-radius: 28px;
  background: rgba(255,255,255,.065);
  box-shadow: 0 30px 80px rgba(0,0,0,.25);
  backdrop-filter: blur(16px);
}
.showcase-card-head { display: flex; align-items: center; gap: 10px; text-align: left; }
.showcase-avatar { width: 38px; height: 38px; display: grid; place-items: center; overflow: hidden; border-radius: 12px; background: #fff; }
.showcase-avatar img { width: 25px; height: 30px; object-fit: contain; filter: invert(1); }
.showcase-card-head div { display: grid; }
.showcase-card-head strong { font-size: .8rem; }
.showcase-card-head small { color: rgba(255,255,255,.45); font-size: .62rem; }
.online-dot { width: 8px; height: 8px; margin-left: auto; border-radius: 50%; background: #56D49F; box-shadow: 0 0 0 5px rgba(86,212,159,.12); }
.showcase-message { width: fit-content; max-width: 77%; margin-top: 22px; padding: 12px 15px; border-radius: 15px; text-align: left; font-size: .73rem; }
.message-user { margin-left: auto; border-radius: 15px 15px 4px 15px; color: var(--ink); background: #F0C4D4; }
.message-app { display: grid; gap: 2px; border-radius: 15px 15px 15px 4px; color: var(--ink); background: #fff; }
.message-app span, .message-app small { color: #777178; font-size: .62rem; }
.message-app strong { color: var(--green); font-size: 1.2rem; }
.showcase-stats { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; width: 68%; margin: 16px 0 0; }
.showcase-stats div { display: grid; gap: 3px; padding: 11px; border: 1px solid rgba(255,255,255,.1); border-radius: 13px; text-align: left; background: rgba(255,255,255,.06); }
.showcase-stats span { color: rgba(255,255,255,.48); font-size: .58rem; }
.showcase-stats strong { font-size: .78rem; }
.showcase-progress { width: 68%; height: 7px; margin-top: 10px; overflow: hidden; border-radius: 99px; background: rgba(255,255,255,.1); }
.showcase-progress span { display: block; width: 84%; height: 100%; border-radius: inherit; background: var(--raspberry); animation: progressIn 1.2s var(--ease) both; }
.login-mascot {
  width: 205px;
  height: 250px;
  position: absolute;
  right: -18px;
  bottom: -32px;
  object-fit: contain;
  filter: drop-shadow(0 20px 25px rgba(0,0,0,.3));
  animation: mascotFloat 4.5s ease-in-out infinite;
}
.showcase-dots { display: flex; justify-content: center; gap: 8px; margin: 22px 0; }
.showcase-dots span { width: 8px; height: 8px; border-radius: 50%; background: rgba(255,255,255,.24); }
.showcase-dots .active { width: 24px; border-radius: 99px; background: #fff; }
.showcase-content h2 { max-width: 470px; margin: 0 auto 7px; font-size: clamp(1.4rem, 2.5vw, 2rem); line-height: 1.15; letter-spacing: -.04em; }
.showcase-content > p { color: rgba(255,255,255,.55); font-size: .82rem; }

@keyframes mascotFloat { 50% { transform: translateY(-8px) rotate(1deg); } }
@keyframes progressIn { from { width: 0; } }

@media (max-height: 850px) and (min-width: 901px) {
  .login-form-side { padding-block: 28px; }
  .login-brand { margin-bottom: 24px; }
  .login-heading { margin-bottom: 20px; }
  .login-divider { margin-block: 17px; }
  .login-form { gap: 12px; }
  .create-account { margin-block: 14px; }
  .showcase-card { min-height: 320px; }
}

@media (max-width: 900px) {
  body { overflow-x: hidden; }
  .login-layout { display: block; }
  .login-showcase { display: none; }
  .login-layout, .login-form-side { width: 100%; max-width: 100%; }
  .login-form-side { min-height: 100dvh; padding: 42px 24px; overflow: hidden; }
  .login-form-shell { width: min(100%, 460px); max-width: 100%; }
  .social-row { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .social-button, .field-group, .password-field, .field-group input { min-width: 0; max-width: 100%; }
}

@media (max-width: 520px) {
  .login-form-side { display: block; padding: 28px 20px 32px; }
  .login-form-shell { margin: 0 auto; }
  .login-brand { margin-bottom: 34px; }
  .login-heading h1 { font-size: 2rem; }
  .social-row { grid-template-columns: 1fr 1fr; }
  .social-button { min-width: 0; padding-inline: 8px; font-size: .78rem; }
  .field-label-row { gap: 8px; }
  .forgot-link { flex: 0 0 auto; white-space: nowrap; font-size: .64rem; }
  .remember-row { align-items: flex-start; }
}

@media (max-width: 360px) {
  .login-form-side { padding-inline: 16px; }
  .social-row { grid-template-columns: 1fr; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; scroll-behavior: auto !important; }
}
