﻿/* ==========================================================================
   Ojembaa International â€” auth page (login / signup)
   Loads after styles.css and reuses its tokens (:root), .logo, .btn, .toast.
   Split card: form pane left, navy testimonial pane right.
   ========================================================================== */

/* The page is a fixed, viewport-sized shell: the card fills the screen at
   every size and never scrolls. If a screen is physically too short for a
   form, the form pane alone scrolls inside the card as a last resort. */
body.authpage{
  height:100svh;
  overflow:hidden;
  display:grid;place-items:center;
  padding:clamp(12px,2.5vw,32px);
  background:#eef2f8;
}

.auth-card{
  width:min(1120px,100%);
  height:100%;
  min-height:0;
  display:grid;
  grid-template-columns:minmax(0,1fr);
  background:#fff;
  border-radius:26px;
  box-shadow:0 40px 90px -30px rgba(12,30,66,.35);
  overflow:hidden;
}

/* ---------- form pane ---------- */
.auth-pane{
  display:flex;flex-direction:column;
  min-height:0;
  overflow-y:auto;
  padding:clamp(14px,2vw,26px) clamp(20px,4vw,56px) clamp(14px,2vw,26px);
}

.auth-top{
  display:flex;align-items:center;justify-content:space-between;gap:16px;
  margin-bottom:clamp(12px,1.8vw,24px);
}
.auth-logo{display:flex;align-items:center;gap:9px;color:var(--ink);text-decoration:none}
.auth-logo .logo__mark{width:32px;border-radius:50%;box-shadow:0 5px 12px rgba(12,30,66,.28)}
.auth-logo .logo__word{font-size:19px;font-weight:700;letter-spacing:-.03em;line-height:1}
.auth-logo .logo__sub{
  display:block;margin-top:3px;
  font-size:6.5px;font-weight:600;line-height:1;
  letter-spacing:.16em;text-transform:uppercase;color:var(--muted);
}
.auth-back{
  display:inline-flex;align-items:center;gap:8px;
  font-size:13px;font-weight:500;color:#6f7d92;text-decoration:none;
  transition:color .18s;
  white-space:nowrap;
}
.auth-back svg{width:16px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;transition:transform .2s}
.auth-back:hover{color:var(--ink)}
.auth-back:hover svg{transform:translateX(-3px)}

.auth-body{
  width:min(400px,100%);
  margin-inline:auto;
  flex:1;
  display:flex;flex-direction:column;justify-content:center;
}

/* --- tabs --- */
.atabs{
  display:flex;gap:4px;
  background:#eef2f8;border-radius:40px;padding:4px;
  margin-bottom:clamp(14px,2vw,22px);
}
.atabs button{
  flex:1;
  padding:9px 0;border-radius:40px;
  font-size:13.5px;font-weight:500;color:#6f7d92;
  transition:background .2s,color .2s,box-shadow .2s;
}
.atabs button:hover{color:var(--ink)}
.atabs button.is-on{
  background:var(--navy);color:#fff;
  box-shadow:0 8px 18px rgba(12,30,66,.3);
}

/* --- panes --- */
.apane{display:none}
.apane.is-on{display:block}

.apane form{margin-top:clamp(6px,1vw,12px)}

