/* ═══════════════════════════════════════════════════════════════
   Akademie der Zauberei – Auth-Modal
   Nutzt die geteilten Tokens (tokens.css) und fügt sich in die
   Mitternachtsblau/Gold-Ästhetik der Landingpage ein.
═══════════════════════════════════════════════════════════════ */

/* Overlay/Backdrop */
.auth-modal{
  position:fixed;inset:0;z-index:1000;
  display:flex;align-items:center;justify-content:center;
  padding:20px;
  background:rgba(6,4,20,.72);
  backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);
  opacity:0;visibility:hidden;
  transition:opacity .22s ease, visibility .22s ease;
}
.auth-modal.is-open{opacity:1;visibility:visible}
.auth-modal[hidden]{display:none}

/* Dialog-Karte */
.auth-dialog{
  position:relative;width:100%;max-width:420px;
  background:linear-gradient(180deg,var(--bg-secondary),var(--bg-primary));
  border:1px solid var(--line);
  border-radius:var(--r-card);
  box-shadow:var(--sh-card), inset 0 1px 0 rgba(255,255,255,.05);
  padding:clamp(24px,5vw,34px);
  transform:translateY(14px) scale(.98);
  transition:transform .22s cubic-bezier(.22,1,.36,1);
}
.auth-modal.is-open .auth-dialog{transform:none}

/* Feiner Goldrahmen-Schimmer oben */
.auth-dialog::before{
  content:'';position:absolute;left:0;right:0;top:0;height:2px;
  background:var(--grad-gold);border-radius:var(--r-card) var(--r-card) 0 0;opacity:.7;
}

.auth-close{
  position:absolute;top:12px;right:12px;
  width:34px;height:34px;display:flex;align-items:center;justify-content:center;
  border:1px solid var(--line);border-radius:var(--r-pill);
  background:transparent;color:var(--text-2);font-size:18px;line-height:1;cursor:pointer;
  transition:color .2s ease, border-color .2s ease, background .2s ease;
}
.auth-close:hover{color:var(--gold-light);border-color:var(--gold);background:rgba(200,150,60,.08)}

/* Kopfbereich */
.auth-head{text-align:center;margin-bottom:22px}
.auth-eyebrow{
  font-family:var(--f-mono);letter-spacing:.28em;font-size:10px;text-transform:uppercase;
  color:var(--gold);opacity:.85;
}
.auth-title{
  margin:8px 0 0;font-family:var(--f-display);font-weight:800;
  font-size:clamp(22px,5vw,28px);letter-spacing:.02em;
  background:var(--grad-logo);-webkit-background-clip:text;background-clip:text;color:transparent;
}
.auth-sub{margin:8px 0 0;color:var(--text-2);font-weight:300;font-size:13.5px;line-height:1.6}

