/* dflows.jsx — 穿山甲 VPN desktop · auth + account management (integrated dashboard) + redeem */ const { useState: useStateD } = React; const dCard = { background:'var(--surface)', border:'1px solid var(--border)', borderRadius:'var(--radius-xl)', boxShadow:'var(--shadow-sm)' }; const dInput = { border:'1.5px solid var(--border-strong)', borderRadius:'var(--radius-md)', padding:'11px 13px', fontFamily:'var(--font-sans)', fontSize:14, color:'var(--fg1)', background:'var(--bg)', outline:'none', width:'100%', boxSizing:'border-box' }; function DField({ label, children }) { return ; } /* ───────── AUTH — split panel, brand left / form right ───────── */ function DAuthFlow({ t, lang, dark, onDone }) { const [mode,setMode]=useStateD('login'); const [step,setStep]=useStateD(0); const [email,setEmail]=useStateD(''); const [code,setCode]=useStateD(''); const [pw,setPw]=useStateD(''); const [sent,setSent]=useStateD(false); const [totp,setTotp]=useStateD(false); // 2FA step after login (PRO) const [otp,setOtp]=useStateD(''); const valid=/\S+@\S+\.\S+/.test(email); const tab=(id,label)=>( ); const primary=(label,onClick,enabled)=>( ); return (