/* --- fields --- */
.afield{
  display:block;position:relative;
  font-size:11.5px;font-weight:600;color:var(--navy);
  margin-bottom:11px;
}
.afield input{
  display:block;width:100%;
  margin-top:5px;
  /* 16px keeps iOS Safari from auto-zooming the page when the field is
     focused; desktop restores the smaller size below. */
  font:inherit;font-size:16px;font-weight:400;color:var(--ink);
  background:#fbfcfe;
  border:1px solid #dde3ec;border-radius:11px;
  padding:11px 14px;
  transition:border-color .18s,box-shadow .18s;
}
.afield input:focus{
  outline:none;
  border-color:var(--gold-deep);
  box-shadow:0 0 0 3px rgba(220,179,77,.18);
}
.afield ::placeholder{color:#a7b1c2;font-weight:300}

.afield--pw input{padding-right:44px}
.peek{
  position:absolute;right:5px;bottom:4px;
  width:34px;height:34px;
  display:grid;place-items:center;
  border-radius:10px;
  color:#8d9aae;
  transition:color .18s,background .18s;
}
.peek:hover{color:var(--ink);background:#f2f5fa}
.peek svg{width:19px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.peek .slash{display:none}
.peek.is-off .slash{display:block}

/* --- remember / forgot row --- */
.arow{
  display:flex;align-items:center;justify-content:space-between;gap:12px;
  margin:2px 0 14px;
}
.acheck{
  display:inline-flex;align-items:center;gap:8px;
  font-size:12.5px;font-weight:400;color:#6f7d92;
  cursor:pointer;
}
.acheck input{
  width:16px;height:16px;flex:none;
  accent-color:var(--gold-deep);
  cursor:pointer;
}
.acheck--terms{margin:2px 0 14px;align-items:flex-start;line-height:1.5}
.acheck--terms input{margin-top:2px}
.alink{
  font-size:12.5px;font-weight:500;color:var(--gold-ink);text-decoration:none;
  transition:color .18s;
}
.alink:hover{color:var(--navy)}

/* --- submit --- */
.auth-cta{
  width:100%;
  justify-content:center;
  font-weight:600;
  font-size:14px;
  padding:13px 24px;
}

/* --- swap line --- */
.aswap{
  margin-top:clamp(12px,1.6vw,18px);
  text-align:center;
  font-size:12.5px;font-weight:300;color:#6f7d92;
}
.aswap a{font-weight:600;color:var(--navy);text-decoration:none}
.aswap a:hover{color:var(--gold-ink)}

/* ---------- visual pane ---------- */
.auth-visual{
  display:none;
  position:relative;
  background:var(--navy);
  padding:clamp(32px,4vw,56px);
  overflow:hidden;
  isolation:isolate;
}
.auth-visual::before{
  content:"";position:absolute;inset:0;
  background:url("../assets/doodles.1ce69a2a9463.svg") repeat;
  background-size:150px 150px;
  opacity:.5;
  z-index:-1;
}
.auth-visual__ring{
  position:absolute;right:-70px;top:-70px;
  width:210px;aspect-ratio:1;
  border:1.6px dashed rgba(255,255,255,.22);border-radius:50%;
  animation:spin 30s linear infinite;
}

.auth-visual__quote{max-width:40ch}
.qmark{
  display:block;
  font-family:'Dancing Script',cursive;
  font-size:64px;line-height:.5;
  color:var(--gold);
  margin-bottom:18px;
}
.auth-visual__quote blockquote{
  font-size:clamp(15px,1.35vw,17.5px);font-weight:300;line-height:1.75;color:#e6ebf4;
}
.who{display:flex;align-items:center;gap:12px;margin-top:20px}
.who__avatar{
  width:42px;aspect-ratio:1;flex:none;
  border-radius:50%;
  background:radial-gradient(circle at 35% 30%,#f6e39d,var(--gold-deep));
  display:grid;place-items:center;
  font-size:13px;font-weight:700;color:var(--navy);
}
.who b{display:block;font-size:14.5px;font-weight:600;color:#fff;line-height:1.2}
.who small{display:block;font-size:12px;font-weight:300;color:#93a4c2;margin-top:2px}
.rating{
  margin-top:14px;
  font-size:12.5px;font-weight:300;color:#93a4c2;
}
.rating b{font-weight:600;color:#fff}
.rating .stars{color:var(--gold);letter-spacing:.06em}

/* the globe sits centred on its own stage below the quote, framed by a
   soft halo â€” contained and deliberate rather than cropped by the corner */
.auth-visual__stage{
  position:relative;
  flex:1;
  min-height:0;
  display:grid;place-items:center;
}
.auth-visual__halo{
  position:absolute;
  width:min(78%,360px);aspect-ratio:1;
  border-radius:50%;
  background:radial-gradient(circle,rgba(255,255,255,.07) 0%,rgba(255,255,255,0) 68%);
  box-shadow:inset 0 0 0 1.6px rgba(255,255,255,.08);
}
.auth-visual__halo::after{
  content:"";position:absolute;inset:-26px;
  border:1.6px dashed rgba(255,255,255,.16);border-radius:50%;
  animation:spin 40s linear infinite;
}
.auth-visual__art{
  width:min(56%,270px);
  filter:drop-shadow(0 26px 36px rgba(4,10,24,.5));
  animation:float 7s ease-in-out infinite;
}

/* ---------- >=900px: split view ---------- */
@media (min-width:900px){
  .auth-card{grid-template-columns:minmax(0,1fr) minmax(0,.92fr)}
  .auth-visual{display:flex;flex-direction:column;min-height:0}
  /* no mobile auto-zoom on desktop, so restore the refined field size */
  .afield input{font-size:13.5px}
}

/* tab pill links (Django auth pages use real links, not JS panes) */
.atabs a{flex:1;display:flex;align-items:center;justify-content:center;padding:9px 0;border-radius:40px;font-size:13.5px;font-weight:500;color:#6f7d92;text-decoration:none;transition:background .2s,color .2s,box-shadow .2s}
.atabs a:hover{color:var(--ink)}
.atabs a.is-on{background:var(--navy);color:#fff;box-shadow:0 8px 18px rgba(12,30,66,.3)}

/* field-level errors + non-field error box */
.afield__err{margin-top:5px;font-size:12px;color:#a12639}
.aerrors{background:#fbe7ea;color:#a12639;font-size:13px;line-height:1.5;border-radius:12px;padding:12px 16px;margin-bottom:14px}

/* slim single-column card for password reset / confirmation pages */
.auth-card--slim{grid-template-columns:1fr !important;width:min(460px,100%);height:auto;min-height:0}
.auth-card--slim .auth-pane{overflow:visible}
