// Äußere Hülle für alle Auth-Seiten: zentrierte Karte, dezenter Kupfer-Schein,
// opaker --rk-bg-Grund gegen den weißen Radial-Schimmer des body-Hintergrunds.
export function AuthShell({
  children,
  // Standard-Auth-Seiten (Login, Passwort vergessen/zurücksetzen, Verifizierung)
  // haben nur 1-2 Felder und kommen mit der schmalen Karte gut aus. Die
  // Registrierung hat deutlich mehr Felder (Name, Anschrift, Geburtsdatum
  // usw.) und braucht mehr Breite — Nutzer-Meldung 04.10.2026: Seite wirkte
  // zu schmal, Felder passten nicht zueinander. Fester Wert statt vw/clamp,
  // siehe Projekt-Konvention (fixe Content-Breite, feste Breakpoints).
  maxWidthClassName = "max-w-sm",
}: {
  children: React.ReactNode;
  maxWidthClassName?: string;
}) {
  return (
    <main className="relative flex min-h-screen items-center justify-center overflow-hidden bg-[var(--rk-bg)] px-6 pt-28 pb-20">
      <div
        aria-hidden="true"
        className="pointer-events-none absolute left-1/2 top-1/2 h-[440px] w-[560px] -translate-x-1/2 -translate-y-1/2 [background:radial-gradient(ellipse_at_center,rgba(201,138,75,0.10),transparent_70%)]"
      />
      <div className={`relative w-full ${maxWidthClassName}`}>{children}</div>
    </main>
  );
}

// Titel + Akzentstrich + optionaler Untertitel + Karte um das Formular.
// Als eigene Komponente, damit der Login-Flow (2FA / erzwungener
// Passwortwechsel) je Schritt einen passenden Titel setzen kann, statt
// überall „Einloggen" stehen zu lassen (Till, 09.09.2026).
export function AuthCardBody({
  title,
  subtitle,
  children,
}: {
  title: string;
  subtitle?: string;
  children: React.ReactNode;
}) {
  return (
    <>
      <h1 className="rk-wordmark text-center text-2xl">{title}</h1>
      {/* Bei Untertitel steht der als Abschluss unter dem Titel (Register-
          Mockup); ohne Untertitel schließt der Akzentstrich ab (Login-Mockup). */}
      {subtitle ? (
        <p className="mt-3 text-center text-sm leading-relaxed text-[var(--rk-ink-muted)]">{subtitle}</p>
      ) : (
        <div className="rk-accent-rule rk-accent-rule--center" />
      )}

      <div className="mt-8 rounded-2xl border border-white/10 bg-[var(--rk-surface)]/60 p-7 shadow-[0_24px_60px_-20px_rgba(0,0,0,0.55)] backdrop-blur-sm">
        {children}
      </div>
    </>
  );
}

// Bequemer Wrapper für die statischen Auth-Seiten (Registrieren, Passwort
// vergessen / zurücksetzen), die immer denselben Titel haben.
export function AuthCard({
  title,
  subtitle,
  children,
  maxWidthClassName,
}: {
  title: string;
  subtitle?: string;
  children: React.ReactNode;
  maxWidthClassName?: string;
}) {
  return (
    <AuthShell maxWidthClassName={maxWidthClassName}>
      <AuthCardBody title={title} subtitle={subtitle}>
        {children}
      </AuthCardBody>
    </AuthShell>
  );
}
