/* ============================================================================
   KOKO Music — auth pages (login / register / password flows).
   Split hero: eucalyptus brand panel + KOKO mascot | form card.
   Uses design tokens + primitives from app/theme.css.
   ========================================================================== */

.auth-shell { min-height: 100dvh; display: grid; grid-template-columns: 1.05fr 1fr; }

/* ---- left brand panel ---- */
.auth-aside {
  position: relative; overflow: hidden; padding: 48px 52px;
  display: flex; flex-direction: column; justify-content: space-between;
  color: var(--ink-on);
  background:
    radial-gradient(120% 90% at 10% 0%, rgba(230,166,43,.22), transparent 55%),
    radial-gradient(120% 120% at 100% 100%, rgba(61,90,120,.35), transparent 55%),
    linear-gradient(150deg, var(--euc-600), var(--euc-700) 70%, #1f4238);
}
.auth-aside::after {
  content: ""; position: absolute; inset: 0; pointer-events: none; opacity: .5;
  background-image: var(--grain); mix-blend-mode: overlay;
}
.auth-aside > * { position: relative; z-index: 1; }
.auth-brand { display: inline-flex; align-items: center; gap: 12px; }
.auth-brand .badge-img { width: 52px; height: 52px; border-radius: 15px; background: rgba(255,255,255,.12); border: 1.5px solid rgba(255,255,255,.2); overflow: hidden; display: grid; place-items: center; }
.auth-brand .badge-img img { width: 132%; margin-top: 18%; }
.auth-brand .n { font-family: var(--font-display); font-size: 25px; font-weight: 600; letter-spacing: -.02em; }
.auth-brand .s { display: block; font-size: 11px; letter-spacing: .16em; text-transform: uppercase; opacity: .72; margin-top: 2px; }

.auth-hero { display: flex; flex-direction: column; align-items: flex-start; gap: 18px; margin: auto 0; }
.auth-hero .koko { width: min(300px, 46%); filter: drop-shadow(0 22px 32px rgba(0,0,0,.32)); animation: bob 5s ease-in-out infinite; }
.auth-hero h2 { color: var(--ink-on); font-size: clamp(28px, 3.4vw, 42px); line-height: 1.08; max-width: 14ch; }
.auth-hero p { color: rgba(255,255,255,.82); font-size: 16px; max-width: 40ch; }
.auth-features { list-style: none; padding: 0; margin: 6px 0 0; display: flex; flex-direction: column; gap: 11px; }
.auth-features li { display: flex; align-items: center; gap: 11px; font-size: 14.5px; color: rgba(255,255,255,.9); }
.auth-features .tick { display: grid; place-items: center; width: 26px; height: 26px; border-radius: 50%; background: rgba(255,255,255,.14); flex: none; }
.auth-features .tick svg { width: 15px; height: 15px; stroke: var(--gold-400); }
.auth-foot-note { font-size: 12.5px; color: rgba(255,255,255,.6); }

/* ---- right form area ---- */
.auth-main { position: relative; display: flex; flex-direction: column; padding: 24px clamp(20px, 5vw, 56px); }
.auth-topbar { display: flex; align-items: center; justify-content: flex-end; gap: 10px; min-height: 44px; }
.auth-body { flex: 1; display: grid; place-items: center; padding: 24px 0 40px; }
.auth-card { width: 100%; max-width: 400px; }
.auth-card .ico {
  width: 58px; height: 58px; border-radius: 18px; display: grid; place-items: center; margin-bottom: 20px;
  background: var(--euc-tint); color: var(--euc); box-shadow: var(--shadow-sm);
}
.auth-card .ico svg { width: 28px; height: 28px; }
.auth-card .ico.gold { background: var(--gold-tint); color: var(--gold-600); }
.auth-card .ico.terra { background: var(--terra-tint); color: var(--terra-600); }
.auth-card .ico.ok { background: var(--ok-tint); color: var(--ok); }
.auth-h1 { font-size: clamp(26px, 3.5vw, 33px); line-height: 1.1; margin-bottom: 8px; }
.auth-sub { color: var(--ink-3); font-size: 15px; margin-bottom: 26px; }
.auth-sub.err { color: var(--danger); font-weight: 600; }

.auth-form { display: flex; flex-direction: column; gap: 17px; }
.auth-field .label { margin-bottom: 7px; }
.field-err { color: var(--danger); font-size: 13px; margin: 6px 2px 0; font-weight: 600; }

/* password field with show/hide toggle */
.pw-wrap { position: relative; }
.pw-wrap .input { padding-right: 64px; }
.pw-toggle {
  position: absolute; right: 8px; top: 50%; transform: translateY(-50%);
  border: 0; background: transparent; color: var(--ink-3); font-weight: 700; font-size: 13px;
  padding: 6px 10px; border-radius: var(--r-sm); cursor: pointer; transition: all var(--t-fast);
}
.pw-toggle:hover { color: var(--euc-700); background: var(--euc-tint); }

/* message banners (map to Django message.tags + inline errors) */
.auth-msg { display: flex; align-items: flex-start; gap: 10px; padding: 12px 15px; border-radius: var(--r); font-size: 14px; font-weight: 500; }
.auth-msg svg { width: 18px; height: 18px; flex: none; margin-top: 1px; }
.auth-msg.error { background: var(--danger-tint); color: #8f2d20; }
.auth-msg.success { background: var(--ok-tint); color: #235c36; }
.auth-msg.info { background: var(--denim-tint); color: #2b475f; }

.auth-links { margin-top: 22px; display: flex; flex-direction: column; gap: 8px; font-size: 14px; color: var(--ink-3); }
.auth-links a { font-weight: 700; }
.auth-links .row { display: flex; justify-content: space-between; gap: 12px; flex-wrap: wrap; }

.auth-page-foot { text-align: center; padding: 16px 0 22px; font-size: 12.5px; color: var(--ink-3); }

/* responsive: hide brand panel, single column */
@media (max-width: 900px) {
  .auth-shell { grid-template-columns: 1fr; }
  .auth-aside { display: none; }
  .auth-main { padding-top: 12px; }
}

/* lang toggle reused from theme (.lang-toggle) */