/* Tabs (Anmelden / Registrieren) */
.auth-tabs{
  display:flex;gap:4px;margin-bottom:20px;padding:4px;
  background:rgba(0,0,0,.25);border:1px solid var(--line);border-radius:var(--r-ctrl);
}
.auth-tab{
  flex:1;padding:9px 10px;border:none;border-radius:8px;cursor:pointer;
  font-family:var(--f-ui);font-weight:600;font-size:13.5px;letter-spacing:.02em;
  color:var(--text-2);background:transparent;
  transition:color .2s ease, background .2s ease;
}
.auth-tab[aria-selected="true"]{color:#2a1c06;background:var(--grad-gold)}

/* Formularfelder */
.auth-field{margin-bottom:14px;text-align:left}
.auth-field label{
  display:block;margin-bottom:6px;
  font-family:var(--f-ui);font-weight:500;font-size:12.5px;letter-spacing:.02em;color:var(--text-2);
}
.auth-field input{
  width:100%;box-sizing:border-box;
  padding:12px 14px;
  font-family:var(--f-ui);font-size:15px;color:var(--text-1);
  background:rgba(0,0,0,.28);
  border:1px solid var(--line);border-radius:var(--r-ctrl);
  transition:border-color .2s ease, box-shadow .2s ease;
}
.auth-field input::placeholder{color:var(--text-3)}
.auth-field input:focus{
  outline:none;border-color:var(--gold);
  box-shadow:0 0 0 3px rgba(200,150,60,.16);
}
.auth-field input:disabled{opacity:.55;cursor:not-allowed}
.auth-field .hint{margin-top:5px;font-size:11.5px;color:var(--text-3);font-weight:300}
.auth-field.has-error input{border-color:var(--error)}
.auth-field .field-error{margin-top:5px;font-size:11.5px;color:var(--error);font-weight:400;min-height:0}

/* „Passwort vergessen?" – dezent, rechtsbündig unter dem Passwortfeld */
.auth-forgot-row{margin:-4px 0 0;text-align:right}
.auth-forgot-row[hidden]{display:none}
.auth-forgot-row button{
  background:none;border:none;padding:0;cursor:pointer;
  font-family:var(--f-ui);font-size:12.5px;font-weight:400;color:var(--text-2);
  text-decoration:underline;text-underline-offset:3px;
  transition:color .2s ease;
}
.auth-forgot-row button:hover{color:var(--gold-light)}
.auth-forgot-row button:disabled{opacity:.5;cursor:not-allowed}

/* Buttons – bauen auf .btn/.btn-primary/.btn-secondary aus landing.css auf */
.auth-actions{margin-top:20px}
.auth-actions .btn{width:100%}
.auth-submit[aria-busy="true"]{opacity:.75;cursor:progress;pointer-events:none}

/* kleiner Lade-Spinner im Button */
.auth-spinner{
  width:15px;height:15px;border-radius:50%;
  border:2px solid rgba(42,28,6,.35);border-top-color:#2a1c06;
  animation:auth-spin .7s linear infinite;display:none;
}
.auth-submit[aria-busy="true"] .auth-spinner{display:inline-block}
.auth-submit[aria-busy="true"] .auth-submit-label{opacity:.7}
@keyframes auth-spin{to{transform:rotate(360deg)}}

/* Trennlinie "oder" */
.auth-or{
  display:flex;align-items:center;gap:12px;
  margin:18px 0;color:var(--text-3);font-size:11.5px;letter-spacing:.16em;text-transform:uppercase;
}
.auth-or::before,.auth-or::after{content:'';flex:1;height:1px;background:var(--line)}

/* Magic-Link-Button = sekundär */
.auth-magic{width:100%}

/* Meldungsbereich (Fehler / Erfolg) */
.auth-message{
  margin:16px 0 0;padding:11px 13px;border-radius:var(--r-ctrl);
  font-size:13px;line-height:1.5;font-weight:400;display:none;
}
.auth-message.show{display:block}
.auth-message.error{
  color:#f2c7c4;background:rgba(182,82,77,.14);border:1px solid rgba(182,82,77,.4);
}
.auth-message.success{
  color:#c6ecd0;background:rgba(79,157,99,.14);border:1px solid rgba(79,157,99,.4);
}
.auth-message.info{
  color:var(--gold-light);background:rgba(200,150,60,.10);border:1px solid var(--line);
}

/* Fußzeile – Wechsel zwischen Login/Registrieren */
.auth-foot{margin-top:18px;text-align:center;font-size:13px;color:var(--text-2);font-weight:300}
.auth-foot button{
  background:none;border:none;cursor:pointer;padding:0;
  color:var(--gold-light);font:inherit;text-decoration:underline;text-underline-offset:3px;
}
.auth-foot button:hover{color:var(--gold)}

/* Konto-Ansicht (eingeloggt) */
.auth-account{text-align:center}
.auth-account .who{
  margin:0 0 4px;font-family:var(--f-display);font-weight:600;font-size:16px;color:var(--text-1);
}
.auth-account .mail{
  margin:0 0 20px;font-family:var(--f-mono);font-size:13px;color:var(--gold-light);word-break:break-all;
}

/* Views umschalten */
.auth-view[hidden]{display:none}

/* Nav-Button, wenn eingeloggt: dezentes Konto-Kürzel */
[data-cta="login"].is-authed{--x:0} /* Marker-Klasse; Label wird per JS gesetzt */

/* ── Konto-Dropdown (eingeloggt) ── */
.account-menu{
  position:fixed;z-index:1100;min-width:210px;
  padding:6px;border-radius:var(--r-ctrl);
  background:linear-gradient(180deg,var(--bg-secondary),var(--bg-primary));
  border:1px solid var(--line);
  box-shadow:0 18px 44px rgba(0,0,0,.5), inset 0 1px 0 rgba(255,255,255,.05);
  opacity:0;transform:translateY(-6px) scale(.98);transform-origin:top right;
  transition:opacity .16s ease, transform .16s ease;
}
.account-menu.is-open{opacity:1;transform:none}
.account-menu[hidden]{display:none}
.account-menu-head{padding:8px 10px 10px;border-bottom:1px solid var(--line);margin-bottom:6px}
.account-menu-label{display:block;font-family:var(--f-mono);font-size:9.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--text-3)}
.account-menu-email{display:block;font-size:13px;color:var(--gold-light);word-break:break-all;margin-top:2px}
.account-menu-item{
  display:flex;align-items:center;gap:10px;width:100%;box-sizing:border-box;
  padding:10px 12px;border-radius:8px;cursor:pointer;text-align:left;
  font-family:var(--f-ui);font-weight:500;font-size:14px;color:var(--text-1);
  background:transparent;border:none;text-decoration:none;
  transition:background .15s ease, color .15s ease;
}
.account-menu-item span[aria-hidden]{color:var(--gold);font-size:13px;width:16px;text-align:center}
.account-menu-item:hover{background:rgba(200,150,60,.12);color:var(--gold-light)}
/* „Zum Spiel" ist der Weg an den Tisch – seit der Kontopflicht führt kein
   Knopf auf der Startseite mehr direkt dorthin, dieser Eintrag ist für
   Angemeldete der Eingang. Deshalb hervorgehoben und durch einen Strich von
   den Verwaltungspunkten darunter getrennt. */
