/* GAndroid webui auth — literal port for TokenPlan portal.
 * Source: GAndroid/.../gacore/webui/app.css (tokens + .gaLogo + Auth section).
 * Font: GA Azonix embedded as woff2 data URI (same as mobile app.css).
 * Scoped under body.auth-page so dashboard style.css is untouched.
 */
@font-face{
  font-family:'GA Azonix';
  src:url(data:font/woff2;base64,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) format('woff2');
  font-weight:400;font-style:normal;font-display:swap;
}

body.auth-page{
  color-scheme:light;
  /* Apple/OpenAI 极简高雅 — 墨黑单色 + 暖中性灰, 发丝级描边, 留白克制奢华 */
  --md-sys-color-primary:#1d1d1f; --md-sys-color-on-primary:#ffffff;
  --md-sys-color-primary-container:#e8e8ed; --md-sys-color-on-primary-container:#1d1d1f;
  --md-sys-color-secondary-container:#1d1d1f; --md-sys-color-on-secondary-container:#ffffff;
  --md-sys-color-surface:#ffffff; --md-sys-color-surface-container-lowest:#ffffff;   /* 浅色主屏=纯白(原 #f5f5f7 偏灰被反馈"不是白"); 卡片靠发丝描边分层 */
  --md-sys-color-surface-container-low:#fbfbfd; --md-sys-color-surface-container:#f2f2f4;
  --md-sys-color-surface-container-high:#ededf0; --md-sys-color-surface-container-highest:#e6e6ea;
  --md-sys-color-on-surface:#1d1d1f; --md-sys-color-on-surface-variant:#6e6e73;
  --md-sys-color-outline:#b8b8bd; --md-sys-color-outline-variant:#e6e6ea;
  --md-sys-color-error:#d70015; --md-sys-color-error-container:#fdeded; --md-sys-color-on-error-container:#a3000f;
  --md-sys-color-success:#2ba24e; --md-sys-color-warn:#b25e00;
  --sp-1:4px; --sp-2:8px; --sp-3:12px; --sp-4:16px; --sp-5:20px; --sp-6:24px;
  --r-xs:10px; --r-sm:14px; --r-md:18px; --r-lg:22px; --r-xl:28px; --r-full:999px;
  --elev-1:0 1px 2px rgba(0,0,0,.04); --elev-2:0 8px 30px rgba(0,0,0,.08);
  --elev-sheet:0 -8px 40px rgba(0,0,0,.16);
  --ring:rgba(0,0,0,.06); --kb:0px;
  --code-bg:#f5f5f7; --code-fg:#1d1d1f; --code-head:rgba(0,0,0,.035);
  --bg:var(--md-sys-color-surface); --surface:var(--md-sys-color-surface-container-lowest);
  --surface2:var(--md-sys-color-surface-container-high); --surface3:var(--md-sys-color-surface-container);
  --txt:var(--md-sys-color-on-surface); --txt2:var(--md-sys-color-on-surface-variant);
  --mut:var(--md-sys-color-outline); --icon:var(--md-sys-color-on-surface-variant);
  --line:var(--md-sys-color-outline-variant);
  --acc:var(--md-sys-color-primary); --onAcc:var(--md-sys-color-on-primary); --acc2:#48484a;
  --accSoft:var(--md-sys-color-primary-container); --accTxt:var(--md-sys-color-on-primary-container);
  --uBubble:var(--md-sys-color-secondary-container); --uTxt:var(--md-sys-color-on-secondary-container);
  --err:var(--md-sys-color-error); --errBg:var(--md-sys-color-error-container);
  --shadow:var(--elev-2); --codeBg:var(--code-bg);
  /* 起始页交互特效令牌(v2.23.1 定调: 背景=纯色, 氛围光幕/网格/噪点全撤; 波纹=中性墨色) + chips 玻璃底(深色双入口同步) */
  --fxRip:99,102,116;
  --chipBg:color-mix(in srgb,var(--surface) 82%,transparent);
  --chipEdge:linear-gradient(var(--line),var(--line));
}
body.auth-page[data-theme="dark"]{
  color-scheme:dark;
  --md-sys-color-primary:#f5f5f7; --md-sys-color-on-primary:#1d1d1f;
  --md-sys-color-primary-container:#2a2a2c; --md-sys-color-on-primary-container:#f5f5f7;
  --md-sys-color-secondary-container:#3a3a3c; --md-sys-color-on-secondary-container:#ffffff;
  --md-sys-color-surface:#0a0a0a; --md-sys-color-surface-container-lowest:#161616;
  --md-sys-color-surface-container-low:#171717; --md-sys-color-surface-container:#1f1f1f;
  --md-sys-color-surface-container-high:#262626; --md-sys-color-surface-container-highest:#2e2e2e;
  --md-sys-color-on-surface:#f5f5f7; --md-sys-color-on-surface-variant:#a1a1a6;
  --md-sys-color-outline:#48484a; --md-sys-color-outline-variant:#2c2c2e;
  --md-sys-color-error:#ff453a; --md-sys-color-error-container:#2a1513; --md-sys-color-on-error-container:#ffd5d0;
  --md-sys-color-success:#32d74b; --md-sys-color-warn:#ff9f0a;
  --ring:rgba(255,255,255,.09);
  --code-bg:#171717; --code-fg:#e6e6e6; --code-head:rgba(255,255,255,.05);
  --acc2:#c7c7cc; --elev-1:0 0 0 1px rgba(255,255,255,.04),0 1px 2px rgba(0,0,0,.5); --shadow:var(--elev-1); --elev-sheet:0 -8px 40px rgba(0,0,0,.6);
  --surface:var(--md-sys-color-surface-container-lowest);
  --fxRip:212,216,228;
  --chipEdge:linear-gradient(135deg,rgba(255,255,255,.26),var(--line) 30%,var(--line) 70%,rgba(255,255,255,.16));
}
@media (prefers-color-scheme:dark){body.auth-page:not([data-theme="light"]){
  color-scheme:dark;
  --md-sys-color-primary:#f5f5f7; --md-sys-color-on-primary:#1d1d1f;
  --md-sys-color-primary-container:#2a2a2c; --md-sys-color-on-primary-container:#f5f5f7;
  --md-sys-color-secondary-container:#3a3a3c; --md-sys-color-on-secondary-container:#ffffff;
  --md-sys-color-surface:#0a0a0a; --md-sys-color-surface-container-lowest:#161616;
  --md-sys-color-surface-container-low:#171717; --md-sys-color-surface-container:#1f1f1f;
  --md-sys-color-surface-container-high:#262626; --md-sys-color-surface-container-highest:#2e2e2e;
  --md-sys-color-on-surface:#f5f5f7; --md-sys-color-on-surface-variant:#a1a1a6;
  --md-sys-color-outline:#48484a; --md-sys-color-outline-variant:#2c2c2e;
  --md-sys-color-error:#ff453a; --md-sys-color-error-container:#2a1513; --md-sys-color-on-error-container:#ffd5d0;
  --md-sys-color-success:#32d74b; --md-sys-color-warn:#ff9f0a;
  --ring:rgba(255,255,255,.09);
  --code-bg:#171717; --code-fg:#e6e6e6; --code-head:rgba(255,255,255,.05);
  --acc2:#c7c7cc; --elev-1:0 0 0 1px rgba(255,255,255,.04),0 1px 2px rgba(0,0,0,.5); --shadow:var(--elev-1); --elev-sheet:0 -8px 40px rgba(0,0,0,.6);
  --surface:var(--md-sys-color-surface-container-lowest);
  --fxRip:212,216,228;
  --chipEdge:linear-gradient(135deg,rgba(255,255,255,.26),var(--line) 30%,var(--line) 70%,rgba(255,255,255,.16));
}}

