/* GrooveSteps auth pages — built on the gs-* design tokens (assets/gs.css). */
.gs-auth-wrap{min-height:calc(100vh - var(--gs-head-h) - 120px);display:flex;align-items:flex-start;
  justify-content:center;padding:48px 18px 64px;font-family:var(--gs-font-body);}
.gs-auth-card{width:100%;max-width:430px;background:linear-gradient(165deg,var(--gs-bg-2),var(--gs-surface));
  border:1px solid var(--gs-border);border-radius:18px;box-shadow:var(--gs-shadow);padding:34px 30px;}
.gs-auth-card h1{font-family:var(--gs-font-disp);font-weight:600;font-size:1.7rem;color:var(--gs-ink);
  margin:0 0 6px;letter-spacing:-.01em;}
.gs-auth-card .gs-sub{color:var(--gs-ink-soft);font-size:.94rem;margin:0 0 22px;line-height:1.5;}

.gs-field{margin-bottom:16px;}
.gs-field label{display:block;font-size:.84rem;font-weight:600;color:var(--gs-ink-soft);margin-bottom:6px;}
.gs-field input{width:100%;box-sizing:border-box;background:var(--gs-bg);color:var(--gs-ink);
  border:1px solid var(--gs-border);border-radius:10px;padding:12px 13px;font-size:1rem;
  font-family:var(--gs-font-body);transition:border-color .15s,box-shadow .15s;}
.gs-field input:focus{outline:none;border-color:var(--gs-purple);box-shadow:0 0 0 3px rgba(139,92,246,.25);}
.gs-field input::placeholder{color:var(--gs-ink-mute);}
.gs-field .gs-hint{font-size:.78rem;color:var(--gs-ink-mute);margin-top:5px;line-height:1.45;}
.gs-field-hidden{display:none;}

.gs-btn-primary{width:100%;cursor:pointer;border:0;border-radius:10px;padding:13px 18px;
  font-family:var(--gs-font-body);font-weight:700;font-size:1rem;color:#0a0a14;
  background:linear-gradient(135deg,var(--gs-purple),var(--gs-green));transition:filter .15s;}
.gs-btn-primary:hover{filter:brightness(1.08);}
.gs-btn-primary:disabled{opacity:.55;cursor:not-allowed;filter:none;}
.gs-btn-ghost{display:inline-block;cursor:pointer;background:transparent;border:1px solid var(--gs-border);
  color:var(--gs-ink);border-radius:10px;padding:11px 16px;font-family:var(--gs-font-body);
  font-weight:600;font-size:.95rem;text-decoration:none;}
.gs-btn-ghost:hover{border-color:var(--gs-purple);color:var(--gs-purple-lt);}
.gs-btn-danger{background:transparent;border:1px solid #7a2d2d;color:#e88;}
.gs-btn-danger:hover{background:rgba(192,57,43,.14);border-color:#c0392b;color:#f5a;}

.gs-auth-foot{margin-top:18px;font-size:.9rem;color:var(--gs-ink-soft);text-align:center;}
.gs-auth-foot a{color:var(--gs-purple-lt);text-decoration:none;font-weight:600;}
.gs-auth-foot a:hover{text-decoration:underline;}
.gs-auth-links{display:flex;justify-content:space-between;gap:10px;margin-top:14px;font-size:.86rem;}

.gs-msg{border-radius:10px;padding:12px 14px;font-size:.9rem;line-height:1.45;margin:0 0 18px;display:none;}
.gs-msg.show{display:block;}
.gs-msg-error{background:rgba(192,57,43,.14);border:1px solid #7a2d2d;color:#f0a9a0;}
.gs-msg-ok{background:rgba(46,224,107,.12);border:1px solid var(--gs-green-dk);color:#aef0c6;}
.gs-msg-info{background:rgba(139,92,246,.12);border:1px solid var(--gs-purple-dk);color:var(--gs-purple-lt);}

.gs-coppa-note{background:rgba(139,92,246,.1);border:1px solid var(--gs-border);border-radius:10px;
  padding:11px 13px;font-size:.8rem;color:var(--gs-ink-soft);line-height:1.5;margin:-4px 0 16px;}

.gs-spin{display:inline-block;width:15px;height:15px;border:2px solid rgba(10,10,20,.35);
  border-top-color:#0a0a14;border-radius:50%;animation:gsSpin .6s linear infinite;vertical-align:-2px;margin-right:7px;}
@keyframes gsSpin{to{transform:rotate(360deg);}}

/* Google sign-in */
.gs-btn-google{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;
  box-sizing:border-box;background:#fff;color:#1f2330;border:1px solid #dadce0;border-radius:10px;
  padding:12px 16px;font-family:var(--gs-font-body);font-weight:600;font-size:.96rem;
  text-decoration:none;cursor:pointer;transition:box-shadow .15s;}
.gs-btn-google:hover{box-shadow:0 1px 6px rgba(0,0,0,.3);}
.gs-btn-google svg{width:18px;height:18px;flex:0 0 auto;}
.gs-or{display:flex;align-items:center;gap:12px;color:var(--gs-ink-mute);font-size:.8rem;margin:16px 0;}
.gs-or::before,.gs-or::after{content:"";flex:1;height:1px;background:var(--gs-border);}

/* Nav auth slot injected by gs.js */
.gs-nav-auth{color:var(--gs-ink-soft);text-decoration:none;font-size:.94rem;font-weight:600;
  padding:8px 13px;border-radius:8px;}
.gs-nav-auth:hover{color:var(--gs-ink);background:rgba(46,224,107,.14);}
.gs-nav-auth.gs-nav-user{color:var(--gs-green);}
