:root{--bg: #f3f7ff;--primary: #684efb;--primary-strong: #5d63f3;--primary-medium: #947afb;--primary-soft: #d4ccff;--primary-pale: #eee8ff;--primary-tint: #d7d1ff;--text: #202124;--text-regular: #333333;--text-secondary: #666666;--muted: #999999;--card: #ffffff;--danger: #ff5870;--ok: #16c79a;--gold: #ff8700;--border: #d2c6ff;--border-dashed: #eae6ff;--input-bg: #f3f8fc;--shadow: 0 2px 8px rgba(0, 0, 0, .06);--btn-gradient: linear-gradient(99.04deg, #9384ea 3.2%, #684efb 91.19%);--login-btn-gradient: linear-gradient(90deg, #80a3ff 0%, #9d91fd 100%);--radio-on: #6f5bf7;--radio-off: #c9c9d8;font-family:PingFang SC,Hiragino Sans GB,Noto Sans SC,Segoe UI,sans-serif;color:var(--text);background:var(--bg)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#app{margin:0;min-height:100%}body{background:var(--bg)}.app-shell{width:100%;max-width:430px;min-height:100vh;margin:0 auto;padding:0 0 env(safe-area-inset-bottom)}button,input{font:inherit}.page{padding:12px 16px 32px}.nav{display:flex;align-items:center;justify-content:space-between;height:48px;margin-bottom:8px}.nav h1{margin:0;font-size:17px;font-weight:700;color:var(--text)}.card{background:var(--card);border-radius:12px;padding:16px;box-shadow:var(--shadow);border:none}.btn{display:inline-flex;align-items:center;justify-content:center;width:100%;border:none;border-radius:16px;padding:14px 16px;font-size:16px;font-weight:700;cursor:pointer;transition:transform .15s ease,opacity .15s ease}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{color:#fff;background:var(--btn-gradient);box-shadow:0 8px 20px #684efb38}.btn-ghost{color:var(--primary);background:var(--primary-pale)}.muted{color:var(--muted);font-size:13px}.error{color:var(--danger);font-size:13px;margin-top:8px}.field{margin-top:14px}.field label{display:block;font-size:13px;color:var(--muted);margin-bottom:6px}.field input{width:100%;border:1px solid transparent;border-radius:14px;padding:12px 14px;outline:none;background:var(--input-bg);color:var(--text-regular)}.field input::placeholder{color:#bbb}.field input:focus{border-color:var(--primary-medium);box-shadow:0 0 0 3px #947afb2e}
