*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
:root {
  --yellow: #22c55e; --ydark: #22c55e;
  --text: #1a1a2e;   --muted: #6b7280;
  --ibg:  #eef1f6;   --border: #dde2ea; --white: #ffffff;
}

html, body { height: 100%; font-family: 'DM Sans', sans-serif; overflow: hidden; }
body { min-height: 100vh; display: grid; grid-template-columns: 1fr 440px 48px; position: relative; }
body::after { content: ''; display: block; }

.bg-wrap { position: fixed; inset: 0; z-index: 0; }
.bg-wrap img { width: 100%; height: 100%; object-fit: cover; object-position: center; }
.bg-wrap::after { content: ''; position: absolute; inset: 0; background: linear-gradient(100deg,rgba(0,0,0,0.08) 0%,rgba(0,0,0,0.04) 40%,rgba(255,255,255,0.12) 100%); }

.logo-wrap { position: fixed; top: 22px; left: 28px; z-index: 50; animation: fadeDown .5s .05s cubic-bezier(.22,1,.36,1) both; }
.logo-wrap a { display: block; text-decoration: none; }
.logo-pill { display: inline-flex; align-items: center; background: rgba(255,255,255,0.95); backdrop-filter: blur(16px); -webkit-backdrop-filter: blur(16px); border-radius: 999px; padding: 6px 16px 6px 8px; box-shadow: 0 4px 20px rgba(0,0,0,0.15),0 1px 3px rgba(0,0,0,0.08); transition: transform .22s, box-shadow .22s; }
.logo-wrap a:hover .logo-pill { transform: scale(1.04); }
.logo-pill img { height: 44px; width: auto; display: block; }
@keyframes fadeDown { from{opacity:0;transform:translateY(-10px)} to{opacity:1;transform:translateY(0)} }