.account-menu-play{
  color:var(--gold-light);
  background:rgba(200,150,60,.09);
  border-bottom:1px solid var(--line);border-radius:8px 8px 0 0;margin-bottom:6px;
}
.account-menu-play:hover{background:rgba(200,150,60,.18)}
.account-menu-logout{color:var(--text-2);border-top:1px solid var(--line);margin-top:6px;border-radius:0 0 8px 8px}
.account-menu-logout span[aria-hidden]{color:var(--text-3)}
.account-menu-logout:hover{background:rgba(182,82,77,.12);color:#f2c7c4}

/* ── Seite /passwort-neu (neues Passwort vergeben) ── */
/* Eigenständige Karte statt Modal – der Nutzer kommt über den Mail-Link
   direkt hier an, ohne vorher irgendwo geklickt zu haben. */
.reset-card{
  max-width:440px;margin:26px 0 0;padding:clamp(22px,4vw,30px);
  background:linear-gradient(180deg,var(--bg-secondary),var(--bg-primary));
  border:1px solid var(--line);border-radius:var(--r-card);
  box-shadow:var(--sh-card), inset 0 1px 0 rgba(255,255,255,.05);
  text-align:left;
}
.reset-state[hidden]{display:none}
.reset-for{
  margin:0 0 16px;padding-bottom:14px;border-bottom:1px solid var(--line);
  font-size:13px;color:var(--text-2);font-weight:300;
}
.reset-for b{font-family:var(--f-mono);font-weight:400;color:var(--gold-light);word-break:break-all}
.reset-lead{margin:0 0 10px;font-size:14.5px;line-height:1.6;color:var(--text-1)}
.reset-note{margin:0;font-size:12.5px;line-height:1.6;color:var(--text-3);font-weight:300}
.reset-checking{
  display:flex;align-items:center;gap:10px;margin:0;
  font-size:13.5px;color:var(--text-2);font-weight:300;
}
.reset-spinner{
  width:15px;height:15px;flex:none;border-radius:50%;
  border:2px solid rgba(200,150,60,.25);border-top-color:var(--gold);
  animation:auth-spin .7s linear infinite;
}

@media (max-width:480px){
  .auth-dialog{padding:22px 18px}
}

/* Reduced motion: keine Transforms/Animationen */
@media (prefers-reduced-motion: reduce){
  .auth-modal,.auth-dialog{transition:none}
  .auth-dialog{transform:none}
  .auth-spinner,.reset-spinner{animation:none}
}