/* Standalone page shell: mirror .authOverlay centering + dim */
body.auth-page{
  margin:0;min-height:100vh;
  font:16px/1.6 -apple-system,BlinkMacSystemFont,"SF Pro Text","HarmonyOS Sans","MiSans","PingFang SC",Roboto,sans-serif;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
  color:var(--txt);background:var(--bg);
}
body.auth-page *{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
body.auth-page button,body.auth-page input,body.auth-page textarea{font-family:inherit;touch-action:manipulation}
body.auth-page a{text-decoration:none}

body.auth-page .gaWordmark{font-family:'GA Azonix',-apple-system,BlinkMacSystemFont,sans-serif;letter-spacing:.08em;font-weight:400;text-transform:uppercase;line-height:1;color:var(--txt)}
body.auth-page .gaLogo{flex:none;width:30px;height:30px;border-radius:9px;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;padding-top:4px;
  font-family:'GA Azonix',-apple-system,BlinkMacSystemFont,sans-serif;font-size:12.5px;letter-spacing:.02em;font-weight:400;line-height:1;
  color:var(--bg);background:var(--txt);box-shadow:var(--elev-1)}

/* Auth */
body.auth-page .authOverlay{position:fixed;inset:0;z-index:9999;display:flex;align-items:center;justify-content:center;padding:22px;background:rgba(8,10,18,.62);backdrop-filter:blur(20px) saturate(1.2);-webkit-backdrop-filter:blur(20px) saturate(1.2)}
body.auth-page .authCard{width:min(400px,100%);border:1px solid var(--line);border-radius:28px;padding:28px 24px 22px;background:var(--surface);box-shadow:0 24px 80px rgba(0,0,0,.38),0 2px 8px rgba(0,0,0,.12);animation:authCardIn .42s cubic-bezier(.22,1,.36,1)}
@keyframes authCardIn{from{opacity:0;transform:translateY(14px) scale(.97)}to{opacity:1;transform:none}}
body.auth-page .authLogo{display:flex;justify-content:center;margin-bottom:18px}
body.auth-page .authLogo .gaLogo{width:48px;height:48px;border-radius:14px;font-size:20px;padding-top:7px}   /* 登录卡片 logo 放大(仅作用域, 不动全局/聊天头部 logo) */
body.auth-page .authTitle{font-size:25px;font-weight:800;letter-spacing:-.025em;line-height:1.15;text-align:center;margin-bottom:7px}
body.auth-page .authSub{color:var(--mut);font-size:14px;line-height:1.5;text-align:center;margin-bottom:22px;padding:0 6px}
body.auth-page .authField{display:flex;flex-direction:column;gap:9px;margin:14px 0}body.auth-page .authField label{font-size:13px;color:var(--mut);font-weight:600}
/* HTML hidden 属性不被 .authField{display:flex} 顶掉: 分段/方式切换(#fCode/#fPwd/#forgotRow)必须真隐藏 */
body.auth-page #fPwd[hidden],
body.auth-page #forgotRow[hidden],
body.auth-page #fCode[hidden]{display:none!important}
body.auth-page .authField input{height:50px;border:1px solid var(--line);border-radius:15px;padding:0 15px;background:var(--surface2);color:var(--txt);font-size:16px;outline:none;transition:border-color .18s,box-shadow .18s,background .18s;-webkit-appearance:none}
body.auth-page .authField input::placeholder{color:var(--mut);opacity:.7}
body.auth-page .authField input:focus{border-color:var(--txt);background:var(--surface);box-shadow:0 0 0 4px var(--md-sys-color-primary-container)}
/* 6 格 OTP 验证码 */
/* 内联验证码框: 输入框 + 框内右侧"发送验证码"蓝字(参考 Apple/微信/OpenAI) v1.7 */
body.auth-page .codeField{display:flex;align-items:center;height:50px;border:1px solid var(--line);border-radius:15px;padding:0 6px 0 15px;background:var(--surface2);transition:border-color .18s,box-shadow .18s,background .18s}
body.auth-page .codeField:focus-within{border-color:var(--txt);background:var(--surface);box-shadow:0 0 0 4px var(--md-sys-color-primary-container)}
body.auth-page .codeField input{flex:1;min-width:0;height:100%;border:none;background:transparent;color:var(--txt);font-size:16px;letter-spacing:.12em;outline:none;-webkit-appearance:none}
body.auth-page .codeField input::placeholder{color:var(--mut);opacity:.7;letter-spacing:normal}
body.auth-page .codeDiv{flex:none;width:1px;height:22px;background:var(--line);margin:0 4px 0 8px}
body.auth-page .codeSend{flex:none;border:none;background:transparent;color:var(--acc);font-size:14px;font-weight:600;white-space:nowrap;padding:0 10px;height:38px;border-radius:10px;cursor:pointer}
body.auth-page .codeSend:disabled{color:var(--mut);cursor:default;opacity:.85}
/* 按钮 loading 旋转动效(替换 '...'); .spin 继承按钮 currentColor 自动配色 */
body.auth-page .spin{display:inline-block;width:18px;height:18px;border:2px solid currentColor;border-top-color:transparent;border-radius:50%;animation:btnspin .6s linear infinite;transform-origin:50% 50%;vertical-align:middle}
body.auth-page .codeSend .spin{width:15px;height:15px}
@keyframes btnspin{to{transform:rotate(360deg)}}
body.auth-page .authBtn{display:block;width:100%;height:50px;border:none;border-radius:15px;padding:0 16px;background:var(--acc);color:var(--onAcc);font-weight:800;font-size:16px;cursor:pointer;transition:opacity .18s,transform .1s,filter .18s;-webkit-appearance:none}
body.auth-page .authBtn:not(:disabled):active{transform:scale(.985);filter:brightness(.94)}
body.auth-page .authBtn:disabled{opacity:.5;cursor:default}
body.auth-page .authBtn.secondary{background:var(--surface3);color:var(--txt)}
body.auth-page .authBtn.secondary:disabled{opacity:.6}
body.auth-page .authErr{min-height:0;margin-top:9px;color:var(--err,#ff5a5f);font-size:13px;text-align:center;line-height:1.4}
body.auth-page .authErr:empty{margin:0}   /* 空错误不占位, 收紧主按钮与下方文字链间距 */
body.auth-page .authHint{margin-top:14px;color:var(--mut);font-size:12px;line-height:1.5;text-align:center}
/* 登录(登录/注册分段 + 方式切换 + 忘记密码) + 注册资料(顶部居中头像) v1.6 */
body.auth-page .authOverlay:not(.on){display:none}   /* 不变量: .authOverlay 可见 ⟺ 有 .on; 缺此则空浮层全屏拦截点击致卡死(改密取消) */
body.authLocked{overflow:hidden}   /* 登录浮层期间锁背景滚动(模态行为); 与 showLoginOverlay 的 add/_onAuthOk 的 remove('authLocked') 配套 */
body.auth-page .authSeg{display:flex;gap:4px;margin:2px 0 18px;background:var(--surface2);border:1px solid var(--line);border-radius:14px;padding:4px}   /* iOS 风分段轨道 */
body.auth-page .authSeg .segBtn{flex:1;height:38px;border:none;border-radius:10px;background:transparent;color:var(--mut);font-size:15px;font-weight:700;cursor:pointer;transition:.16s;-webkit-appearance:none}
body.auth-page .authSeg .segBtn.on{background:var(--acc);color:var(--onAcc)}
body.auth-page .authForgot{text-align:right;margin:-6px 15px 16px}   /* 贴近密码框(上紧)、与登录按钮拉开(下松)、水平内距对齐输入框 15px(与邮箱一致) */
body.auth-page .authForgot a{color:var(--acc);font-size:13px;cursor:pointer;text-decoration:none}
body.auth-page .authTextLink{text-align:center;margin:8px 0 0}
body.auth-page .authTextLink a{color:var(--acc);font-size:14px;font-weight:600;cursor:pointer;text-decoration:none}
body.auth-page .pfAvatarTop{display:flex;flex-direction:column;align-items:center;gap:8px;margin:2px 0 16px}   /* 头像置顶居中, 点击更换 */
body.auth-page .pfAvatarTop .ring{position:relative;width:88px;height:88px;cursor:pointer}
body.auth-page .pfAvatarTop .ring .img{width:88px;height:88px;border-radius:50%;overflow:hidden;display:flex;align-items:center;justify-content:center;background:var(--surface2);border:1px solid var(--line);color:var(--mut)}
body.auth-page .pfAvatarTop .ring .img img{width:100%;height:100%;object-fit:cover}
body.auth-page .pfAvatarTop .ring .cam{position:absolute;right:-2px;bottom:-2px;width:30px;height:30px;border-radius:50%;background:var(--acc);color:var(--onAcc);display:flex;align-items:center;justify-content:center;border:2px solid var(--surface)}
body.auth-page .pfAvatarTop .pfCap{font-size:13px;color:var(--mut)}


/* Portal-only: language toggle (mobile has no lang chip on auth card) */
body.auth-page .auth-lang{
  position:absolute;top:14px;right:14px;z-index:2;
  border:none;background:transparent;color:var(--mut);
  font-size:12.5px;font-weight:600;padding:6px 8px;cursor:pointer;border-radius:10px;
}
body.auth-page .auth-lang:hover{color:var(--txt);background:var(--surface2)}
/* Portal forms: neutralize dashboard .form label/input defaults inside authCard */
body.auth-page .authCard form{margin:0}
body.auth-page .authCard label.authVisuallyHidden,
body.auth-page .authCard .authVisuallyHidden{
  position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;
  clip:rect(0,0,0,0);white-space:nowrap;border:0;
}
/* Keep alert using mobile authErr look when classed as both */
body.auth-page .authErr.alert,body.auth-page .alert.authErr{color:var(--err,#ff5a5f)}
/* Portal: authCard hosts absolute lang chip */
body.auth-page .authCard{position:relative}
/* Register page: Login|Register track uses <a>/<span> with .segBtn */
body.auth-page .authSeg a.segBtn,body.auth-page .authSeg span.segBtn{
  display:inline-flex;align-items:center;justify-content:center;text-decoration:none;
  box-sizing:border-box;
}
body.auth-page a.authBtn{box-sizing:border-box}
/* Autofill paint — portal forms (mobile WebView rarely hits this) */
body.auth-page .authField input:-webkit-autofill,
body.auth-page .authField input:-webkit-autofill:hover,
body.auth-page .authField input:-webkit-autofill:focus{
  -webkit-text-fill-color:var(--txt)!important;
  box-shadow:0 0 0 1000px var(--surface2) inset!important;
  caret-color:var(--txt);
}
body.auth-page .codeField input:-webkit-autofill,
body.auth-page .codeField input:-webkit-autofill:hover,
body.auth-page .codeField input:-webkit-autofill:focus{
  box-shadow:0 0 0 1000px transparent inset!important;
}