.left-panel { position: relative; z-index: 10; display: flex; flex-direction: column; justify-content: flex-end; padding: 0 48px 52px 52px; pointer-events: none; }
.tagline { font-family: 'Nunito',sans-serif; font-size: clamp(26px,2.8vw,44px); font-weight: 900; color: #fff; line-height: 1.15; letter-spacing: -0.8px; text-shadow: 0 2px 24px rgba(0,0,0,0.35); margin-bottom: 10px; }
.tagline em { font-style: normal; color: var(--yellow); }
.tagline-sub { font-size: 15px; font-weight: 400; color: rgba(255,255,255,0.82); line-height: 1.6; max-width: 360px; text-shadow: 0 1px 10px rgba(0,0,0,0.25); margin-bottom: 28px; }
.features { display: flex; flex-direction: column; gap: 10px; pointer-events: none; }
.feat-item { display: flex; align-items: center; gap: 12px; background: rgba(255,255,255,0.14); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); border: 1px solid rgba(255,255,255,0.22); border-radius: 14px; padding: 11px 16px; max-width: 340px; animation: slideUp .6s cubic-bezier(.22,1,.36,1) both; }
.feat-item:nth-child(1){animation-delay:.1s} .feat-item:nth-child(2){animation-delay:.2s} .feat-item:nth-child(3){animation-delay:.3s}
@keyframes slideUp { from{opacity:0;transform:translateY(16px)} to{opacity:1;transform:translateY(0)} }
.feat-icon { width: 36px; height: 36px; border-radius: 10px; background: var(--yellow); display: flex; align-items: center; justify-content: center; flex-shrink: 0; box-shadow: 0 3px 10px rgba(245,197,24,0.4); }
.feat-icon svg { width: 18px; height: 18px; color: #1a1a2e; }
.feat-text strong { display: block; font-size: 13.5px; font-weight: 700; color: #fff; }
.feat-text span   { font-size: 12px; color: rgba(255,255,255,0.7); }
.stats-row { display: flex; gap: 24px; margin-top: 24px; animation: slideUp .6s .4s cubic-bezier(.22,1,.36,1) both; }
.stat-num  { font-family: 'Nunito',sans-serif; font-size: 26px; font-weight: 900; color: var(--yellow); line-height: 1; }
.stat-label { font-size: 11.5px; font-weight: 500; color: rgba(255,255,255,0.72); margin-top: 2px; text-transform: uppercase; letter-spacing: 0.8px; }

.right-panel { position: relative; z-index: 10; display: flex; align-items: center; justify-content: center; background: rgba(255,255,255,0.96); backdrop-filter: blur(24px); -webkit-backdrop-filter: blur(24px); border: 1px solid rgba(255,255,255,0.5); box-shadow: -12px 0 60px rgba(0,0,0,0.18),12px 0 40px rgba(0,0,0,0.1); padding: 32px 36px; border-radius: 32px; margin: 20px 0; animation: slideIn .6s cubic-bezier(.22,1,.36,1) both; }
@keyframes slideIn { from{opacity:0;transform:translateX(30px)} to{opacity:1;transform:translateX(0)} }
.card { width: 100%; max-width: 370px; }

.form-eyebrow { font-size: 10.5px; font-weight: 700; letter-spacing: 2.5px; text-transform: uppercase; color: var(--ydark); margin-bottom: 4px; }
.form-title   { font-family: 'Nunito',sans-serif; font-size: 28px; font-weight: 900; color: var(--text); letter-spacing: -0.6px; line-height: 1.1; margin-bottom: 4px; }
.form-sub     { font-size: 13.5px; color: var(--muted); margin-bottom: 20px; line-height: 1.4; }

.alert { padding: 10px 13px; border-radius: 9px; font-size: 13px; line-height: 1.4; margin-bottom: 14px; border-left: 4px solid; animation: alertIn .3s ease both; }
@keyframes alertIn { from{opacity:0;transform:translateY(-4px)} to{opacity:1;transform:translateY(0)} }
.alert.error   { background: #fff1f1; border-color: #dc2626; color: #991b1b; }
.alert.success { background: #fffbe6; border-color: var(--ydark); color: #7a5700; }

/* Inline field errors */
.field-err { display: none; align-items: center; gap: 4px; font-size: 11.5px; color: #dc2626; margin-top: 5px; }
.field-err.show { display: flex; }
.field-err svg  { width: 13px; height: 13px; flex-shrink: 0; }
input.invalid   { border-color: #dc2626 !important; box-shadow: 0 0 0 3px rgba(220,38,38,0.12) !important; background: #fff !important; }

.fgroup { margin-bottom: 13px; }
.frow   { display: flex; align-items: center; justify-content: space-between; margin-bottom: 5px; }
.flabel { font-size: 12.5px; font-weight: 700; color: var(--text); }
.forgot { font-size: 12px; font-weight: 700; color: var(--ydark); text-decoration: none; }
.forgot:hover { text-decoration: underline; }

.iwrap { position: relative; }
.iicon { position: absolute; left: 13px; top: 50%; transform: translateY(-50%); color: #b8c0cc; display: flex; pointer-events: none; transition: color .2s; }
.iicon svg { width: 15px; height: 15px; }

input[type=email], input[type=password], input[type=text] {
  width: 100%; padding: 11px 42px;
  background: var(--ibg); border: 1.5px solid var(--border);
  border-radius: 10px; font-family: 'DM Sans',sans-serif;
  font-size: 14px; color: var(--text); outline: none;
  transition: border-color .2s, box-shadow .2s, background .2s;
}
input::placeholder { color: #c2cad4; }
input:focus { border-color: var(--yellow); box-shadow: 0 0 0 3px rgba(245,197,24,0.15); background: #fff; }

.pw-btn { position: absolute; right: 11px; top: 50%; transform: translateY(-50%); background: none; border: none; cursor: pointer; color: #b8c0cc; display: flex; padding: 3px; transition: color .2s; }
.pw-btn:hover { color: var(--text); }
.pw-btn svg { width: 15px; height: 15px; }

.bottom-row { display: flex; align-items: center; justify-content: space-between; margin-bottom: 16px; }
.rem-row { display: flex; align-items: center; gap: 8px; }
.rem-row input[type=checkbox] { width: 16px; height: 16px; cursor: pointer; accent-color: var(--ydark); flex-shrink: 0; padding: 0 !important; border: none; }
.rem-row label { font-size: 13px; color: var(--muted); cursor: pointer; font-weight: 500; }

.btn-login { display: flex; align-items: center; justify-content: center; gap: 7px; width: 100%; padding: 13px; background: var(--yellow); color: #1a1a2e; font-family: 'Nunito',sans-serif; font-size: 16px; font-weight: 900; border: none; border-radius: 12px; cursor: pointer; letter-spacing: 0.2px; position: relative; overflow: hidden; box-shadow: 0 4px 18px rgba(245,197,24,0.42); transition: background .2s,transform .15s,box-shadow .2s; }
.btn-login::after { content: ''; position: absolute; top: 0; left: -110%; width: 55%; height: 100%; background: linear-gradient(90deg,transparent,rgba(255,255,255,0.36),transparent); animation: shim 3s ease-in-out infinite; }
@keyframes shim { 0%{left:-110%} 50%,100%{left:160%} }
.btn-login:hover { background: #e8b800; transform: translateY(-2px); box-shadow: 0 8px 28px rgba(245,197,24,0.5); }
.btn-login:active { transform: translateY(0); }
.btn-login:disabled { opacity: .7; cursor: not-allowed; transform: none; }

.spinner { display: none; width: 15px; height: 15px; border: 2px solid rgba(0,0,0,0.15); border-top-color: #333; border-radius: 50%; animation: spin .7s linear infinite; }
@keyframes spin { to{transform:rotate(360deg)} }

.divider { display: flex; align-items: center; gap: 10px; margin: 14px 0; color: #c2cad4; font-size: 11px; font-weight: 600; letter-spacing: 1.2px; text-transform: uppercase; }
.divider::before, .divider::after { content: ''; flex: 1; height: 1px; background: var(--border); }

.btn-google { display: flex; align-items: center; justify-content: center; gap: 9px; width: 100%; padding: 11px; background: #fff; color: #3c4043; font-family: 'DM Sans',sans-serif; font-size: 13.5px; font-weight: 600; border: 1.5px solid var(--border); border-radius: 12px; cursor: pointer; text-decoration: none; box-shadow: 0 1px 4px rgba(0,0,0,0.06); transition: background .2s,box-shadow .2s,transform .15s; }
.btn-google:hover { background: #f8f9fa; box-shadow: 0 4px 14px rgba(0,0,0,0.1); transform: translateY(-1px); }
.btn-google svg { width: 18px; height: 18px; flex-shrink: 0; }

.signup { text-align: center; margin-top: 14px; font-size: 13px; color: var(--muted); }
.signup a { color: var(--ydark); font-weight: 800; text-decoration: none; }
.signup a:hover { text-decoration: underline; }

.trust-row { display: flex; align-items: center; justify-content: center; gap: 16px; margin-top: 16px; padding-top: 14px; border-top: 1px solid var(--border); }
.trust-item { display: flex; align-items: center; gap: 4px; font-size: 10px; font-weight: 600; color: #aab0ba; letter-spacing: 0.3px; text-transform: uppercase; }
.trust-item svg { width: 11px; height: 11px; }

.form-logo { display: none; }

@media(max-width:700px){
  html, body { overflow: auto; height: auto; }
  body { display: flex; flex-direction: column; min-height: 100vh; background: #fff; }
  .left-panel, .logo-wrap, body > .bg-wrap { display: none; }
  .right-panel { flex: 1; display: flex; align-items: flex-start; justify-content: center; background: #fff; border: none; border-radius: 0; box-shadow: none; padding: 48px 24px 40px; margin: 0; animation: fadeUp .45s cubic-bezier(.22,1,.36,1) both; }
  @keyframes fadeUp { from{opacity:0;transform:translateY(16px)} to{opacity:1;transform:translateY(0)} }
  .card { width: 100%; max-width: 100%; }
  .form-logo { display: flex; justify-content: center; margin-bottom: 24px; }
  .form-logo .logo-pill { display: inline-flex; align-items: center; background: #fff; border-radius: 999px; padding: 6px 18px 6px 10px; box-shadow: 0 2px 12px rgba(0,0,0,0.10),0 0 0 1.5px var(--border); }
  .form-logo img { height: 40px; width: auto; display: block; }
  .form-title { font-size: 26px; }
  .form-sub   { font-size: 13px; margin-bottom: 18px; }
  input[type=email], input[type=password], input[type=text] { padding: 13px 44px; font-size: 15px; border-radius: 12px; }
  .btn-login  { padding: 14px; font-size: 16px; border-radius: 13px; }
  .btn-google { padding: 13px; font-size: 14px; border-radius: 12px; }
  .fgroup { margin-bottom: 12px; } .bottom-row { margin-bottom: 14px; } .divider { margin: 12px 0; } .signup { margin-top: 10px; } .trust-row { margin-top: 18px; }
}
