/* ============================================================
   Shared layout for every standalone auth/account page (register,
   login, forgot/reset password, verify-email, account, projects).
   Built entirely from tokens.css's variables/classes — no second design
   system, just page-level layout + form-field patterns tokens.css
   doesn't itself define.
   ============================================================ */
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;font-family:var(--t-font-body);background:var(--t-bg);color:var(--t-ink);line-height:var(--t-lh-normal);min-height:100vh}
a{color:inherit}

.ap-topbar{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;max-width:1180px;margin:0 auto}
.ap-logo{font-family:var(--t-font-display);font-weight:700;font-size:18px;text-decoration:none;color:var(--t-ink)}
.ap-logo b{color:var(--t-accent)}

.ap-shell{min-height:calc(100vh - 68px);display:flex;align-items:center;justify-content:center;padding:24px 16px 60px}
.ap-card{width:100%;max-width:420px;padding:var(--t-sp-8) var(--t-sp-6)}
.ap-card.ap-card-wide{max-width:640px}
.ap-card h1{font-size:var(--t-fs-2xl)}
.ap-card .ap-sub{color:var(--t-sub);font-size:var(--t-fs-sm);margin-top:6px;margin-bottom:var(--t-sp-6)}

.ap-field{margin-bottom:var(--t-sp-4)}
.ap-field label{display:block;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;
  color:var(--t-muted);margin-bottom:6px}
.ap-field .ap-hint{font-size:12px;color:var(--t-muted);margin-top:5px}
.ap-field .ap-error{font-size:12.5px;color:var(--t-danger);margin-top:5px;display:flex;align-items:center;gap:5px}
.ap-field input.ap-invalid{border-color:var(--t-danger)}

.ap-banner{border-radius:var(--t-radius-md);padding:11px 14px;font-size:13.5px;margin-bottom:var(--t-sp-5);
  display:flex;align-items:flex-start;gap:9px;line-height:1.5}
.ap-banner-error{background:var(--t-danger-soft);color:var(--t-danger)}
.ap-banner-ok{background:var(--t-accent-soft);color:var(--t-accent-d)}
.ap-banner-info{background:var(--t-surface);color:var(--t-sub);border:1px solid var(--t-line)}

.ap-submit{width:100%;margin-top:var(--t-sp-2)}
.ap-foot{text-align:center;font-size:13.5px;color:var(--t-sub);margin-top:var(--t-sp-6)}
.ap-foot a{color:var(--t-accent);font-weight:600;text-decoration:none}
.ap-foot a:hover{text-decoration:underline}

.ap-divider{display:flex;align-items:center;gap:10px;margin:var(--t-sp-5) 0;color:var(--t-muted);font-size:12px}
.ap-divider::before,.ap-divider::after{content:'';flex:1;height:1px;background:var(--t-line)}

.ap-spinner{width:16px;height:16px;border-radius:50%;border:2px solid rgba(255,255,255,.4);
  border-top-color:#fff;display:inline-block;animation:apspin .7s linear infinite;vertical-align:-3px;margin-inline-end:7px}
@keyframes apspin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion: reduce){.ap-spinner{animation-duration:1.4s}}

@media (max-width:480px){
  .ap-card{padding:var(--t-sp-6) var(--t-sp-4)}
  .ap-topbar{padding:12px 14px}
}
