/* ===== RESET & BASE ===== */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

:root {
  --primary:       #4f46e5;
  --primary-dark:  #3730a3;
  --primary-light: #6366f1;
  --accent:        #06b6d4;
  --success:       #10b981;
  --warning:       #f59e0b;
  --danger:        #ef4444;
  --bg:            #f1f5f9;
  --card:          #ffffff;
  --card-border:   #e2e8f0;
  --text:          #0f172a;
  --text-muted:    #64748b;
  --input-bg:      #f8fafc;
  --input-border:  #cbd5e1;
  --shadow:        0 20px 60px rgba(15,23,42,0.12);
  --radius:        16px;
  --transition:    0.3s cubic-bezier(0.4,0,0.2,1);
}

html, body {
  height: 100%;
  font-family: 'Segoe UI', system-ui, -apple-system, sans-serif;
  background: var(--bg);
  color: var(--text);
  overflow: hidden;
}

/* ===== BACKGROUND ===== */
.bg-particles {
  position: fixed; inset: 0; overflow: hidden; z-index: 0; pointer-events: none;
}
.bg-particles span {
  position: absolute; display: block; border-radius: 50%;
  animation: float 20s infinite; opacity: 0.07;
}
.bg-particles span:nth-child(1) { width:600px;height:600px;left:-200px;top:-200px;background:var(--primary);animation-duration:25s; }
.bg-particles span:nth-child(2) { width:400px;height:400px;right:-150px;bottom:-150px;background:var(--accent);animation-duration:30s;animation-delay:-5s; }
.bg-particles span:nth-child(3) { width:200px;height:200px;left:40%;top:60%;background:var(--primary-light);animation-duration:18s;animation-delay:-10s; }
.bg-particles span:nth-child(4) { width:150px;height:150px;right:30%;top:20%;background:var(--success);animation-duration:22s;animation-delay:-3s; }
.bg-particles span:nth-child(5) { width:100px;height:100px;left:20%;bottom:20%;background:var(--warning);animation-duration:15s;animation-delay:-7s;opacity:.04; }
.bg-particles span:nth-child(6) { width:250px;height:250px;left:60%;top:40%;background:var(--primary);animation-duration:28s;animation-delay:-12s; }
.bg-particles span:nth-child(7) { width:80px;height:80px;right:15%;bottom:40%;background:var(--accent);animation-duration:20s;animation-delay:-2s; }
.bg-particles span:nth-child(8) { width:300px;height:300px;left:50%;bottom:-100px;background:var(--primary-dark);animation-duration:35s;animation-delay:-15s; }

@keyframes float {
  0%,100% { transform:translateY(0) scale(1); }
  33%     { transform:translateY(-40px) scale(1.05); }
  66%     { transform:translateY(20px) scale(0.95); }
}

/* ===== LAYOUT ===== */
.login-wrapper {
  position: relative; z-index: 1;
  display: flex; height: 100vh; overflow: hidden;
}

