/* Background */
.page-bg {
  position: fixed; inset: 0; pointer-events: none; z-index: -1;
  background:
    radial-gradient(40% 35% at 80% 10%, rgba(59,130,246,0.18), transparent 60%),
    radial-gradient(35% 35% at 20% 85%, rgba(16,185,129,0.18), transparent 60%),
    radial-gradient(25% 25% at 50% 40%, rgba(236,72,153,0.14), transparent 60%),
    linear-gradient(180deg, #ffffff 0%, #f8fafc 100%);
  filter: saturate(105%);
}
.bg-dots {
  --dot: rgba(0,0,0,0.06);
  position: fixed; inset: 0; z-index: -2;
  background-image: radial-gradient(var(--dot) 1px, transparent 1px);
  background-size: 18px 18px;
  mask-image: radial-gradient(ellipse at center, rgba(0,0,0,0.9), rgba(0,0,0,0.2));
}

/* Card + gradient aura */
.gradient-border { position: relative; border-radius: 1rem; }
.gradient-border::before {
  content:""; position:absolute; inset:-1px; z-index:-1; border-radius: inherit;
  background: conic-gradient(from 180deg at 50% 50%, #93c5fd, #86efac, #fbcfe8, #93c5fd);
  filter: blur(6px); opacity:.6;
}
.glass { backdrop-filter: blur(10px); background: rgba(255,255,255,0.72); border-radius: 1rem; }
.shadow-soft { box-shadow: 0 10px 30px rgba(2,6,23,0.08), 0 4px 12px rgba(2,6,23,0.06); }

/* Tiny badge/chip */
.badge {
  display:inline-flex; align-items:center; gap:.4rem;
  border:1px solid #e2e8f0; background: rgba(255,255,255,.7);
  padding:.35rem .6rem; border-radius:999px; font-size:.75rem; color:#1e293b;
}

/* Floating label inputs (with icons) */
.fl-group { position: relative; }
.fl-icon {
  position:absolute; inset-inline-start:.75rem; top:50%; transform:translateY(-50%);
  opacity:.7; pointer-events:none;
}
.fl-input {
  width:100%; border:1px solid #e5e7eb; border-radius:.75rem;
  padding:1rem .875rem; padding-inline-start:2.4rem;
  background:rgba(255,255,255,0.92); outline:none;
  transition: box-shadow .2s, border-color .2s;
}
.fl-input::placeholder { color:transparent; }
.fl-input:focus {
  border-color: transparent;
  box-shadow: 0 0 0 3px rgba(147,197,253,.35), 0 1px 0 rgba(2,6,23,.04);
}
.fl-label {
  position:absolute; inset-inline-start:2.4rem; top:50%; transform:translateY(-50%);
  color:#475569; font-size:.9rem; background:transparent; padding:0 .25rem;
  pointer-events:none; transition: all .18s ease;
}
.fl-input:focus + .fl-label,
.fl-input:not(:placeholder-shown) + .fl-label {
  top:.3rem; font-size:.72rem; color:#1f2937; opacity:.95;
}

/* Password toggle */
.pwd-toggle {
  position:absolute; inset-inline-end:8px; top:50%; transform:translateY(-50%);
  display:grid; place-items:center; width:36px; height:36px;
  border-radius:10px; border:1px solid #e5e7eb; background:#fff; cursor:pointer;
}
.pwd-toggle:hover { background:#f8fafc; }

/* Buttons */
.btn-primary {
  background: linear-gradient(135deg, var(--brand600,#2563eb), var(--brand500,#3b82f6));
  color:#fff; border:none;
  border-radius:.75rem; padding:.85rem 1rem; width:100%;
  transition: transform .15s ease, box-shadow .2s ease;
}
.btn-primary:hover { transform:translateY(-2px); box-shadow:0 10px 24px rgba(59,130,246,.25); }
.btn-primary[disabled] { opacity:.75; cursor:not-allowed; transform:none; }

/* Loading spinner inside button */
.btn-primary .spinner { width:18px; height:18px; margin-inline-start:.5rem; animation:spin 1s linear infinite; }
@keyframes spin { to { transform:rotate(360deg) } }

/* Remember checkbox (simple, modern) */
input[type="checkbox"] { accent-color: var(--brand600,#2563eb); }

/* Caps lock hint */
.caps-hint { display:none; font-size:.75rem; color:#b91c1c; margin-top:.25rem; }

/* Alert shake (when flash renders a [role="alert"]) */
@media (prefers-reduced-motion: no-preference) {
  [role="alert"].flash-error, [role="alert"].error { animation:shake .3s ease-in-out 1; }
}
@keyframes shake { 0%,100%{transform:translateX(0)} 25%{transform:translateX(-4px)} 75%{transform:translateX(4px)} }

/* Small helper spacing for RTL list items (if needed elsewhere) */
.rtl-li li { padding-inline-start:.25rem; }
