/* ===================================================================
   auth.css — AccSource authentication design system.
   SOURCE OF TRUTH: "AccSource Prototype.html" (light theme + dark navy
   branding panel, Segoe UI, teal #19c39c). This SUPERSEDES the previous
   dark-glass system. Linked by every pre-login page via includes/auth_ui.php.

   Layouts:
     .shell  — two-panel (brand + form) for login / register / set-password
     .rcard  — centered result card (success / error / info / throttle pages)
     .pay    — full-width payment flow (top bar + steps + panels)
   =================================================================== */
:root{
  --bg-panel:#101a2e;   /* dark navy branding panel */
  --card:#ffffff;       /* white form card          */
  --ink:#16233b;        /* dark text on card         */
  --ink-soft:#5b6b84;   /* muted text                */
  --accent:#19c39c;     /* teal — buttons/accents    */
  --accent-dk:#12a583;
  --line:#e3e8f0;
  --chip-bg:rgba(255,255,255,.08);
  --chip-line:rgba(255,255,255,.18);
  /* alert palette */
  --err-bg:#fdecec;  --err-ink:#b3261e; --err-line:#f5c6c3;
  --ok-bg:rgba(25,195,156,.10);  --ok-ink:#0f7a62; --ok-line:rgba(25,195,156,.35);
  --warn-bg:#fff7e6; --warn-ink:#8a5a00; --warn-line:#ffe1a6;
  --info-bg:#eaf3ff; --info-ink:#1857a8; --info-line:#c3dbff;
}
*{margin:0;padding:0;box-sizing:border-box}
body{
  font-family:"Segoe UI",system-ui,-apple-system,Arial,sans-serif;
  background:#ffffff;color:#fff;
  min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;
}

/* ============ Two-panel shell (login / register / set-password) ============ */
.shell{
  display:grid;grid-template-columns:1.05fr .95fr;width:min(980px,100%);
  border-radius:22px;overflow:hidden;box-shadow:0 24px 60px rgba(16,26,46,.22);
  border:1px solid #eef1f6;background:var(--bg-panel);
}
.shell.register{grid-template-columns:.9fr 1.1fr;width:min(1080px,100%)}