/* ===== BRAND PANEL ===== */
.login-brand {
  flex: 1;
  display: flex; align-items: center; justify-content: center;
  background: linear-gradient(135deg, var(--primary-dark) 0%, var(--primary) 50%, var(--accent) 100%);
  padding: 48px; position: relative; overflow: hidden;
}
.brand-content { position: relative; z-index: 2; max-width: 420px; }
.brand-icon {
  width:80px;height:80px;background:rgba(255,255,255,0.18);border-radius:24px;
  display:flex;align-items:center;justify-content:center;font-size:36px;color:#fff;
  margin-bottom:28px;backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,0.25);
  box-shadow:0 8px 32px rgba(0,0,0,0.15);
}
.brand-title { font-size:42px;font-weight:800;color:#fff;letter-spacing:-1px;margin-bottom:12px; }
.brand-subtitle { font-size:16px;color:rgba(255,255,255,0.85);margin-bottom:40px;line-height:1.6; }
.brand-features { list-style:none;display:flex;flex-direction:column;gap:16px; }
.brand-features li { display:flex;align-items:center;gap:12px;color:rgba(255,255,255,0.92);font-size:15px; }
.brand-features li i { color:#a5f3fc;font-size:18px;flex-shrink:0; }
.brand-graphic { position:absolute;inset:0;z-index:1; }
.graphic-circle { position:absolute;border-radius:50%;border:1px solid rgba(255,255,255,0.12); }
.c1 { width:500px;height:500px;right:-200px;top:-200px; }
.c2 { width:300px;height:300px;right:-50px;bottom:-100px; }
.c3 { width:150px;height:150px;left:30%;top:20%;background:rgba(255,255,255,0.06); }

/* ===== LOGIN PANEL ===== */
.login-panel {
  width: 480px; flex-shrink: 0;
  display: flex; align-items: center; justify-content: center;
  background: var(--card);
  padding: 32px; overflow-y: auto;
  border-left: 1px solid var(--card-border);
  box-shadow: -8px 0 40px rgba(15,23,42,0.06);
}
.login-box { width: 100%; max-width: 380px; }

/* ===== LOGIN HEADER ===== */
.login-header { text-align:center; margin-bottom:36px; }
.login-logo {
  width:64px;height:64px;
  background:linear-gradient(135deg,var(--primary),var(--accent));
  border-radius:18px;display:inline-flex;align-items:center;justify-content:center;
  font-size:28px;color:#fff;margin-bottom:20px;
  box-shadow:0 8px 24px rgba(79,70,229,0.3);
}
.login-header h2 { font-size:26px;font-weight:700;color:var(--text);margin-bottom:8px; }
.login-header p  { font-size:14px;color:var(--text-muted); }

/* ===== TOAST ===== */
.toast-container { display:flex;flex-direction:column;gap:8px;margin-bottom:16px;min-height:0; }
.toast {
  display:flex;align-items:flex-start;gap:12px;
  padding:14px 16px;border-radius:12px;font-size:14px;font-weight:500;
  animation:slideIn .3s ease;position:relative;overflow:hidden;
}
.toast::before { content:'';position:absolute;left:0;top:0;bottom:0;width:4px; }
.toast-success { background:#f0fdf4;color:#166534;border:1px solid #bbf7d0; }
.toast-success::before { background:var(--success); }
.toast-error   { background:#fef2f2;color:#991b1b;border:1px solid #fecaca; }
.toast-error::before   { background:var(--danger); }
.toast-warning { background:#fffbeb;color:#92400e;border:1px solid #fde68a; }
.toast-warning::before { background:var(--warning); }
.toast-info    { background:#eff6ff;color:#1e40af;border:1px solid #bfdbfe; }
.toast-info::before    { background:var(--primary-light); }
.toast-icon  { font-size:16px;flex-shrink:0;margin-top:1px; }
.toast-text  { flex:1;line-height:1.5; }
.toast-close { background:none;border:none;color:inherit;cursor:pointer;opacity:.5;padding:0;font-size:14px;flex-shrink:0;transition:opacity .2s; }
.toast-close:hover { opacity:1; }
@keyframes slideIn  { from{transform:translateX(20px);opacity:0} to{transform:translateX(0);opacity:1} }
@keyframes slideOut { from{transform:translateX(0);opacity:1;max-height:100px;margin-bottom:8px} to{transform:translateX(20px);opacity:0;max-height:0;margin-bottom:0;padding:0} }
.toast.removing { animation:slideOut .3s ease forwards; }

/* ===== FORM ===== */
.form-group { margin-bottom:20px; }
.form-group label {
  display:flex;align-items:center;gap:8px;font-size:12px;font-weight:700;
  color:var(--text-muted);margin-bottom:8px;text-transform:uppercase;letter-spacing:.6px;
}
.form-group label i { font-size:11px;color:var(--primary-light); }

.input-wrapper { position:relative;display:flex;align-items:center; }
.input-wrapper input {
  width:100%;padding:13px 44px 13px 16px;
  background:var(--input-bg);border:1.5px solid var(--input-border);
  border-radius:12px;color:var(--text);font-size:15px;font-family:inherit;outline:none;
  transition:border-color var(--transition),box-shadow var(--transition),background var(--transition);
}
.input-wrapper input::placeholder { color:#94a3b8; }
.input-wrapper input:focus {
  border-color:var(--primary);background:#fff;
  box-shadow:0 0 0 4px rgba(79,70,229,0.1);
}
.form-group.has-error .input-wrapper input   { border-color:var(--danger);box-shadow:0 0 0 4px rgba(239,68,68,0.1); }
.form-group.has-success .input-wrapper input { border-color:var(--success);box-shadow:0 0 0 4px rgba(16,185,129,0.1); }

.input-status { position:absolute;right:14px;font-size:14px;pointer-events:none; }
.form-group.has-error   .input-status { color:var(--danger); }
.form-group.has-success .input-status { color:var(--success); }

.toggle-password { position:absolute;right:14px;background:none;border:none;color:#94a3b8;cursor:pointer;padding:0;font-size:15px;transition:color var(--transition);z-index:1; }
.toggle-password:hover { color:var(--primary); }

.field-error { font-size:12px;color:var(--danger);margin-top:6px;min-height:16px;opacity:0;transform:translateY(-4px);transition:opacity .2s,transform .2s; }
.field-error.visible { opacity:1;transform:translateY(0); }

/* ===== FORM OPTIONS ===== */
.form-options { display:flex;align-items:center;justify-content:space-between;margin-bottom:28px; }
.checkbox-label { display:flex;align-items:center;gap:10px;cursor:pointer;font-size:14px;color:var(--text-muted);user-select:none; }
.checkbox-label input[type="checkbox"] { display:none; }
.checkmark {
  width:18px;height:18px;border:2px solid var(--input-border);border-radius:5px;
  position:relative;flex-shrink:0;transition:all var(--transition);background:var(--input-bg);
}
.checkbox-label input:checked + .checkmark { background:var(--primary);border-color:var(--primary); }
.checkbox-label input:checked + .checkmark::after {
  content:'\f00c';font-family:'Font Awesome 6 Free';font-weight:900;
  position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:10px;color:#fff;
}

/* ===== BUTTON ===== */
.btn-login {
  width:100%;padding:15px;
  background:linear-gradient(135deg,var(--primary),var(--primary-dark));
  border:none;border-radius:12px;color:#fff;font-size:15px;font-weight:700;
  font-family:inherit;cursor:pointer;display:flex;align-items:center;justify-content:center;
  gap:10px;transition:transform var(--transition),box-shadow var(--transition);
  box-shadow:0 8px 24px rgba(79,70,229,0.3);position:relative;overflow:hidden;
}
.btn-login::before { content:'';position:absolute;inset:0;background:linear-gradient(135deg,var(--accent),var(--primary));opacity:0;transition:opacity var(--transition); }
.btn-login:hover::before { opacity:1; }
.btn-login:hover { transform:translateY(-2px);box-shadow:0 12px 32px rgba(79,70,229,0.4); }
.btn-login:active { transform:translateY(0); }
.btn-login:disabled { cursor:not-allowed;opacity:.7;transform:none; }
.btn-login span { position:relative;z-index:1;display:flex;align-items:center;gap:10px; }

/* ===== FOOTER ===== */
.login-footer { margin-top:28px;text-align:center;border-top:1px solid var(--card-border);padding-top:20px; }
.login-footer p { font-size:12px;color:var(--text-muted);display:flex;align-items:center;justify-content:center;gap:6px;margin-bottom:8px; }
.login-footer p i { color:var(--success); }
.version-tag { font-size:11px;color:#94a3b8; }

/* ===== SUCCESS BANNER ===== */
.success-banner { text-align:center;padding:32px 16px;animation:fadeUp .4s ease; }
@keyframes fadeUp { from{opacity:0;transform:translateY(16px)} to{opacity:1;transform:translateY(0)} }
.success-icon { font-size:56px;color:var(--success);margin-bottom:16px;animation:popIn .5s cubic-bezier(.175,.885,.32,1.275);display:inline-block; }
@keyframes popIn { from{transform:scale(0);opacity:0} to{transform:scale(1);opacity:1} }
.success-banner h3 { font-size:22px;font-weight:800;color:var(--text);margin-bottom:10px; }
.success-banner p  { font-size:15px;color:var(--text-muted);line-height:1.7;margin-bottom:28px; }
.success-banner p strong { color:var(--text); }
.success-progress { height:4px;background:#e2e8f0;border-radius:4px;overflow:hidden;margin:0 auto;max-width:240px; }
.success-bar { height:100%;width:0%;background:linear-gradient(90deg,var(--success),var(--accent));border-radius:4px;animation:fillBar 1.8s ease forwards; }
@keyframes fillBar { from{width:0%} to{width:100%} }

/* ===== RESPONSIVE ===== */
@media (max-width:900px) {
  .login-brand { display:none; }
  .login-panel { width:100%;border-left:none;box-shadow:none; }
}
@media (max-width:480px) {
  .login-panel { padding:20px; }
  html,body { overflow:auto; }
}
