  /* ---------- login ---------- */
  .login-shell{width:min(100%,440px)}
  .login-card{padding:30px;background:var(--panel);border:1px solid var(--border);border-radius:18px;box-shadow:var(--shadow)}
  .login-card h1{margin:18px 0 6px;font-size:24px;color:var(--ink);font-weight:800}
  .login-card p.lead{margin:0 0 20px;color:var(--muted);font-size:14px}
  .brand{display:flex;align-items:center;gap:12px;min-width:0}
  .brand img{height:38px;max-width:170px;object-fit:contain}
  .brand-fallback{display:inline-flex;align-items:center;gap:10px;font-weight:800;color:var(--ink)}
  .brand-fallback .dot{width:34px;height:34px;border-radius:10px;background:var(--orange);color:#fff;display:inline-flex;align-items:center;justify-content:center;font-size:18px;flex:0 0 34px;overflow:hidden}
  .brand-fallback .dot img{width:100%;height:100%;display:block;object-fit:cover}
  .customer-chip{display:inline-flex;align-items:center;gap:7px;margin-top:14px;padding:6px 11px;border-radius:999px;background:var(--orange-soft);color:#8a5a00;font-size:12px;font-weight:700}
  .otp-row{display:none}
  .otp-row.show{display:block}
  .otp-dev{display:none;margin-top:12px;padding:10px 12px;border-radius:12px;background:#fff8e6;border:1px dashed #f2bf54;color:#7a5200;font-size:13px}
  .otp-dev.show{display:block}
  .login-foot{margin-top:18px;font-size:12px;color:var(--muted);text-align:center}
  .login-legal{margin-top:8px;display:flex;gap:8px;justify-content:center;align-items:center;flex-wrap:wrap}
  .login-legal a{color:var(--muted);text-decoration:none;font-weight:600}
  .login-legal a:hover{color:var(--orange-dark);text-decoration:underline}
  .powered-by{margin-top:12px;display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:600;color:var(--muted);text-decoration:none}
  .powered-by img{height:13px;width:auto;display:block;opacity:.92}
  .powered-by:hover{color:var(--ink-2)}
  /* OTP code letter-spacing */
  #otpInput{letter-spacing:.4em;text-align:center;font-weight:700;font-size:18px}