.brand{
  padding:56px 48px;display:flex;flex-direction:column;justify-content:space-between;
  background:linear-gradient(160deg,rgba(25,195,156,.14) 0%,rgba(16,26,46,0) 45%),var(--bg-panel);
}
.brand img{width:180px;margin-bottom:40px}
.brand h1{font-size:2.35rem;line-height:1.15;font-weight:700;letter-spacing:-.5px}
.brand h1 span{color:var(--accent)}
.brand p.sub{margin-top:14px;font-size:1rem;line-height:1.6;color:#aebad0;max-width:38ch}
.chips{display:flex;flex-wrap:wrap;gap:10px;margin-top:26px}
.chip{font-size:.8rem;padding:7px 14px;border-radius:999px;background:var(--chip-bg);border:1px solid var(--chip-line);color:#dbe4f2}
.brand .foot{margin-top:48px;font-size:.78rem;color:#7285a3;display:flex;align-items:center;gap:8px}
.brand .foot svg{flex:none}

.formcard{background:var(--card);color:var(--ink);padding:52px 46px;display:flex;flex-direction:column;justify-content:center}
.formcard h2{font-size:1.55rem;font-weight:700;letter-spacing:-.3px}
.formcard p.lead{margin:6px 0 28px;color:var(--ink-soft);font-size:.93rem}
.shell.register .formcard{padding:44px 46px}
.shell.register .formcard h2{font-size:1.5rem}
.shell.register .formcard p.lead{margin-bottom:22px}

/* ============ Centered result card (success / error / info) ============ */
.rcard{
  width:min(480px,100%);border-radius:22px;overflow:hidden;text-align:center;color:var(--ink);
  box-shadow:0 24px 60px rgba(16,26,46,.22);border:1px solid #eef1f6;
}
.rcard .head{background:linear-gradient(160deg,rgba(25,195,156,.14) 0%,rgba(16,26,46,0) 55%),var(--bg-panel);padding:34px 20px 30px}
.rcard .head img{width:160px}
.rcard .body{padding:40px 44px 44px;background:#fff}
.rcard h1{font-size:1.45rem;letter-spacing:-.3px;margin-bottom:12px}
.rcard p.msg{font-size:.95rem;line-height:1.65;color:var(--ink-soft);max-width:36ch;margin:0 auto 28px}
.rcard .hint{margin-top:18px;font-size:.8rem;color:var(--ink-soft)}
.rcard .hint a{color:var(--accent-dk);font-weight:700;text-decoration:none}
.rcard .hint a:hover{text-decoration:underline}
.rcard .foot{border-top:1px solid var(--line);padding:14px;background:#fbfcfe;font-size:.75rem;color:var(--ink-soft);display:flex;align-items:center;justify-content:center;gap:7px}
.rcard .foot svg{flex:none}
.rcard .body form{text-align:left;margin-top:6px}

/* status icon (animated) */
.status{width:74px;height:74px;border-radius:50%;margin:0 auto 22px;display:flex;align-items:center;justify-content:center;animation:pop .45s cubic-bezier(.2,1.4,.4,1) both}
.status svg{display:block}
.status path,.status line{stroke-width:3.2;fill:none;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:40;stroke-dashoffset:40;animation:draw .5s .25s ease-out forwards}
.status.ok{background:rgba(25,195,156,.12)}    .status.ok path{stroke:var(--accent-dk)}
.status.err{background:rgba(179,38,30,.10)}     .status.err path,.status.err line{stroke:#b3261e}
.status.warn{background:#fff7e6}                .status.warn path,.status.warn line{stroke:#8a5a00}
@keyframes pop{from{transform:scale(.5);opacity:0}to{transform:scale(1);opacity:1}}
@keyframes draw{to{stroke-dashoffset:0}}

/* ============ Form controls (shared) ============ */
label{display:block;font-size:.83rem;font-weight:600;margin-bottom:6px;color:var(--ink)}
.label-row{display:flex;justify-content:space-between;align-items:baseline}
.field{margin-bottom:18px}
.shell.register .field{margin-bottom:16px}
.row{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.control{position:relative}
.control input,.control select{
  width:100%;padding:12px 14px;border:1.5px solid var(--line);border-radius:10px;
  font-size:.95rem;color:var(--ink);background:#fbfcfe;outline:none;font-family:inherit;
  transition:border-color .15s,box-shadow .15s;
}
.control select{appearance:none;background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%235b6b84' stroke-width='2' fill='none'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center}
.control input:focus,.control select:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(25,195,156,.18)}
.control select option{color:var(--ink)}
.toggle{position:absolute;right:10px;top:50%;transform:translateY(-50%);border:0;background:none;cursor:pointer;color:var(--ink-soft);font-size:.78rem;font-weight:600}
.forgot{font-size:.8rem;font-weight:600;color:var(--accent-dk);text-decoration:none}
.forgot:hover{text-decoration:underline}

/* the self-hosted captcha widget (captcha_script() supplies its own theme CSS);
   only ensure it sits with field rhythm inside the light card */
.field .cap-tc{margin:2px 0 0}

/* ============ Buttons ============ */
.btn{
  width:100%;padding:13px;border:0;border-radius:10px;cursor:pointer;font-family:inherit;
  background:linear-gradient(180deg,var(--accent),var(--accent-dk));
  color:#fff;font-size:1rem;font-weight:700;letter-spacing:.2px;
  transition:transform .08s,filter .15s;margin-top:6px;
  text-decoration:none;display:inline-block;text-align:center;
}
.btn:hover{filter:brightness(1.06)}
.btn:active{transform:translateY(1px)}
.btn-ghost{background:none;border:1.5px solid var(--line);color:var(--ink-soft);margin-top:10px}
.btn-ghost:hover{filter:none;border-color:#c6d2e2;color:var(--ink)}

/* ============ One alert component · 4 variants ============ */
.alert{padding:10px 14px;border-radius:10px;font-size:.85rem;margin-bottom:18px;text-align:left;display:flex;gap:8px;align-items:flex-start;line-height:1.45}
.alert svg{flex:none;margin-top:1px;fill:none}
.alert-error{background:var(--err-bg);color:var(--err-ink);border:1px solid var(--err-line)}
.alert-error svg{stroke:var(--err-ink)}
.alert-success{background:var(--ok-bg);color:var(--ok-ink);border:1px solid var(--ok-line)}
.alert-success svg{stroke:var(--ok-ink)}
.alert-warning{background:var(--warn-bg);color:var(--warn-ink);border:1px solid var(--warn-line)}
.alert-warning svg{stroke:var(--warn-ink)}
.alert-info{background:var(--info-bg);color:var(--info-ink);border:1px solid var(--info-line)}
.alert-info svg{stroke:var(--info-ink)}

/* ============ Secondary link row (Register / Login) ============ */
.altlink{margin-top:22px;text-align:center;font-size:.88rem;color:var(--ink-soft)}
.altlink a{color:var(--accent-dk);font-weight:700;text-decoration:none}
.altlink a:hover{text-decoration:underline}

/* ============ Payment flow (top bar + steps + panels) ============ */
body.pay{display:block;padding:0;align-items:stretch;justify-content:flex-start;background:#fff;color:var(--ink)}
.topbar{background:var(--bg-panel);padding:16px 32px;display:flex;align-items:center;justify-content:space-between}
.topbar img{height:34px}
.topbar .secure{font-size:.78rem;color:#7285a3;display:flex;align-items:center;gap:8px}
.topbar .secure svg{flex:none}
.paywrap{width:min(680px,100%);margin:0 auto;padding:40px 24px 64px}
.steps{display:flex;align-items:center;justify-content:center;gap:14px;margin-bottom:34px;font-size:.85rem}
.step{display:flex;align-items:center;gap:8px;color:var(--ink-soft);font-weight:600}
.step .dot{width:26px;height:26px;border-radius:50%;display:flex;align-items:center;justify-content:center;border:2px solid var(--line);font-size:.78rem;font-weight:700}
.step.done .dot{background:var(--accent);border-color:var(--accent);color:#fff}
.step.active{color:var(--ink)}
.step.active .dot{border-color:var(--accent);color:var(--accent-dk)}
.steps .bar{width:56px;height:2px;background:var(--line)}
.pay h1{text-align:center;font-size:1.6rem;letter-spacing:-.4px}
.pay p.lead{text-align:center;color:var(--ink-soft);margin:8px 0 28px;font-size:.95rem}
.panel{border:1.5px solid var(--line);border-radius:16px;padding:26px 28px;margin-bottom:20px}
.panel h2{font-size:1.1rem;margin-bottom:18px}
.summary .line{display:flex;justify-content:space-between;font-size:.92rem;padding:8px 0;color:#3d4d68}
.summary .line.total{border-top:1.5px solid var(--line);margin-top:10px;padding-top:14px;font-weight:800;font-size:1.08rem;color:var(--ink)}
.summary .plan-name{font-weight:700;color:var(--ink)}
.testtag{display:inline-block;font-size:.66rem;font-weight:800;letter-spacing:.11em;text-transform:uppercase;background:rgba(25,195,156,.14);color:var(--accent-dk);border-radius:999px;padding:3px 11px;margin-bottom:14px}
.pay-note{text-align:center;font-size:.78rem;color:var(--ink-soft);margin-top:14px;display:flex;align-items:center;justify-content:center;gap:6px}
.pay-note svg{flex:none}

/* ============ Responsive ============ */
@media (max-width:900px){
  .shell.register{grid-template-columns:1fr}
  .shell.register .brand{padding:40px 34px 30px}
  .shell.register .brand img{width:150px;margin-bottom:26px}
  .shell.register .brand h1{font-size:1.7rem}
  .shell.register .formcard{padding:36px 28px 42px}
  .row{grid-template-columns:1fr}
}
@media (max-width:820px){
  .shell{grid-template-columns:1fr}
  .brand{padding:40px 34px 30px}
  .brand img{width:150px;margin-bottom:26px}
  .brand h1{font-size:1.8rem}
  .brand .foot{margin-top:28px}
  .formcard{padding:38px 30px 44px}
}
@media (max-width:520px){
  .rcard .body{padding:34px 26px 38px}
  .topbar{padding:14px 20px}
}
@media (prefers-reduced-motion:reduce){
  *{transition:none!important}
  .status{animation:none}
  .status path,.status line{animation:none;stroke-dashoffset:0}
}
